From: Kimura Youichi Date: Mon, 26 Sep 2016 11:49:08 +0000 (+0900) Subject: Twitter.PostStatusメソッドにattachmentUrl引数を追加 X-Git-Tag: OpenTween_v1.4.1~2^2~10 X-Git-Url: http://git.osdn.net/view?p=opentween%2Fopen-tween.git;a=commitdiff_plain;h=341fbe1772dc0e19f58b251edf77944e4b746400 Twitter.PostStatusメソッドにattachmentUrl引数を追加 --- diff --git a/OpenTween.Tests/Api/TwitterApiTest.cs b/OpenTween.Tests/Api/TwitterApiTest.cs index 6c507681..5a49f42e 100644 --- a/OpenTween.Tests/Api/TwitterApiTest.cs +++ b/OpenTween.Tests/Api/TwitterApiTest.cs @@ -223,6 +223,7 @@ namespace OpenTween.Api { "media_ids", "10,20" }, { "auto_populate_reply_metadata", "true" }, { "exclude_reply_user_ids", "100,200" }, + { "attachment_url", "https://twitter.com/twitterapi/status/22634515958" }, }) ) .ReturnsAsync(LazyJson.Create(new TwitterStatus())); @@ -230,7 +231,8 @@ namespace OpenTween.Api twitterApi.apiConnection = mock.Object; await twitterApi.StatusesUpdate("hogehoge", replyToId: 100L, mediaIds: new[] { 10L, 20L }, - autoPopulateReplyMetadata: true, excludeReplyUserIds: new[] { 100L, 200L }) + autoPopulateReplyMetadata: true, excludeReplyUserIds: new[] { 100L, 200L }, + attachmentUrl: "https://twitter.com/twitterapi/status/22634515958") .IgnoreResponse() .ConfigureAwait(false); diff --git a/OpenTween/Api/TwitterApi.cs b/OpenTween/Api/TwitterApi.cs index 9d2130af..c4baee3b 100644 --- a/OpenTween/Api/TwitterApi.cs +++ b/OpenTween/Api/TwitterApi.cs @@ -127,7 +127,7 @@ namespace OpenTween.Api } public Task> StatusesUpdate(string status, long? replyToId, IReadOnlyList mediaIds, - bool? autoPopulateReplyMetadata = null, IReadOnlyList excludeReplyUserIds = null) + bool? autoPopulateReplyMetadata = null, IReadOnlyList excludeReplyUserIds = null, string attachmentUrl = null) { var endpoint = new Uri("statuses/update.json", UriKind.Relative); var param = new Dictionary @@ -146,6 +146,8 @@ namespace OpenTween.Api param["auto_populate_reply_metadata"] = autoPopulateReplyMetadata.Value ? "true" : "false"; if (excludeReplyUserIds != null && excludeReplyUserIds.Count > 0) param["exclude_reply_user_ids"] = string.Join(",", excludeReplyUserIds); + if (attachmentUrl != null) + param["attachment_url"] = attachmentUrl; return this.apiConnection.PostLazyAsync(endpoint, param); } diff --git a/OpenTween/Connection/IMediaUploadService.cs b/OpenTween/Connection/IMediaUploadService.cs index f06b71fe..11f2565c 100644 --- a/OpenTween/Connection/IMediaUploadService.cs +++ b/OpenTween/Connection/IMediaUploadService.cs @@ -73,7 +73,7 @@ namespace OpenTween.Connection /// メディアのアップロードとツイートの投稿を行います /// /// - Task PostStatusAsync(string text, long? inReplyToStatusId, IMediaItem[] mediaItems, long[] excludeReplyUserIds); + Task PostStatusAsync(string text, long? inReplyToStatusId, IMediaItem[] mediaItems, long[] excludeReplyUserIds, string attachmentUrl); /// /// 画像URLのために確保する必要のある文字数を返します diff --git a/OpenTween/Connection/Imgur.cs b/OpenTween/Connection/Imgur.cs index 5568c108..32c173d7 100644 --- a/OpenTween/Connection/Imgur.cs +++ b/OpenTween/Connection/Imgur.cs @@ -98,7 +98,8 @@ namespace OpenTween.Connection return MaxFileSize; } - public async Task PostStatusAsync(string text, long? inReplyToStatusId, IMediaItem[] mediaItems, long[] excludeReplyUserIds) + public async Task PostStatusAsync(string text, long? inReplyToStatusId, IMediaItem[] mediaItems, + long[] excludeReplyUserIds, string attachmentUrl) { if (mediaItems == null) throw new ArgumentNullException(nameof(mediaItems)); @@ -138,7 +139,7 @@ namespace OpenTween.Connection var textWithImageUrl = text + " " + imageUrl.Trim(); - await this.twitter.PostStatus(textWithImageUrl, inReplyToStatusId, excludeReplyUserIds: excludeReplyUserIds) + await this.twitter.PostStatus(textWithImageUrl, inReplyToStatusId, excludeReplyUserIds: excludeReplyUserIds, attachmentUrl: attachmentUrl) .ConfigureAwait(false); } diff --git a/OpenTween/Connection/Mobypicture.cs b/OpenTween/Connection/Mobypicture.cs index 694527ed..e8df2411 100644 --- a/OpenTween/Connection/Mobypicture.cs +++ b/OpenTween/Connection/Mobypicture.cs @@ -122,7 +122,8 @@ namespace OpenTween.Connection return MaxFileSize; } - public async Task PostStatusAsync(string text, long? inReplyToStatusId, IMediaItem[] mediaItems, long[] excludeReplyUserIds) + public async Task PostStatusAsync(string text, long? inReplyToStatusId, IMediaItem[] mediaItems, + long[] excludeReplyUserIds, string attachmentUrl) { if (mediaItems == null) throw new ArgumentNullException(nameof(mediaItems)); @@ -147,7 +148,7 @@ namespace OpenTween.Connection var textWithImageUrl = text + " " + imageUrlElm.Value.Trim(); - await this.twitter.PostStatus(textWithImageUrl, inReplyToStatusId, excludeReplyUserIds: excludeReplyUserIds) + await this.twitter.PostStatus(textWithImageUrl, inReplyToStatusId, excludeReplyUserIds: excludeReplyUserIds, attachmentUrl: attachmentUrl) .ConfigureAwait(false); } diff --git a/OpenTween/Connection/TwitterPhoto.cs b/OpenTween/Connection/TwitterPhoto.cs index e2416d5c..41715c37 100644 --- a/OpenTween/Connection/TwitterPhoto.cs +++ b/OpenTween/Connection/TwitterPhoto.cs @@ -78,7 +78,8 @@ namespace OpenTween.Connection return this.twitterConfig.PhotoSizeLimit; } - public async Task PostStatusAsync(string text, long? inReplyToStatusId, IMediaItem[] mediaItems, long[] excludeReplyUserIds) + public async Task PostStatusAsync(string text, long? inReplyToStatusId, IMediaItem[] mediaItems, + long[] excludeReplyUserIds, string attachmentUrl) { if (mediaItems == null) throw new ArgumentNullException(nameof(mediaItems)); @@ -101,7 +102,7 @@ namespace OpenTween.Connection var mediaIds = await Task.WhenAll(uploadTasks) .ConfigureAwait(false); - await this.tw.PostStatus(text, inReplyToStatusId, mediaIds, excludeReplyUserIds) + await this.tw.PostStatus(text, inReplyToStatusId, mediaIds, excludeReplyUserIds, attachmentUrl) .ConfigureAwait(false); } diff --git a/OpenTween/Tween.cs b/OpenTween/Tween.cs index 6ca46518..54913a8a 100644 --- a/OpenTween/Tween.cs +++ b/OpenTween/Tween.cs @@ -319,6 +319,7 @@ namespace OpenTween public long? inReplyToId = null; public string inReplyToName = null; public long[] excludeReplyUserIds = null; + public string attachmentUrl = null; public string imageService = ""; //画像投稿サービス名 public IMediaItem[] mediaItems = null; public PostingStatus() @@ -2763,13 +2764,13 @@ namespace OpenTween { if (status.mediaItems == null || status.mediaItems.Length == 0) { - await this.tw.PostStatus(status.status, status.inReplyToId, excludeReplyUserIds: status.excludeReplyUserIds) + await this.tw.PostStatus(status.status, status.inReplyToId, excludeReplyUserIds: status.excludeReplyUserIds, attachmentUrl: status.attachmentUrl) .ConfigureAwait(false); } else { var service = ImageSelector.GetService(status.imageService); - await service.PostStatusAsync(status.status, status.inReplyToId, status.mediaItems, status.excludeReplyUserIds) + await service.PostStatusAsync(status.status, status.inReplyToId, status.mediaItems, status.excludeReplyUserIds, status.attachmentUrl) .ConfigureAwait(false); } }); diff --git a/OpenTween/Twitter.cs b/OpenTween/Twitter.cs index c2639953..81664269 100644 --- a/OpenTween/Twitter.cs +++ b/OpenTween/Twitter.cs @@ -279,7 +279,7 @@ namespace OpenTween } public async Task PostStatus(string postStr, long? reply_to, IReadOnlyList mediaIds = null, - IReadOnlyList excludeReplyUserIds = null) + IReadOnlyList excludeReplyUserIds = null, string attachmentUrl = null) { this.CheckAccountState(); @@ -295,7 +295,7 @@ namespace OpenTween autoPopulateReplyMetadata = true; var response = await this.Api.StatusesUpdate(postStr, reply_to, mediaIds, - autoPopulateReplyMetadata, excludeReplyUserIds) + autoPopulateReplyMetadata, excludeReplyUserIds, attachmentUrl) .ConfigureAwait(false); var status = await response.LoadJsonAsync()