fix(core): update
This commit is contained in:
parent
05349ba947
commit
fd0dc50d3b
@ -22,6 +22,7 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@pushrocks/qenv": "^4.0.10",
|
"@pushrocks/qenv": "^4.0.10",
|
||||||
|
"@pushrocks/smartpromise": "^3.1.3",
|
||||||
"@pushrocks/smartrequest": "^1.1.51"
|
"@pushrocks/smartrequest": "^1.1.51"
|
||||||
},
|
},
|
||||||
"browserslist": [
|
"browserslist": [
|
||||||
|
12
test/test.ts
12
test/test.ts
@ -12,7 +12,17 @@ tap.test('first test', async () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
tap.test('should get me info', async () => {
|
tap.test('should get me info', async () => {
|
||||||
const result = await testMediumAccount.getUserInfo();
|
const result = await testMediumAccount.getAccountInfo();
|
||||||
|
// console.log(result);
|
||||||
|
});
|
||||||
|
|
||||||
|
tap.test('should get publications', async () => {
|
||||||
|
const result = await testMediumAccount.getPublications();
|
||||||
|
// console.log(result);
|
||||||
|
});
|
||||||
|
|
||||||
|
tap.test('should get own publications', async () => {
|
||||||
|
const result = await testMediumAccount.getOwnPublications();
|
||||||
// console.log(result);
|
// console.log(result);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -1,33 +1,52 @@
|
|||||||
import { MediumPublication } from './medium.classes.publication';
|
import { MediumPublication } from './medium.classes.publication';
|
||||||
import * as plugins from './medium.plugins';
|
import * as plugins from './medium.plugins';
|
||||||
|
|
||||||
|
export interface IMediumAccountData {
|
||||||
|
id: string;
|
||||||
|
username: string;
|
||||||
|
url: string;
|
||||||
|
imageUrl: string;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
export class MediumAccount {
|
export class MediumAccount implements IMediumAccountData {
|
||||||
public baseApiDomain = 'https://api.medium.com/v1';
|
// STATIC
|
||||||
|
|
||||||
|
// INSTANCE
|
||||||
private accessToken: string;
|
private accessToken: string;
|
||||||
|
public readyDeferred = plugins.smartpromise.defer();
|
||||||
|
public baseApiDomain = 'https://api.medium.com/v1';
|
||||||
|
|
||||||
|
id: string;
|
||||||
|
username: string;
|
||||||
|
url: string;
|
||||||
|
imageUrl: string;
|
||||||
|
|
||||||
constructor(accessTokenArg: string) {
|
constructor(accessTokenArg: string) {
|
||||||
this.accessToken = accessTokenArg;
|
this.accessToken = accessTokenArg;
|
||||||
|
this.getAccountInfo().then((dataArg) => {
|
||||||
|
Object.assign(this, dataArg);
|
||||||
|
this.readyDeferred.resolve();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public async getUserInfo(): Promise<{
|
public async getAccountInfo(): Promise<IMediumAccountData> {
|
||||||
id: string,
|
|
||||||
username: string,
|
|
||||||
name: string,
|
|
||||||
url: string,
|
|
||||||
imageUrl: string
|
|
||||||
}> {
|
|
||||||
const result = await this.request('/me', 'GET');
|
const result = await this.request('/me', 'GET');
|
||||||
return result.body.data;
|
const accountData = result.body.data;
|
||||||
|
return accountData;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async getPublications(): Promise<MediumPublication[]> {
|
public async getPublications(): Promise<MediumPublication[]> {
|
||||||
return MediumPublication.getPublications(this);
|
return MediumPublication.getAllPublications(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async request(routeArg: string, methodArg: string, payloadArg?: any) {
|
public async getOwnPublications(): Promise<MediumPublication[]> {
|
||||||
|
return MediumPublication.getOwnPublications(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async request(routeArg: string, methodArg: 'POST' | 'GET', payloadArg?: any) {
|
||||||
const response = await plugins.smartrequest.request(`${this.baseApiDomain}${routeArg}`, {
|
const response = await plugins.smartrequest.request(`${this.baseApiDomain}${routeArg}`, {
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${this.accessToken}`,
|
Authorization: `Bearer ${this.accessToken}`,
|
||||||
|
@ -1,9 +1,62 @@
|
|||||||
import { MediumAccount } from './medium.classes.mediumaccount';
|
import { MediumAccount } from './medium.classes.mediumaccount';
|
||||||
import * as plugins from './medium.plugins';
|
import * as plugins from './medium.plugins';
|
||||||
|
|
||||||
export class MediumPublication {
|
export interface IMediumPublication {
|
||||||
public static getPublications(mediumAccount: MediumAccount) {
|
id: string;
|
||||||
|
name: string;
|
||||||
|
description: string;
|
||||||
|
url: string;
|
||||||
|
imageUrl: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export class MediumPublication implements IMediumPublication {
|
||||||
|
// STATIC
|
||||||
|
public static async getAllPublications(mediumAccount: MediumAccount) {
|
||||||
|
await mediumAccount.readyDeferred.promise;
|
||||||
const returnArray: MediumPublication[] = [];
|
const returnArray: MediumPublication[] = [];
|
||||||
|
const response = await mediumAccount.request(`/users/${mediumAccount.id}/publications`, 'GET');
|
||||||
|
const publicationsDataArray: IMediumPublication[] = response.body.data;
|
||||||
|
for (const publicationData of publicationsDataArray) {
|
||||||
|
const publication = new MediumPublication(mediumAccount, publicationData);
|
||||||
|
returnArray.push(publication);
|
||||||
|
}
|
||||||
return returnArray;
|
return returnArray;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
public static async getOwnPublications(mediumAccount: MediumAccount) {
|
||||||
|
await mediumAccount.readyDeferred.promise;
|
||||||
|
const allPublications = await this.getAllPublications(mediumAccount);
|
||||||
|
const ownPublications: MediumPublication[] = [];
|
||||||
|
for (const publicationArg of allPublications) {
|
||||||
|
const response = await mediumAccount.request(
|
||||||
|
`/publications/${publicationArg.id}/contributors`,
|
||||||
|
'GET'
|
||||||
|
);
|
||||||
|
const contributors: {
|
||||||
|
publicationId: string;
|
||||||
|
userId: string;
|
||||||
|
role: string;
|
||||||
|
}[] = response.body.data;
|
||||||
|
for (const contributor of contributors) {
|
||||||
|
if (contributor.userId === mediumAccount.id) {
|
||||||
|
ownPublications.push(publicationArg);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ownPublications;
|
||||||
|
}
|
||||||
|
|
||||||
|
// INSTANCE
|
||||||
|
public mediumAccountRef: MediumAccount;
|
||||||
|
|
||||||
|
id: string;
|
||||||
|
name: string;
|
||||||
|
description: string;
|
||||||
|
url: string;
|
||||||
|
imageUrl: string;
|
||||||
|
|
||||||
|
constructor(mediumAccount: MediumAccount, dataArg: IMediumPublication) {
|
||||||
|
Object.assign(this, dataArg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
|
import * as smartpromise from '@pushrocks/smartpromise';
|
||||||
import * as smartrequest from '@pushrocks/smartrequest';
|
import * as smartrequest from '@pushrocks/smartrequest';
|
||||||
|
|
||||||
export {
|
export {
|
||||||
|
smartpromise,
|
||||||
smartrequest
|
smartrequest
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user