From ddf5b39fe854c3593e172fd6e82ffba1994ba5d1 Mon Sep 17 00:00:00 2001 From: Ladislav Hano Date: Sun, 6 Oct 2024 12:59:27 +0200 Subject: [PATCH] feat: change how key works --- tenorv2/src/tenor_builder.rs | 50 +++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/tenorv2/src/tenor_builder.rs b/tenorv2/src/tenor_builder.rs index ad0e425..acca832 100644 --- a/tenorv2/src/tenor_builder.rs +++ b/tenorv2/src/tenor_builder.rs @@ -1,9 +1,10 @@ +use std::collections::HashSet; +use std::env; + +use dotenv::dotenv; use json::JsonValue; -use std::collections::HashSet; - use crate::tenor_types::TenorError; - use crate::tenor_types::{ContentFilter, ArRange, MediaFilter}; pub struct Tenor { @@ -34,22 +35,30 @@ pub struct Tenor { /// Use a non-zero, non-empty value from next, returned by the API response, to get the next set of results pos: Option, /// Tenor api key to be used in queries - key: Option + key: String } impl Tenor { - pub fn new() -> Self { - Tenor { - country: None, - locale: None, - contentfilter: None, - media_filter: None, - ar_range: None, - random: None, - limit: None, - pos: None, - key: None - } + pub fn new() -> Result { + dotenv().ok(); + let key = match env::var("TENORV2_TOKEN") { + Ok(key) => key, + Err(_) => return Err(TenorError::KeyError("Could not find TENORV2_TOKEN".to_string())) + }; + + Ok( + Tenor { + country: None, + locale: None, + contentfilter: None, + media_filter: None, + ar_range: None, + random: None, + limit: None, + pos: None, + key + } + ) } /// Replaces current country with the passed one @@ -117,20 +126,15 @@ impl Tenor { } pub fn key(mut self, key: String) -> Self { - self.key = Some(key); + self.key = key; self } pub async fn search(self, query: &str) -> Result { let q: String = form_urlencoded::byte_serialize(query.as_bytes()).collect(); - let base_url = "https://tenor.googleapis.com/v2/search?"; - let api_key = match self.key { - Some(key) => key, - None => return Err(TenorError::KeyError("API key undefined".into())) - }; - let mut request = format!("{base_url}q={q}&key={api_key}"); + let mut request = format!("{}q={}&key={}", base_url, q, self.key); if self.country.is_some() { request.push_str(&format!("&country={}", self.country.unwrap()));