use oauth2::{
basic::{
BasicClient,
BasicTokenType,
},
StandardTokenResponse,
EmptyExtraTokenFields,
ClientId,
ClientSecret,
AuthUrl,
TokenUrl,
RedirectUrl,
};
use crate::{
Result,
EnvironmentVariable,
};
mod listener;
use listener::listen;
pub const AUTH_URL: &str = "https://www.dailymotion.com/oauth/authorize";
pub const TOKEN_URL: &str = "https://api.dailymotion.com/oauth/token";
pub fn get(oauth_client: &BasicClient) -> Result<StandardTokenResponse<EmptyExtraTokenFields, BasicTokenType>> {
listen("localhost:8080", oauth_client)
}
pub fn get_using_env() -> Result<StandardTokenResponse<EmptyExtraTokenFields, BasicTokenType>> {
let client = BasicClient::new(
ClientId::new(EnvironmentVariable::DailymotionClientId.get_value()?),
Some(ClientSecret::new(EnvironmentVariable::DailymotionClientSecret.get_value()?)),
AuthUrl::new(AUTH_URL.to_owned()).unwrap(), Some(TokenUrl::new(TOKEN_URL.to_owned()).unwrap()), )
.set_redirect_uri(
RedirectUrl::new(String::from("http://localhost:8080"))
.expect("Invalid redirect URL")
);
get(&client)
}