yamachu / Mastodot

C# Library for Mastodon API. Easy Toot!
MIT License
26 stars 5 forks source link
csharp csharp-library mastodon mastodon-apis

Mastodot - Mastodon API library for C# (.NET)

NuGetBadge

日本語はこちら

Sample code

See example

Sample code contains how to generate tokens, toot, and subscribe stream.

Regist an app to Mastodon Instance


var registeredApp = await ApplicationManager.RegistApp("Host name" /* ex: mastodon.cloud */, "Your Application Name", Scope.Read | Scope.Write | Scope.Follow);

registeredApp contains ClienID and ClientSecret.

Login and get AccessToken


// if login by email
var tokens = ApplicationManager.GetAccessTokenByEmail(registeredApp, "Email", "Password");

// if login by use OAuth
var url = ApplicationManager.GetOAuthUrl(registeredApp);
// access this url via browser, HttpClient, ...
var tokens = await ApplicationManager.GetAccessTokenByCode(registeredApp, "Code that Browser shows");

tokens contains AccessToken. You can access Mastodon API by using this AccessToken.

Using Mastodon API

This code is how to Toot.


var client = new MastodonClient("Host name (url)", tokens.AccessToken);
client.PostNewStatus(status: "Hello Mastodon!");
// With media
var attachment = await client.UploadMedia("File Path");
client.PostNewStatus("Look my cuuuuute dog!", mediaIds: new int[]{attachment.Id});

and Using StreamAPI


var publicStream = client.GetObservablePublicTimeline()
                    .OfType<Status>()
                    .Subscribe(x => Console.WriteLine($"{x.Account.FullUserName} Tooted: {x.Content}"));

MastodonAPIs

Mastodon APIs

All APIs is ready

Accounts

Apps

Blocks

Favourites

Follow Requests

Follows

Instances

Media

Mutes

Notifications

Reports

Search

Statuses

Timelines

Streaming

License

MIT

Other

Welcode pull requests!

For developer

For support multi target frameworks, Mastodot.csproj is not supported format.

When edit and debug this library, replace <TargetFrameworks>netstandard1.1;netstandard1.3</TargetFrameworks> to <TargetFramework>netstandard1.1</TargetFramework> or <TargetFramework>netstandard1.1</TargetFramework>