• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

dev


Commit MetaInfo

Revision1e08bca54bf95d8e4632ee05b3acee3b0770d4e6 (tree)
Time2014-01-13 07:46:46
AuthorKimura Youichi <kim.upsilon@bucy...>
CommiterKimura Youichi

Log Message

ton.twitter.com (DM添付の画像に使用される) のサムネイル表示に対応

Change Summary

Incremental Difference

--- a/OpenTween/OpenTween.csproj
+++ b/OpenTween/OpenTween.csproj
@@ -256,6 +256,7 @@
256256 <Compile Include="Thumbnail\Services\Pixiv.cs" />
257257 <Compile Include="Thumbnail\Services\SimpleThumbnailService.cs" />
258258 <Compile Include="Thumbnail\Services\Tinami.cs" />
259+ <Compile Include="Thumbnail\Services\TonTwitterCom.cs" />
259260 <Compile Include="Thumbnail\Services\Tumblr.cs" />
260261 <Compile Include="Thumbnail\Services\ViaMe.cs" />
261262 <Compile Include="Thumbnail\Services\Vimeo.cs" />
--- /dev/null
+++ b/OpenTween/Thumbnail/Services/TonTwitterCom.cs
@@ -0,0 +1,84 @@
1+// OpenTween - Client of Twitter
2+// Copyright (c) 2013 kim_upsilon (@kim_upsilon) <https://upsilo.net/~upsilon/>
3+// All rights reserved.
4+//
5+// This file is part of OpenTween.
6+//
7+// This program is free software; you can redistribute it and/or modify it
8+// under the terms of the GNU General Public License as published by the Free
9+// Software Foundation; either version 3 of the License, or (at your option)
10+// any later version.
11+//
12+// This program is distributed in the hope that it will be useful, but
13+// WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14+// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15+// for more details.
16+//
17+// You should have received a copy of the GNU General Public License along
18+// with this program. If not, see <http://www.gnu.org/licenses/>, or write to
19+// the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
20+// Boston, MA 02110-1301, USA.
21+
22+using System;
23+using System.Collections.Generic;
24+using System.IO;
25+using System.Linq;
26+using System.Net;
27+using System.Text;
28+using System.Threading.Tasks;
29+using System.Threading;
30+
31+namespace OpenTween.Thumbnail.Services
32+{
33+ /// <summary>
34+ /// Twitter の DM に添付された画像をサムネイル表示するためのクラス
35+ /// </summary>
36+ class TonTwitterCom : IThumbnailService
37+ {
38+ /// <summary>
39+ /// OAuth のトークン等を設定させるためのデリゲート
40+ /// </summary>
41+ internal static Action<HttpConnectionOAuth> InitializeOAuthToken;
42+
43+ public override ThumbnailInfo GetThumbnailInfo(string url, PostClass post)
44+ {
45+ if (InitializeOAuthToken == null)
46+ return null;
47+
48+ if (!url.StartsWith(@"https://ton.twitter.com/1.1/ton/data/"))
49+ return null;
50+
51+ return new TonTwitterCom.Thumbnail
52+ {
53+ ImageUrl = url,
54+ ThumbnailUrl = url,
55+ TooltipText = null,
56+ FullSizeImageUrl = url,
57+ };
58+ }
59+
60+ public class Thumbnail : ThumbnailInfo
61+ {
62+ protected override Task<MemoryImage> LoadThumbnailImageAsync()
63+ {
64+ return Task.Factory.StartNew(() =>
65+ {
66+ var oauth = new HttpOAuthApiProxy();
67+ TonTwitterCom.InitializeOAuthToken(oauth);
68+
69+ Stream response = null;
70+ var statusCode = oauth.GetContent("GET", new Uri(this.ThumbnailUrl), null, ref response, MyCommon.GetUserAgentString());
71+
72+ using (response)
73+ {
74+ if (statusCode == HttpStatusCode.OK)
75+ return MemoryImage.CopyFromStream(response);
76+ else
77+ throw new WebException(statusCode.ToString(), WebExceptionStatus.ProtocolError);
78+ }
79+ },
80+ CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default); // 明示しないと TaskScheduler.Current になり UI スレッド上で実行されてしまう
81+ }
82+ }
83+ }
84+}
--- a/OpenTween/Thumbnail/ThumbnailGenerator.cs
+++ b/OpenTween/Thumbnail/ThumbnailGenerator.cs
@@ -41,6 +41,9 @@ namespace OpenTween.Thumbnail
4141 {
4242 ThumbnailGenerator.Services = new List<IThumbnailService>()
4343 {
44+ // ton.twitter.com
45+ new TonTwitterCom(),
46+
4447 // DirectLink
4548 new SimpleThumbnailService(@"^https?://.*(\.jpg|\.jpeg|\.gif|\.png|\.bmp)$", "${0}"),
4649
--- a/OpenTween/Tween.cs
+++ b/OpenTween/Tween.cs
@@ -542,6 +542,10 @@ namespace OpenTween
542542
543543 ThumbnailGenerator.InitializeGenerator();
544544
545+ Thumbnail.Services.TonTwitterCom.InitializeOAuthToken = x =>
546+ x.Initialize(ApplicationSettings.TwitterConsumerKey, ApplicationSettings.TwitterConsumerSecret,
547+ this.tw.AccessToken, this.tw.AccessTokenSecret, "", "");
548+
545549 //発言保持クラス
546550 _statuses = TabInformations.GetInstance();
547551