1use super::TwapiError;
3
4pub async fn request_token(
7 consumer_key: &str,
8 consumer_secret: &str,
9 oauth_callback: &str,
10 x_auth_access_type: Option<&str>,
11) -> Result<(String, String, String), TwapiError> {
12 let map = twapi_reqwest::oauth::request_token(
13 consumer_key,
14 consumer_secret,
15 oauth_callback,
16 x_auth_access_type,
17 )
18 .await?;
19 let oauth_token = match map.get("oauth_token") {
20 Some(oauth_token) => oauth_token,
21 None => {
22 return Err(TwapiError::NotExists);
23 }
24 };
25 let oauth_token_secret = match map.get("oauth_token_secret") {
26 Some(oauth_token_secret) => oauth_token_secret,
27 None => {
28 return Err(TwapiError::NotExists);
29 }
30 };
31 let uri = format!(
32 "http://api.twitter.com/oauth/authorize?oauth_token={}",
33 oauth_token
34 );
35
36 Ok((oauth_token.to_string(), oauth_token_secret.to_string(), uri))
37}
38
39pub async fn access_token(
42 consumer_key: &str,
43 consumer_secret: &str,
44 oauth_token: &str,
45 oauth_token_secret: &str,
46 oauth_verifier: &str,
47) -> Result<(String, String, String, String), TwapiError> {
48 let map = twapi_reqwest::oauth::access_token(
49 consumer_key,
50 consumer_secret,
51 oauth_token,
52 oauth_token_secret,
53 oauth_verifier,
54 )
55 .await?;
56 let oauth_token = match map.get("oauth_token") {
57 Some(oauth_token) => oauth_token,
58 None => {
59 return Err(TwapiError::NotExists);
60 }
61 };
62 let oauth_token_secret = match map.get("oauth_token_secret") {
63 Some(oauth_token) => oauth_token,
64 None => {
65 return Err(TwapiError::NotExists);
66 }
67 };
68 let user_id = match map.get("user_id") {
69 Some(oauth_token) => oauth_token,
70 None => {
71 return Err(TwapiError::NotExists);
72 }
73 };
74 let screen_name = match map.get("screen_name") {
75 Some(oauth_token) => oauth_token,
76 None => {
77 return Err(TwapiError::NotExists);
78 }
79 };
80 Ok((oauth_token.to_string(), oauth_token_secret.to_string(), user_id.to_string(), screen_name.to_string()))
81}