OSDN Git Service

引用ツイートのリンク先URLに正しくscreenNameを含める
authorKimura Youichi <kim.upsilon@bucyou.net>
Thu, 21 May 2015 20:58:50 +0000 (05:58 +0900)
committerKimura Youichi <kim.upsilon@bucyou.net>
Thu, 21 May 2015 21:16:12 +0000 (06:16 +0900)
OpenTween.Tests/TweenMainTest.cs
OpenTween/Tween.cs

index b8343ef..49dd7b5 100644 (file)
@@ -181,7 +181,7 @@ namespace OpenTween
             // PostClass.Text はリンクを除去するのみでエスケープは行わない
             // (TweetFormatter によって既にエスケープされた文字列が格納されているため)
 
-            var expected = "<a class=\"quote-tweet-link\" href=\"https://twitter.com/status/status/12345\">" +
+            var expected = "<a class=\"quote-tweet-link\" href=\"https://twitter.com/kim_upsilon/status/12345\">" +
                 "<blockquote class=\"quote-tweet\">" +
                 "<p>@twitterapi hogehoge</p> &mdash; upsilon (@kim_upsilon) " + DateTime.Parse("2015/03/30 3:30:00") +
                 "</blockquote></a>";
@@ -194,10 +194,10 @@ namespace OpenTween
             var statusId = 12345L; // リンク先のステータスID
             var html = "<marquee>hogehoge</marquee>"; // HTMLをそのまま出力する (エスケープしない)
 
-            var expected = "<a class=\"quote-tweet-link\" href=\"https://twitter.com/status/status/12345\">" +
+            var expected = "<a class=\"quote-tweet-link\" href=\"https://twitter.com/twitter/status/12345\">" +
                 "<blockquote class=\"quote-tweet\"><marquee>hogehoge</marquee></blockquote>" +
                 "</a>";
-            Assert.Equal(expected, TweenMain.FormatQuoteTweetHtml(statusId, html));
+            Assert.Equal(expected, TweenMain.FormatQuoteTweetHtml("twitter", statusId, html));
         }
 
         [Fact]
index e96a3ea..22b114c 100644 (file)
@@ -6482,12 +6482,18 @@ namespace OpenTween
                 " (@" + WebUtility.HtmlEncode(post.ScreenName) + ") " +
                 WebUtility.HtmlEncode(post.CreatedAt.ToString());
 
-            return FormatQuoteTweetHtml(post.StatusId, innerHtml);
+            return FormatQuoteTweetHtml(post.ScreenName, post.StatusId, innerHtml);
         }
 
         internal static string FormatQuoteTweetHtml(long statusId, string innerHtml)
         {
-            return "<a class=\"quote-tweet-link\" href=\"https://twitter.com/status/status/" + statusId + "\">" +
+            // screenName が不明な場合、とりあえず https://twitter.com/statuses/status/{statusId} にリンクする
+            return FormatQuoteTweetHtml("statuses", statusId, innerHtml);
+        }
+
+        internal static string FormatQuoteTweetHtml(string screenName, long statusId, string innerHtml)
+        {
+            return "<a class=\"quote-tweet-link\" href=\"https://twitter.com/" + WebUtility.HtmlEncode(screenName) + "/status/" + statusId + "\">" +
                 "<blockquote class=\"quote-tweet\">" + innerHtml + "</blockquote>" +
                 "</a>";
         }