123 lines
2.2 KiB
TypeScript
123 lines
2.2 KiB
TypeScript
/**
|
|
* 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;
|