109 lines
2.3 KiB
TypeScript
109 lines
2.3 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
|