81 lines
1.8 KiB
Markdown
81 lines
1.8 KiB
Markdown
# cohost.js
|
|
|
|
Unofficial API for cohost.org
|
|
|
|
## Install
|
|
|
|
```bash
|
|
npm i cohost
|
|
```
|
|
|
|
## Usage
|
|
|
|
```js
|
|
const cohost = require("cohost");
|
|
|
|
(async function () {
|
|
// Create User and authenticate
|
|
let user = new cohost.User();
|
|
await user.login("YOUR_EMAIL", "YOUR_PASSWORD");
|
|
|
|
// Get first Project of user
|
|
let [project] = await user.getProjects();
|
|
|
|
// Create Post
|
|
await cohost.Post.create(project, {
|
|
postState: 1,
|
|
headline: "hello world from cohost.js",
|
|
adultContent: false,
|
|
blocks: [],
|
|
cws: [],
|
|
tags: []
|
|
});
|
|
|
|
// Get Posts of Project
|
|
let posts = await project.getPosts();
|
|
|
|
// Create a draft with attachments
|
|
|
|
// 1. Create a draft
|
|
const draftId = await cohost.Post.create(myProject, basePost);
|
|
|
|
// 2. Upload the attachment
|
|
const attachmentData = await myProject.uploadAttachment(
|
|
draftId,
|
|
path.resolve(__dirname, "./02-15_One_pr.png")
|
|
);
|
|
|
|
// 3. Add the attachment block to the draft and publish it
|
|
await cohost.Post.update(myProject, draftId, {
|
|
...basePost,
|
|
postState: 1,
|
|
blocks: [
|
|
...basePost.blocks,
|
|
{ type: "attachment", attachment: { ...attachmentData } }
|
|
]
|
|
});
|
|
})();
|
|
```
|
|
|
|
## Features
|
|
|
|
Works:
|
|
|
|
- Logging in
|
|
- Getting the posts of a project
|
|
- Creating a post
|
|
|
|
Doesn't work:
|
|
|
|
- Editing a post: possible, haven't done it
|
|
- Sharing a post: possible, haven't done it
|
|
- Liking a post: possible, haven't done it
|
|
- Getting notifications: possible, haven't done it
|
|
- Getting the home feed: possible, haven't done it
|
|
- Editing profiles: possible, haven't done it
|
|
- Getting followers and following: possible, haven't done it
|
|
- Getting bookmarks and bookmarking: possible, haven't done it
|
|
- Getting a post by its ID: **seems impossible? endpoint seems to be disabled**
|
|
- Getting posts from a tag: haven''t checked
|
|
- ...everything else
|