44 lines
1.1 KiB
TypeScript
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;
|
||
|
}
|
||
|
}
|