-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathProgram.cs
More file actions
61 lines (52 loc) · 2.02 KB
/
Program.cs
File metadata and controls
61 lines (52 loc) · 2.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
using System;
using Mastodot;
using Mastodot.Enums;
using Mastodot.Utils;
using Mastodot.Entities;
using System.Reactive.Linq;
namespace example
{
class Program
{
static void Main(string[] args)
{
var main = new Program();
/* Create and get AccessToken to connect Mastodon Instance */
main.CreateAppAndAuth();
/* Toot! */
//main.LetsToot("Hello World! From Mastodot");
/* Subscribe timeline */
//main.SubscribePublicstream();
}
private void LetsToot(string content)
{
var client = new MastodonClient("Mastodon Instance Url that your app registered"
, "AccessToken");
client.PostNewStatus(status: content).Wait();
}
private void CreateAppAndAuth(string host = "mastodon.cloud", string appName = "MastodotSampleClient")
{
var app = ApplicationManager.RegistApp(host, appName, Scope.Read | Scope.Write | Scope.Follow).Result;
var url = ApplicationManager.GetOAuthUrl(app);
Console.WriteLine(url);
var code = Console.ReadLine();
var tokens = ApplicationManager.GetAccessTokenByCode(app, code).Result;
Console.WriteLine(tokens.AccessToken);
Console.ReadKey();
Console.WriteLine("Finish");
Console.ReadKey();
}
private void SubscribePublicstream()
{
var client = new MastodonClient("Mastodon Instance Url that your app registered"
, "AccessToken");
var statusDs = client.GetObservablePublicTimeline()
.OfType<Status>()
.Subscribe(x => Console.WriteLine($"{x.Account.FullUserName} Tooted: {x.Content}"));
Console.WriteLine("Press Key then Finish");
Console.ReadKey();
statusDs.Dispose();
Console.WriteLine("Finish");
}
}
}