Examples
Getting a public timeline
The example below shows how to get the 40 most recent status from the public timeline of the umbracocommunity.social server.
By the default the API will return statuses from all Mastodon servers, but the Local = true
will ensure that only statuses from the umbracocommunity.social server are returned.
@using Skybrud.Social.Mastodon
@using Skybrud.Social.Mastodon.Options.Timeline
@using Skybrud.Social.Mastodon.Responses.Statuses
@{
// Initialize a new HTTP service (basically the API wrapper)
MastodonHttpService mastodon = MastodonHttpService.CreateFromDomain("umbracocommunity.social");
// Initialize the options for the request to the API
MastodonGetPublicTimelineOptions options = new() {
Limit = 40,
Local = true
};
// Make the request to the API
MastodonStatusListResponse response = await mastodon
.Timelines
.GetPublicTimelineAsync(options);
// Iterate through the first 40 statuses
foreach (var status in response.Body) {
<pre>@status.Account.DisplayName - @status.Content</pre>
}
}
Getting a hashtag timeline
The example below shows how to get the 40 most recent status from the #Umbraco hashtag.
Although this example uses the umbracocommunity.social, the returned status may also come from other Mastodon servers. To only return local statuses, you can add Local = true
to the options.
@using Skybrud.Social.Mastodon
@using Skybrud.Social.Mastodon.Options.Timeline
@using Skybrud.Social.Mastodon.Responses.Statuses
@{
// Initialize a new HTTP service (basically the API wrapper)
MastodonHttpService mastodon = MastodonHttpService.CreateFromDomain("umbracocommunity.social");
// Initialize the options for the request to the API
MastodonGetHashtagTimelineOptions options = new() {
Hashtag = "umbraco",
Limit = 40,
//Local = true
};
// Make the request to the API
MastodonStatusListResponse response = await mastodon
.Timelines
.GetHashtagTimelineAsync(options);
// Iterate through the first 40 statuses
foreach (var status in response.Body) {
<pre>@status.CreatedAt - @status.Account.DisplayName - @status.Content</pre>
}
}
Posting a new status
The example below creates a new MastodonHttpService
instance from an access token, and then attempts to post two new statuses where the second is a reply to the first:
@using Skybrud.Social.Mastodon
@using Skybrud.Social.Mastodon.Exceptions
@using Skybrud.Social.Mastodon.Models.Statuses
@using Skybrud.Social.Mastodon.Options.Statuses
@using Skybrud.Social.Mastodon.Responses.Statuses
@{
// Initialize a new HTTP service (basically the API wrapper)
MastodonHttpService mastodon = MastodonHttpService
.CreateFromAccessToken("umbracocommunity.social", "Your access token");
<h3>First</h3>
MastodonStatus first;
try {
MastodonStatusResponse response = await mastodon.Statuses.PostStatusAsync(new MastodonPostStatusOptions {
Status = "Hello world! #test"
});
first = response.Body;
<pre>@first.JObject</pre>
} catch (MastodonHttpException ex) {
<pre>@ex</pre>
<pre>@ex.Error</pre>
<pre>@ex.Response.Body</pre>
return;
} catch (Exception ex) {
<pre>@ex</pre>
return;
}
<h3>Second</h3>
try {
MastodonStatusResponse response = await mastodon.Statuses.PostStatusAsync(new MastodonPostStatusOptions {
Status = "Hej verden! #test",
InReplyTo = first.Id
});
var second = response.Body;
<pre>@second.JObject</pre>
} catch (MastodonHttpException ex) {
<pre>@ex</pre>
<pre>@ex.Error</pre>
<pre>@ex.Response.Body</pre>
return;
} catch (Exception ex) {
<pre>@ex</pre>
return;
}
}