1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
use anyhow::Result;
use crate::Client;
pub struct Hidden {
pub client: Client,
}
impl Hidden {
#[doc(hidden)]
pub fn new(client: Client) -> Self {
Hidden { client }
}
/**
* Start an OAuth 2.0 Device Authorization Grant.
*
* This function performs a `POST` to the `/device/auth` endpoint.
*
* This endpoint is designed to be accessed from an *unauthenticated* API client. It generates and records a `device_code` and `user_code` which must be verified and confirmed prior to a token being granted.
*/
pub async fn device_auth_request(&self) -> Result<()> {
let url = "/device/auth".to_string();
self.client.post(&url, None).await
}
/**
* Confirm an OAuth 2.0 Device Authorization Grant.
*
* This function performs a `POST` to the `/device/confirm` endpoint.
*
* This endpoint is designed to be accessed by the user agent (browser), not the client requesting the token. So we do not actually return the token here; it will be returned in response to the poll on `/device/token`.
*/
pub async fn device_auth_confirm(&self, body: &crate::types::DeviceAuthVerify) -> Result<()> {
let url = "/device/confirm".to_string();
self.client
.post(&url, Some(reqwest::Body::from(serde_json::to_vec(body)?)))
.await
}
/**
* Request a device access token.
*
* This function performs a `POST` to the `/device/token` endpoint.
*
* This endpoint should be polled by the client until the user code is verified and the grant is confirmed.
*/
pub async fn device_access_token(&self) -> Result<()> {
let url = "/device/token".to_string();
self.client.post(&url, None).await
}
/**
* This function performs a `POST` to the `/login` endpoint.
*/
pub async fn spoof_login(&self, body: &crate::types::SpoofLoginBody) -> Result<()> {
let url = "/login".to_string();
self.client
.post(&url, Some(reqwest::Body::from(serde_json::to_vec(body)?)))
.await
}
/**
* This function performs a `POST` to the `/logout` endpoint.
*/
pub async fn logout(&self) -> Result<()> {
let url = "/logout".to_string();
self.client.post(&url, None).await
}
/**
* Fetch the user associated with the current session.
*
* This function performs a `GET` to the `/session/me` endpoint.
*/
pub async fn session_me(&self) -> Result<crate::types::User> {
let url = "/session/me".to_string();
self.client.get(&url, None).await
}
}