forked from syuilo/Twitch
-
Notifications
You must be signed in to change notification settings - Fork 0
/
TwitterContext.cs
148 lines (136 loc) · 4.94 KB
/
TwitterContext.cs
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
using System.Threading.Tasks;
using System.Collections.Specialized;
using Twitch.Twitter.APIs.REST;
namespace Twitch
{
/// <summary>
/// アプリケーションの ConsumerKey, ConsumerSecret、
/// ユーザーの AccessToken, AccessTokenSecret を格納するクラスです。
/// </summary>
public class TwitterContext
{
/// <summary>
/// TwitterContextを初期化します。
/// </summary>
/// <param name="consumerKey">アプリケーションの ConsumerKey</param>
/// <param name="consumerSecret">アプリケーションの ConsumerSecret</param>
/// <param name="accessToken">ユーザーの AccessToken</param>
/// <param name="accessTokenSecret">ユーザーの AccessTokenSecret</param>
public TwitterContext(
string consumerKey,
string consumerSecret,
string accessToken,
string accessTokenSecret)
{
this.ConsumerKey = consumerKey;
this.ConsumerSecret = consumerSecret;
this.AccessToken = accessToken;
this.AccessTokenSecret = accessTokenSecret;
}
/// <summary>
/// TwitterContextを初期化します。
/// </summary>
/// <param name="consumerKey">アプリケーションの ConsumerKey</param>
/// <param name="consumerSecret">アプリケーションの ConsumerSecret</param>
public TwitterContext(
string consumerKey,
string consumerSecret)
{
this.ConsumerKey = consumerKey;
this.ConsumerSecret = consumerSecret;
}
/// <summary>
/// TwitterContextを初期化します。
/// </summary>
/// <param name="twitterContext">TwitterContext</param>
public TwitterContext(
TwitterContext twitterContext)
{
this.ConsumerKey = twitterContext.ConsumerKey;
this.ConsumerSecret = twitterContext.ConsumerSecret;
this.AccessToken = twitterContext.AccessToken;
this.AccessTokenSecret = twitterContext.AccessTokenSecret;
}
/// <summary>
/// アプリケーションの ConsumerKey を取得または設定します。
/// </summary>
public string ConsumerKey
{
get;
set;
}
/// <summary>
/// アプリケーションの ConsumerSecret を取得または設定します。
/// </summary>
public string ConsumerSecret
{
get;
set;
}
/// <summary>
/// ユーザーの AccessToken を取得または設定します。
/// </summary>
public string AccessToken
{
get;
set;
}
/// <summary>
/// ユーザーの AccessTokenSecret を取得または設定します。
/// </summary>
public string AccessTokenSecret
{
get;
set;
}
/// <summary>
/// このTwitterContextで、リクエストを送信します。
/// </summary>
/// <param name="method"></param>
/// <param name="url"></param>
/// <param name="parameter"></param>
/// <returns>レスポンス</returns>
public async Task<string> Reuqest(
Twitter.API.Methods method, System.Uri url, StringDictionary parameter = null)
{
return await new HTTP.Twitter.TwitterRequest(
this, method, url, parameter).Request();
}
/// <summary>
/// 指定ユーザーをフォローします。
/// </summary>
/// <param name="id">フォローするユーザーのid</param>
/// <returns>成功したかどうか</returns>
public async Task<bool> Follow(string id)
{
return await Friendships.Create(this, id: id) != null;
}
/// <summary>
/// 指定ユーザーのフォローを解除します。
/// </summary>
/// <param name="id">フォローを解除するユーザーのid</param>
/// <returns>成功したかどうか</returns>
public async Task<bool> Remove(string id)
{
return await Friendships.Destory(this, id: id) != null;
}
/// <summary>
/// 指定ユーザーのフォローを逆転します。
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public async Task<bool> Reverse(string id)
{
return await Friendships.Destory(this, id: id) != null;
}
/// <summary>
/// このTwitterContextからツイートを行います。
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public async Task<bool> Tweet(string status)
{
return await Statuses.Update(this, status) != null;
}
}
}