Skip to content

Async Mastodon API Client for node - forked from node-mastodon - which was forked from twit

License

Notifications You must be signed in to change notification settings

skullzarmy/Tusk

 
 

Repository files navigation

Tusk-Mastodon

Mastodon API Client for node - forked from node-mastodon [abandoned]

Source on GitHub | Documentation

Notes

  • I forked this project and fixed the obvious issues / updated the packages, and replaced request with axios.
  • I added tests using Bun.sh runtime and test environment.
  • Introduced individual HTTP methods (get, post, put, etc.) alongside the generic request method.

If you find any bugs please open an issue and I will handle it as soon as I can. Thanks!

npm

Run Tests

Known Vulnerabilities

maintained with hearth by skullzarmy

Installing

npm install tusk-mastodon

Usage:

var Tusk = require("tusk-mastodon");

var T = new Tusk({
    access_token: "...",
    timeout_ms: 60 * 1000, // optional HTTP request timeout to apply to all requests.
    api_url: "https://mastodon.social/api/v1/", // optional, defaults to https://mastodon.social/api/v1/
});

Tusk API:

var T = new Tusk(config)

Create a Tusk instance that can be used to make requests to Mastodon's APIs. Only supports oauth2 access tokens (no username/password auth) for security reasons.

I advise that you use the oauth package to get the user's access_token. More information about how to do that is on the node-mastodon wiki.
You'll need to register your app on Mastodon first as well.

If authenticating with user context, config should be an object of the form:

{
  access_token: '...'
}

T.get(path, [params], callback)

GET any of the REST API endpoints.

path

The endpoint to hit.

params

(Optional) parameters for the request.

callback

function (err, data, response)

  • data is the parsed data received from Mastodon.
  • response is the http.IncomingMessage received from Mastodon.

T.post(path, [params], callback)

POST any of the REST API endpoints. Same usage as T.get().

T.getAuth()

Get the client's authentication tokens.

T.setAuth(tokens)

Update the client's authentication tokens.

Tests

  1. Install Bun
curl -fsSL https://bun.sh/install | bash # for macOS, Linux, and WSL
  1. Run Tests
bun test

Examples

Reading the home timeline

T.get("timelines/home", {}).then((resp) => console.log(resp.data));

Upload an image and attach it to a toot

var id;
T.post("media", { file: fs.createReadStream("path/to/image.png") }).then((resp) => {
    id = resp.data.id;
    T.post("statuses", { status: "#selfie", media_ids: [id] });
});

About

Async Mastodon API Client for node - forked from node-mastodon - which was forked from twit

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%