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 { 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; } }