medium/ts/medium.classes.mediumaccount.ts
2020-11-16 03:15:49 +00:00

44 lines
1.1 KiB
TypeScript

import { MediumPublication } from './medium.classes.publication';
import * as plugins from './medium.plugins';
/**
*
*/
export class MediumAccount {
public baseApiDomain = 'https://api.medium.com/v1';
private accessToken: string;
constructor(accessTokenArg: string) {
this.accessToken = accessTokenArg;
}
public async getUserInfo(): Promise<{
id: string,
username: string,
name: string,
url: string,
imageUrl: string
}> {
const result = await this.request('/me', 'GET');
return result.body.data;
}
public async getPublications(): Promise<MediumPublication[]> {
return MediumPublication.getPublications(this);
}
public async request(routeArg: string, methodArg: string, payloadArg?: any) {
const response = await plugins.smartrequest.request(`${this.baseApiDomain}${routeArg}`, {
headers: {
Authorization: `Bearer ${this.accessToken}`,
'Content-Type': 'application/json',
Accept: 'application/json',
'Accept-Charset': 'utf-8',
},
method: methodArg,
requestBody: payloadArg ? JSON.stringify(payloadArg) : null
});
return response;
}
}