OSDN Git Service

flic.kr ドメインの短縮URLの挙動に対応
authorKimura Youichi <kim.upsilon@bucyou.net>
Sun, 23 Nov 2014 03:39:10 +0000 (12:39 +0900)
committerKimura Youichi <kim.upsilon@bucyou.net>
Sun, 23 Nov 2014 04:26:03 +0000 (13:26 +0900)
flic.kr ドメインを展開する際に https://www.flickr.com/photo.gne?short=... 形式のURLを経由する

OpenTween.Tests/ShortUrlTest.cs
OpenTween/Resources/ChangeLog.txt
OpenTween/ShortUrl.cs

index 27d9612..0ba25ed 100644 (file)
@@ -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();
index 64a0a99..5a9e0c5 100644 (file)
@@ -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 イベント追加に対応
index 0c6ae42..201acfe 100644 (file)
@@ -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<Uri> GetRedirectTo(Uri url)
         {
             var request = new HttpRequestMessage(HttpMethod.Head, url);