medium/ts/medium.classes.post.ts

36 lines
1.1 KiB
TypeScript

import { MediumPublication } from './medium.classes.publication.js';
import * as plugins from './medium.plugins.js';
export interface IPostData {
title: string;
contentFormat: 'html' | 'markdown';
content: string;
canonicalUrl: string;
tags: string[];
publishStatus: 'public' | 'draft' | 'unlisted';
}
export class MediumPost implements IPostData {
// STATIC
public static async createPost(mediumPublication: MediumPublication, data: IPostData): Promise<MediumPost> {
const response = await mediumPublication.mediumAccountRef.request(`/publications/${mediumPublication.id}/posts`, 'POST', data);
const post = new MediumPost(mediumPublication, response.data);
return post;
}
// INSTANCE
mediumPublicationRef: MediumPublication;
title: string;
contentFormat: 'html' | 'markdown';
content: string;
canonicalUrl: string;
tags: string[];
publishStatus: 'public' | 'draft' | 'unlisted';
constructor(mediumPublication: MediumPublication, data: IPostData) {
this.mediumPublicationRef = mediumPublication;
Object.assign(this, data);
}
}