From 2cd553cc979085636b4e5becccd44c216951fa22 Mon Sep 17 00:00:00 2001 From: Kimura Youichi Date: Sun, 23 Nov 2014 12:39:10 +0900 Subject: [PATCH] =?utf8?q?flic.kr=20=E3=83=89=E3=83=A1=E3=82=A4=E3=83=B3?= =?utf8?q?=E3=81=AE=E7=9F=AD=E7=B8=AEURL=E3=81=AE=E6=8C=99=E5=8B=95?= =?utf8?q?=E3=81=AB=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit flic.kr ドメインを展開する際に https://www.flickr.com/photo.gne?short=... 形式のURLを経由する --- OpenTween.Tests/ShortUrlTest.cs | 24 ++++++++++++++++++++++++ OpenTween/Resources/ChangeLog.txt | 1 + OpenTween/ShortUrl.cs | 13 ++++++++++++- 3 files changed, 37 insertions(+), 1 deletion(-) diff --git a/OpenTween.Tests/ShortUrlTest.cs b/OpenTween.Tests/ShortUrlTest.cs index 27d96124..0ba25ed9 100644 --- a/OpenTween.Tests/ShortUrlTest.cs +++ b/OpenTween.Tests/ShortUrlTest.cs @@ -59,6 +59,30 @@ namespace OpenTween } [Fact] + public async Task ExpandUrlAsync_IrregularUrlTest() + { + var handler = new HttpMessageHandlerMock(); + using (var http = new HttpClient(handler)) + { + var shortUrl = new ShortUrl(http); + + // https://www.flickr.com/photo.gne?short=hoge -> /photos/foo/11111/ + handler.Enqueue(x => + { + Assert.Equal(HttpMethod.Head, x.Method); + Assert.Equal(new Uri("https://www.flickr.com/photo.gne?short=hoge"), x.RequestUri); + + return this.CreateRedirectResponse("/photos/foo/11111/"); + }); + + Assert.Equal(new Uri("https://www.flickr.com/photos/foo/11111/"), + await shortUrl.ExpandUrlAsync(new Uri("https://www.flickr.com/photo.gne?short=hoge"))); + + Assert.Equal(0, handler.QueueCount); + } + } + + [Fact] public async Task ExpandUrlAsync_DisableExpandingTest() { var handler = new HttpMessageHandlerMock(); diff --git a/OpenTween/Resources/ChangeLog.txt b/OpenTween/Resources/ChangeLog.txt index 64a0a997..5a9e0c5d 100644 --- a/OpenTween/Resources/ChangeLog.txt +++ b/OpenTween/Resources/ChangeLog.txt @@ -21,6 +21,7 @@ * FIX: UserStreamsから時々不正なJSONが送られてくる問題への対処 * FIX: ミュート機能がRecentタブで正しく動作していなかった不具合を修正 * FIX: 空のタブを表示した状態で Shift+H, Shift+M, Shift+L (画面上,中央,下のツイートを選択) を押下するとエラーが発生する不具合を修正 + * FIX: flic.kr ドメインのURLでサムネイル表示が出来なくなっていた問題を修正 ==== Ver 1.2.3(2014/09/03) * NEW: UserSteams の (un)mute イベント追加に対応 diff --git a/OpenTween/ShortUrl.cs b/OpenTween/ShortUrl.cs index 0c6ae42c..201acfeb 100644 --- a/OpenTween/ShortUrl.cs +++ b/OpenTween/ShortUrl.cs @@ -194,7 +194,7 @@ namespace OpenTween try { - if (!ShortUrlHosts.Contains(uri.Host)) + if (!ShortUrlHosts.Contains(uri.Host) && !IsIrregularShortUrl(uri)) return uri; Uri expanded; @@ -478,6 +478,17 @@ namespace OpenTween } } + private bool IsIrregularShortUrl(Uri uri) + { + // Flickrの https://www.flickr.com/photo.gne?short=... 形式のURL + // flic.kr ドメインのURLを展開する途中に経由する + if (uri.Host.EndsWith("flickr.com", StringComparison.OrdinalIgnoreCase) && + uri.PathAndQuery.StartsWith("/photo.gne", StringComparison.OrdinalIgnoreCase)) + return true; + + return false; + } + private async Task GetRedirectTo(Uri url) { var request = new HttpRequestMessage(HttpMethod.Head, url); -- 2.11.0