iceshrimp/packages/backend/src/server/api/mastodon/entities/oauth/oauth.ts
2023-10-14 13:55:03 +02:00

90 lines
1.9 KiB
TypeScript

/**
* OAuth
* Response data when oauth request.
**/
namespace OAuth {
export type Application = {
id: string;
name: string;
website: string | null;
redirect_uri: string;
vapid_key: string | undefined;
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 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;