}
[Fact]
+ public async Task DirectMessagesRecv_Test()
+ {
+ using (var twitterApi = new TwitterApi())
+ {
+ var mock = new Mock<IApiConnection>();
+ mock.Setup(x =>
+ x.GetAsync<TwitterDirectMessage[]>(
+ new Uri("direct_messages.json", UriKind.Relative),
+ new Dictionary<string, string> {
+ { "full_text", "true" },
+ { "include_entities", "true" },
+ { "include_ext_alt_text", "true" },
+ { "count", "200" },
+ { "max_id", "900" },
+ { "since_id", "100" },
+ },
+ "/direct_messages")
+ )
+ .ReturnsAsync(new TwitterDirectMessage[0]);
+
+ twitterApi.apiConnection = mock.Object;
+
+ await twitterApi.DirectMessagesRecv(count: 200, maxId: 900L, sinceId: 100L)
+ .ConfigureAwait(false);
+
+ mock.VerifyAll();
+ }
+ }
+
+ [Fact]
+ public async Task DirectMessagesSent_Test()
+ {
+ using (var twitterApi = new TwitterApi())
+ {
+ var mock = new Mock<IApiConnection>();
+ mock.Setup(x =>
+ x.GetAsync<TwitterDirectMessage[]>(
+ new Uri("direct_messages/sent.json", UriKind.Relative),
+ new Dictionary<string, string> {
+ { "full_text", "true" },
+ { "include_entities", "true" },
+ { "include_ext_alt_text", "true" },
+ { "count", "200" },
+ { "max_id", "900" },
+ { "since_id", "100" },
+ },
+ "/direct_messages/sent")
+ )
+ .ReturnsAsync(new TwitterDirectMessage[0]);
+
+ twitterApi.apiConnection = mock.Object;
+
+ await twitterApi.DirectMessagesSent(count: 200, maxId: 900L, sinceId: 100L)
+ .ConfigureAwait(false);
+
+ mock.VerifyAll();
+ }
+ }
+
+ [Fact]
public async Task DirectMessagesNew_Test()
{
using (var twitterApi = new TwitterApi())
return this.apiConnection.GetAsync<TwitterStatus[]>(endpoint, param, "/lists/statuses");
}
+ public Task<TwitterDirectMessage[]> DirectMessagesRecv(int? count = null, long? maxId = null, long? sinceId = null)
+ {
+ var endpoint = new Uri("direct_messages.json", UriKind.Relative);
+ var param = new Dictionary<string, string>
+ {
+ ["full_text"] = "true",
+ ["include_entities"] = "true",
+ ["include_ext_alt_text"] = "true",
+ };
+
+ if (count != null)
+ param["count"] = count.ToString();
+ if (maxId != null)
+ param["max_id"] = maxId.ToString();
+ if (sinceId != null)
+ param["since_id"] = sinceId.ToString();
+
+ return this.apiConnection.GetAsync<TwitterDirectMessage[]>(endpoint, param, "/direct_messages");
+ }
+
+ public Task<TwitterDirectMessage[]> DirectMessagesSent(int? count = null, long? maxId = null, long? sinceId = null)
+ {
+ var endpoint = new Uri("direct_messages/sent.json", UriKind.Relative);
+ var param = new Dictionary<string, string>
+ {
+ ["full_text"] = "true",
+ ["include_entities"] = "true",
+ ["include_ext_alt_text"] = "true",
+ };
+
+ if (count != null)
+ param["count"] = count.ToString();
+ if (maxId != null)
+ param["max_id"] = maxId.ToString();
+ if (sinceId != null)
+ param["since_id"] = sinceId.ToString();
+
+ return this.apiConnection.GetAsync<TwitterDirectMessage[]>(endpoint, param, "/direct_messages/sent");
+ }
+
public Task<LazyJson<TwitterDirectMessage>> DirectMessagesNew(string status, string sendTo)
{
var endpoint = new Uri("direct_messages/new.json", UriKind.Relative);
this.Initialize("", "", "", 0);
}
- public HttpStatusCode DirectMessages(int? count, long? max_id, long? since_id, ref string content)
- {
- Dictionary<string, string> param = new Dictionary<string, string>();
- if (count != null)
- param.Add("count", count.ToString());
- if (max_id != null)
- param.Add("max_id", max_id.ToString());
- if (since_id != null)
- param.Add("since_id", since_id.ToString());
- param.Add("full_text", "true");
- param.Add("include_entities", "true");
- param.Add("include_ext_alt_text", "true");
-
- return httpCon.GetContent(GetMethod,
- this.CreateTwitterUri("/1.1/direct_messages.json"),
- param,
- ref content,
- this.CreateRatelimitHeadersDict(),
- this.CreateApiCalllback("/direct_messages"));
- }
-
- public HttpStatusCode DirectMessagesSent(int? count, long? max_id, long? since_id, ref string content)
- {
- Dictionary<string, string> param = new Dictionary<string, string>();
- if (count != null)
- param.Add("count", count.ToString());
- if (max_id != null)
- param.Add("max_id", max_id.ToString());
- if (since_id != null)
- param.Add("since_id", since_id.ToString());
- param.Add("full_text", "true");
- param.Add("include_entities", "true");
- param.Add("include_ext_alt_text", "true");
-
- return httpCon.GetContent(GetMethod,
- this.CreateTwitterUri("/1.1/direct_messages/sent.json"),
- param,
- ref content,
- this.CreateRatelimitHeadersDict(),
- this.CreateApiCalllback("/direct_messages/sent"));
- }
-
public HttpStatusCode Favorites(int? count, ref string content)
{
Dictionary<string, string> param = new Dictionary<string, string>();
catch (WebApiException ex)
{
this._myStatusError = true;
- this.StatusLabel.Text = ex.Message;
+ this.StatusLabel.Text = $"Err:{ex.Message}(GetDirectMessage)";
}
finally
{
p.Report(string.Format(Properties.Resources.GetTimelineWorker_RunWorkerCompletedText8, loadMore ? -1 : 1));
- await Task.Run(() =>
+ await Task.Run(async () =>
{
- this.tw.GetDirectMessageApi(read, MyCommon.WORKERTYPE.DirectMessegeRcv, loadMore);
- this.tw.GetDirectMessageApi(read, MyCommon.WORKERTYPE.DirectMessegeSnt, loadMore);
+ await this.tw.GetDirectMessageApi(read, MyCommon.WORKERTYPE.DirectMessegeRcv, loadMore)
+ .ConfigureAwait(false);
+ await this.tw.GetDirectMessageApi(read, MyCommon.WORKERTYPE.DirectMessegeSnt, loadMore)
+ .ConfigureAwait(false);
this._statuses.DistributePosts();
});
tab.OldestId = minimumId.Value;
}
- private void CreateDirectMessagesFromJson(string content, MyCommon.WORKERTYPE gType, bool read)
+ private void CreateDirectMessagesFromJson(TwitterDirectMessage[] item, MyCommon.WORKERTYPE gType, bool read)
{
- TwitterDirectMessage[] item;
- try
- {
- if (gType == MyCommon.WORKERTYPE.UserStream)
- {
- item = new[] { TwitterStreamEventDirectMessage.ParseJson(content).DirectMessage };
- }
- else
- {
- item = TwitterDirectMessage.ParseJsonArray(content);
- }
- }
- catch(SerializationException ex)
- {
- MyCommon.TraceOut(ex.Message + Environment.NewLine + content);
- throw new WebApiException("Json Parse Error(DataContractJsonSerializer)", content, ex);
- }
- catch(Exception ex)
- {
- MyCommon.TraceOut(ex, MethodBase.GetCurrentMethod().Name + " " + content);
- throw new WebApiException("Invalid Json!", content, ex);
- }
-
foreach (var message in item)
{
var post = new PostClass();
}
catch(Exception ex)
{
- MyCommon.TraceOut(ex, MethodBase.GetCurrentMethod().Name + " " + content);
+ MyCommon.TraceOut(ex, MethodBase.GetCurrentMethod().Name);
MessageBox.Show("Parse Error(CreateDirectMessagesFromJson)");
continue;
}
}
}
- public void GetDirectMessageApi(bool read,
- MyCommon.WORKERTYPE gType,
- bool more)
+ public async Task GetDirectMessageApi(bool read, MyCommon.WORKERTYPE gType, bool more)
{
this.CheckAccountState();
this.CheckAccessLevel(TwitterApiAccessLevel.ReadWriteAndDirectMessage);
- HttpStatusCode res;
- var content = "";
var count = GetApiResultCount(gType, more, false);
- try
+ TwitterDirectMessage[] messages;
+ if (gType == MyCommon.WORKERTYPE.DirectMessegeRcv)
{
- if (gType == MyCommon.WORKERTYPE.DirectMessegeRcv)
+ if (more)
{
- if (more)
- {
- res = twCon.DirectMessages(count, minDirectmessage, null, ref content);
- }
- else
- {
- res = twCon.DirectMessages(count, null, null, ref content);
- }
+ messages = await this.Api.DirectMessagesRecv(count, maxId: this.minDirectmessage)
+ .ConfigureAwait(false);
}
else
{
- if (more)
- {
- res = twCon.DirectMessagesSent(count, minDirectmessageSent, null, ref content);
- }
- else
- {
- res = twCon.DirectMessagesSent(count, null, null, ref content);
- }
+ messages = await this.Api.DirectMessagesRecv(count)
+ .ConfigureAwait(false);
}
}
- catch(Exception ex)
+ else
{
- throw new WebApiException("Err:" + ex.Message, ex);
+ if (more)
+ {
+ messages = await this.Api.DirectMessagesSent(count, maxId: this.minDirectmessageSent)
+ .ConfigureAwait(false);
+ }
+ else
+ {
+ messages = await this.Api.DirectMessagesSent(count)
+ .ConfigureAwait(false);
+ }
}
- this.CheckStatusCode(res, content);
-
- CreateDirectMessagesFromJson(content, gType, read);
+ CreateDirectMessagesFromJson(messages, gType, read);
}
public void GetFavoritesApi(bool read,
if (isDm)
{
- CreateDirectMessagesFromJson(line, MyCommon.WORKERTYPE.UserStream, false);
+ try
+ {
+ var message = TwitterStreamEventDirectMessage.ParseJson(line).DirectMessage;
+ this.CreateDirectMessagesFromJson(new[] { message }, MyCommon.WORKERTYPE.UserStream, false);
+ }
+ catch (SerializationException ex)
+ {
+ throw TwitterApiException.CreateFromException(ex, line);
+ }
}
else
{