From 8641c36ebf47d2491435b6f0d27fa2d3de2ce50a Mon Sep 17 00:00:00 2001 From: Kimura Youichi Date: Thu, 9 Nov 2017 02:09:32 +0900 Subject: [PATCH] =?utf8?q?=E7=94=BB=E5=83=8F=E6=8A=95=E7=A8=BF=E5=85=88?= =?utf8?q?=E3=81=AE=E3=82=B5=E3=83=BC=E3=83=93=E3=82=B9=E3=81=8B=E3=82=89?= =?utf8?q?=E3=80=8Cyfrog=E3=80=8D=E3=82=92=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- OpenTween/ApplicationSettings.cs | 9 -- OpenTween/Connection/yfrog.cs | 182 -------------------------------------- OpenTween/MediaSelector.cs | 1 - OpenTween/OpenTween.csproj | 1 - OpenTween/Resources/ChangeLog.txt | 2 +- 5 files changed, 1 insertion(+), 194 deletions(-) delete mode 100644 OpenTween/Connection/yfrog.cs diff --git a/OpenTween/ApplicationSettings.cs b/OpenTween/ApplicationSettings.cs index 71df19b2..1f487c5a 100644 --- a/OpenTween/ApplicationSettings.cs +++ b/OpenTween/ApplicationSettings.cs @@ -95,15 +95,6 @@ namespace OpenTween public const string TwitterConsumerSecret = "prTAs2fqLv12nHxlMoLQZT8AkpZt0yYb8A7ktGS2VYeRj0TddS"; //===================================================================== - // yfrog - // http://stream.imageshack.us/api/ から取得できます。 - - /// - /// yfrog APIキー - /// - public const string YfrogApiKey = "HIDP42ZO6314ee2218e2995662bad5ae320c32f1"; - - //===================================================================== // Foursquare // https://developer.foursquare.com/ から取得できます。 diff --git a/OpenTween/Connection/yfrog.cs b/OpenTween/Connection/yfrog.cs deleted file mode 100644 index f457c0bc..00000000 --- a/OpenTween/Connection/yfrog.cs +++ /dev/null @@ -1,182 +0,0 @@ -// OpenTween - Client of Twitter -// Copyright (c) 2007-2011 kiri_feather (@kiri_feather) -// (c) 2008-2011 Moz (@syo68k) -// (c) 2008-2011 takeshik (@takeshik) -// (c) 2010-2011 anis774 (@anis774) -// (c) 2010-2011 fantasticswallow (@f_swallow) -// (c) 2011 spinor (@tplantd) -// (c) 2014 kim_upsilon (@kim_upsilon) -// All rights reserved. -// -// This file is part of OpenTween. -// -// This program is free software; you can redistribute it and/or modify it -// under the terms of the GNU General Public License as published by the Free -// Software Foundation; either version 3 of the License, or (at your option) -// any later version. -// -// This program is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -// for more details. -// -// You should have received a copy of the GNU General Public License along -// with this program. If not, see , or write to -// the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor, -// Boston, MA 02110-1301, USA. - -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Net; -using System.Net.Http; -using System.Threading.Tasks; -using System.Xml; -using System.Xml.Linq; -using System.Xml.XPath; -using OpenTween.Api; -using OpenTween.Api.DataModel; - -namespace OpenTween.Connection -{ - public class yfrog : IMediaUploadService - { - private readonly string[] pictureExt = { ".jpg", ".jpeg", ".gif", ".png" }; - private readonly long MaxFileSize = 5L * 1024 * 1024; - - private readonly Twitter tw; - private readonly YfrogApi yfrogApi; - - private TwitterConfiguration twitterConfig; - - public yfrog(Twitter twitter, TwitterConfiguration twitterConfig) - { - this.tw = twitter; - this.twitterConfig = twitterConfig; - - this.yfrogApi = new YfrogApi(twitter.Api); - } - - public int MaxMediaCount - { - get { return 1; } - } - - public string SupportedFormatsStrForDialog - { - get - { - return "Image Files(*.gif;*.jpg;*.jpeg;*.png)|*.gif;*.jpg;*.jpeg;*.png"; - } - } - - public bool CanUseAltText => false; - - public bool CheckFileExtension(string fileExtension) - { - return this.pictureExt.Contains(fileExtension.ToLowerInvariant()); - } - - public bool CheckFileSize(string fileExtension, long fileSize) - { - var maxFileSize = this.GetMaxFileSize(fileExtension); - return maxFileSize == null || fileSize <= maxFileSize.Value; - } - - public long? GetMaxFileSize(string fileExtension) - { - return MaxFileSize; - } - - public async Task PostStatusAsync(string text, long? inReplyToStatusId, IMediaItem[] mediaItems) - { - if (mediaItems == null) - throw new ArgumentNullException(nameof(mediaItems)); - - if (mediaItems.Length != 1) - throw new ArgumentOutOfRangeException(nameof(mediaItems)); - - var item = mediaItems[0]; - - if (item == null) - throw new ArgumentException("Err:Media not specified."); - - if (!item.Exists) - throw new ArgumentException("Err:Media not found."); - - var xml = await this.yfrogApi.UploadFileAsync(item, text) - .ConfigureAwait(false); - - var imageUrlElm = xml.XPathSelectElement("/rsp/mediaurl"); - if (imageUrlElm == null) - throw new WebApiException("Invalid API response", xml.ToString()); - - var textWithImageUrl = text + " " + imageUrlElm.Value.Trim(); - - await this.tw.PostStatus(textWithImageUrl, inReplyToStatusId) - .ConfigureAwait(false); - } - - public int GetReservedTextLength(int mediaCount) - => this.twitterConfig.ShortUrlLength + 1; - - public void UpdateTwitterConfiguration(TwitterConfiguration config) - { - this.twitterConfig = config; - } - - public class YfrogApi - { - private readonly HttpClient http; - - private static readonly Uri UploadEndpoint = new Uri("https://yfrog.com/api/xauth_upload"); - - private static readonly Uri OAuthRealm = new Uri("http://api.twitter.com/"); - private static readonly Uri AuthServiceProvider = new Uri("https://api.twitter.com/1.1/account/verify_credentials.json"); - - public YfrogApi(TwitterApi twitterApi) - { - var handler = twitterApi.CreateOAuthEchoHandler(AuthServiceProvider, OAuthRealm); - - this.http = Networking.CreateHttpClient(handler); - this.http.Timeout = Networking.UploadImageTimeout; - } - - /// - /// 画像のアップロードを行います - /// - /// - /// - public async Task UploadFileAsync(IMediaItem item, string message) - { - // 参照: http://twitter.yfrog.com/page/api#a1 - - using (var request = new HttpRequestMessage(HttpMethod.Post, UploadEndpoint)) - using (var multipart = new MultipartFormDataContent()) - { - request.Content = multipart; - - using (var apiKeyContent = new StringContent(ApplicationSettings.YfrogApiKey)) - using (var mediaStream = item.OpenRead()) - using (var mediaContent = new StreamContent(mediaStream)) - { - multipart.Add(apiKeyContent, "key"); - multipart.Add(mediaContent, "media", item.Name); - - using (var response = await this.http.SendAsync(request).ConfigureAwait(false)) - { - var responseText = await response.Content.ReadAsStringAsync() - .ConfigureAwait(false); - - if (!response.IsSuccessStatusCode) - throw new WebApiException(response.StatusCode.ToString(), responseText); - - return XDocument.Parse(responseText); - } - } - } - } - } - } -} diff --git a/OpenTween/MediaSelector.cs b/OpenTween/MediaSelector.cs index 094c82b8..3b4ebbee 100644 --- a/OpenTween/MediaSelector.cs +++ b/OpenTween/MediaSelector.cs @@ -155,7 +155,6 @@ namespace OpenTween this.pictureService = new Dictionary { ["Twitter"] = new TwitterPhoto(tw, twitterConfig), ["img.ly"] = new imgly(tw, twitterConfig), - ["yfrog"] = new yfrog(tw, twitterConfig), ["Imgur"] = new Imgur(tw, twitterConfig), ["Mobypicture"] = new Mobypicture(tw, twitterConfig), }; diff --git a/OpenTween/OpenTween.csproj b/OpenTween/OpenTween.csproj index 52cea07d..014b97f3 100644 --- a/OpenTween/OpenTween.csproj +++ b/OpenTween/OpenTween.csproj @@ -233,7 +233,6 @@ ListManage.cs - Component diff --git a/OpenTween/Resources/ChangeLog.txt b/OpenTween/Resources/ChangeLog.txt index 590cf7bf..ecbb7ccb 100644 --- a/OpenTween/Resources/ChangeLog.txt +++ b/OpenTween/Resources/ChangeLog.txt @@ -1,7 +1,7 @@ 更新履歴 ==== Ver 1.4.1-dev(xxxx/xx/xx) - * CHG: サービスが終了した「ついっぷるフォト」を画像投稿先から削除 + * CHG: サービスが終了した「yfrog」「ついっぷるフォト」を画像投稿先から削除 * FIX: 投稿欄の複数行表示が次回起動時に保持されない不具合を修正 ==== Ver 1.4.0(2017/10/30) -- 2.11.0