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
use std::time::SystemTime; /// Authentication method. /// The Glimesh API requires an authentication method to be used. /// The most basic is the ClientId method, which gives you read only access to the api. #[derive(Debug)] pub enum Auth { /// Use Client-ID authentication. /// When using this method, you can only 'read' from the API. ClientId(String), /// Use Bearer authentication. /// The supplied access token is assumed to be valid. /// If you would like the client to handle token refreshing, use AccessTokenWithRefresh instead. AccessToken(String), /// Use Bearer authentication. /// This will use the provided refresh token to refresh the access token when/if it expires. /// /// If `expires_at` is supplied, the client will preemptively refresh the token when nearing expiry. /// If it is None, then the client will only refresh when the API returns an authentication error. AccessTokenWithRefresh { /// Glimesh access token access_token: String, /// Glimesh refresh token refresh_token: String, /// Time the glimesh access token expires. Optional. expires_at: Option<SystemTime>, }, } impl Auth { /// Use Client-ID authentication. /// When using this method, you can only 'read' from the API. pub fn client_id(client_id: impl Into<String>) -> Self { Self::ClientId(client_id.into()) } /// Use Bearer authentication. /// The supplied access token is assumed to be valid. /// If you would like the client to handle token refreshing, use AccessTokenWithRefresh instead. pub fn access_token(access_token: impl Into<String>) -> Self { Self::AccessToken(access_token.into()) } }