From 52dfb277a2c1a2a8c9dc164fe434006d6a08e547 Mon Sep 17 00:00:00 2001 From: Kimura Youichi Date: Sat, 14 Jun 2014 10:45:36 +0900 Subject: [PATCH] =?utf8?q?=E7=9B=B8=E5=AF=BEURI=E3=82=92=E5=90=AB=E3=82=80?= =?utf8?q?=E6=96=87=E5=AD=97=E5=88=97=E3=82=92=20ShortUrl.ExpandUrlHtmlAsy?= =?utf8?q?nc()=20=E3=81=AB=E9=80=9A=E3=81=99=E3=81=A8=20UriFormatException?= =?utf8?q?=20=E3=81=8C=E7=99=BA=E7=94=9F=E3=81=99=E3=82=8B=E5=95=8F?= =?utf8?q?=E9=A1=8C=E3=81=AE=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit https://sourceforge.jp/ticket/browse.php?group_id=6526&tid=33946 --- OpenTween.Tests/ShortUrlTest.cs | 22 ++++++++++++++++++++++ OpenTween/Resources/ChangeLog.txt | 1 + OpenTween/ShortUrl.cs | 17 ++++++++++++++--- 3 files changed, 37 insertions(+), 3 deletions(-) diff --git a/OpenTween.Tests/ShortUrlTest.cs b/OpenTween.Tests/ShortUrlTest.cs index d034dcf5..fb519438 100644 --- a/OpenTween.Tests/ShortUrlTest.cs +++ b/OpenTween.Tests/ShortUrlTest.cs @@ -296,6 +296,28 @@ namespace OpenTween } } + [Fact] + public async Task ExpandUrlHtmlAsync_RelativeUriTest() + { + var handler = new HttpMessageHandlerMock(); + using (var http = new HttpClient(handler)) + { + var shortUrl = new ShortUrl(http); + + handler.Enqueue(x => + { + // リクエストは送信されないはず + Assert.True(false); + return this.CreateRedirectResponse("http://example.com/hoge"); + }); + + Assert.Equal("hogehoge", + await shortUrl.ExpandUrlHtmlAsync("hogehoge")); + + Assert.Equal(1, handler.QueueCount); + } + } + private HttpResponseMessage CreateRedirectResponse(string uriStr) { var response = new HttpResponseMessage(HttpStatusCode.TemporaryRedirect); diff --git a/OpenTween/Resources/ChangeLog.txt b/OpenTween/Resources/ChangeLog.txt index e9795655..0eaf12b0 100644 --- a/OpenTween/Resources/ChangeLog.txt +++ b/OpenTween/Resources/ChangeLog.txt @@ -4,6 +4,7 @@ * NEW: pic.twitter.com への複数枚画像の投稿に対応しました - 投稿先に Twitter を選択し、左端のコンボボックスを切り替えることで、最大 4 枚まで選択可能です - 投稿するファイルの数・サイズによっては、投稿完了までに若干の時間がかかります + * FIX: 一部クライアントから投稿されたツイートの読み込み時にエラーが発生する問題の修正 ==== Ver 1.2.1(2014/05/26) * NEW: 5月28日(太平洋夏時間, UTC-7)から追加される予定の pic.twitter.com の複数枚画像表示に対応しました diff --git a/OpenTween/ShortUrl.cs b/OpenTween/ShortUrl.cs index 1febf9ac..b0402300 100644 --- a/OpenTween/ShortUrl.cs +++ b/OpenTween/ShortUrl.cs @@ -232,7 +232,18 @@ namespace OpenTween /// /// 展開するURL /// URLの展開を行うタスク - public async Task ExpandUrlStrAsync(string uriStr) + public Task ExpandUrlStrAsync(string uriStr) + { + return this.ExpandUrlStrAsync(uriStr, 10); + } + + /// + /// 短縮 URL を非同期に展開します + /// + /// 展開するURL + /// 再帰的に展開を試みる上限 + /// URLの展開を行うタスク + public async Task ExpandUrlStrAsync(string uriStr, int redirectLimit) { Uri uri; @@ -248,7 +259,7 @@ namespace OpenTween return uriStr; } - var expandedUri = await this.ExpandUrlAsync(uri, 10) + var expandedUri = await this.ExpandUrlAsync(uri, redirectLimit) .ConfigureAwait(false); return expandedUri.OriginalString; @@ -282,7 +293,7 @@ namespace OpenTween return Task.FromResult(html); return HtmlLinkPattern.ReplaceAsync(html, async m => - m.Groups[1].Value + await this.ExpandUrlAsync(new Uri(m.Groups[2].Value), redirectLimit).ConfigureAwait(false) + m.Groups[3].Value); + m.Groups[1].Value + await this.ExpandUrlStrAsync(m.Groups[2].Value, redirectLimit).ConfigureAwait(false) + m.Groups[3].Value); } /// -- 2.11.0