/** * OAuth * Response data when oauth request. **/ namespace OAuth { export type AppDataFromServer = { id: string; name: string; website: string | null; redirect_uri: string; client_id: string; client_secret: string; }; export type TokenDataFromServer = { access_token: string; token_type: string; scope: string; created_at: number; expires_in: number | null; refresh_token: string | null; }; export class AppData { public url: string | null; public session_token: string | null; constructor( public id: string, public name: string, public website: string | null, public redirect_uri: string, public client_id: string, public client_secret: string, ) { this.url = null; this.session_token = null; } /** * Serialize raw application data from server * @param raw from server */ static from(raw: AppDataFromServer) { return new this( raw.id, raw.name, raw.website, raw.redirect_uri, raw.client_id, raw.client_secret, ); } get redirectUri() { return this.redirect_uri; } get clientId() { return this.client_id; } get clientSecret() { return this.client_secret; } } export class TokenData { public _scope: string; constructor( public access_token: string, public token_type: string, scope: string, public created_at: number, public expires_in: number | null = null, public refresh_token: string | null = null, ) { this._scope = scope; } /** * Serialize raw token data from server * @param raw from server */ static from(raw: TokenDataFromServer) { return new this( raw.access_token, raw.token_type, raw.scope, raw.created_at, raw.expires_in, raw.refresh_token, ); } /** * OAuth Aceess Token */ get accessToken() { return this.access_token; } get tokenType() { return this.token_type; } get scope() { return this._scope; } /** * Application ID */ get createdAt() { return this.created_at; } get expiresIn() { return this.expires_in; } /** * OAuth Refresh Token */ get refreshToken() { return this.refresh_token; } } } export default OAuth;