/Twitpic/TwitpicUploader.cs
C# | 120 lines | 103 code | 17 blank | 0 comment | 7 complexity | 6f876d4c192283a107b80e11b1c65641 MD5 | raw file
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.ComponentModel.Composition;
- using InstantImageUploader.Models;
- using ImageUploader.Extensions.Twitpic.Properties;
- using Codeplex.OAuth;
- using System.Reactive.Linq;
- using ImageUploader.Extensions.Twitpic;
- using System.Xml.Linq;
- using System.Diagnostics;
- using System.IO;
-
- namespace ImageUploader.Extensions.Twitpic
- {
- [Export(typeof(IImageUploader))]
- public class TwitpicUploader : IImageUploader
- {
- internal const string CONSUMER_KEY = "0eRp9Vt6k88OTvy1UrnqGQ";
- internal const string CONSUMER_SECRET = "ZIFuRWCjkHqI1CZ04ULdJxDabx00CGJacgcpQiGlOk8";
-
- private AccessToken _accessToken;
-
- public void Initialize()
- {
- Settings.Default.Reload();
-
- if ((!string.IsNullOrEmpty(Settings.Default.AccessTokenKey))
- && (!string.IsNullOrEmpty(Settings.Default.AccessTokenSecret)))
- {
- AccessToken = new AccessToken(Settings.Default.AccessTokenKey, Settings.Default.AccessTokenSecret);
- }
- }
-
- public void Upload(string imageFilePath)
- {
- Observable.Defer(() =>
- {
- var client = new TwitpicClient(CONSUMER_KEY, CONSUMER_SECRET, AccessToken);
- return client.UploadPicture("UploadPicture", string.Empty, File.ReadAllBytes(imageFilePath));
- })
- .Retry(3)
- .Select(result => (string)XElement.Parse(result).Element("url"))
- .Subscribe(url =>
- {
- Process.Start(url);
- OnSuccessImageUpload(null);
- }, (Exception ex) => OnFailedImageUpload("Twitpicへのアップロードに失敗しました"));
- }
-
- public Type SettingWindowType
- {
- get { return typeof(SettingWindow); }
- }
-
- public AccessToken AccessToken
- {
- get
- {
- return _accessToken;
- }
- set
- {
- _accessToken = value;
- Settings.Default.AccessTokenKey = _accessToken.Key;
- Settings.Default.AccessTokenSecret = _accessToken.Secret;
- Settings.Default.Save();
- }
- }
-
- public event EventHandler<SuccessImageUploadEventArgs> SuccessImageUpload;
-
- private void OnSuccessImageUpload(string messageForUser)
- {
- var handler = SuccessImageUpload;
- if (handler != null)
- {
- handler(this, new SuccessImageUploadEventArgs(messageForUser));
- }
- }
-
- public event EventHandler<FailedImageUploadEventArgs> FailedImageUpload;
-
- private void OnFailedImageUpload(string messageForUser)
- {
- var handler = FailedImageUpload;
- if (handler != null)
- {
- handler(this, new FailedImageUploadEventArgs(messageForUser));
- }
- }
-
- public string ImageUploaderName
- {
- get { return "Twitpic"; }
- }
-
- public string Description
- {
- get { return "Twitpic用アップローダです。"; }
- }
-
- public string Author
- {
- get { return "Masanori Onoue (ugaya40)"; }
- }
-
- public string Url
- {
- get { return "http://ugaya40.net"; }
- }
-
-
- public bool IsNeedSetting
- {
- get { return AccessToken == null; }
- }
- }
- }