PageRenderTime 37ms CodeModel.GetById 10ms RepoModel.GetById 0ms app.codeStats 0ms

/HatenaPhotLife/HatenaPhotLifeUploader.cs

https://bitbucket.org/ugaya40/instant-image-uploader
C# | 111 lines | 96 code | 15 blank | 0 comment | 7 complexity | f420684553981fa011366ca982471c8f MD5 | raw file
  1. using System;
  2. using System.IO;
  3. using System.Net;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using InstantImageUploader.Models;
  8. using HatenaPhotLife.Properties;
  9. using System.Reactive.Linq;
  10. using System.Diagnostics;
  11. using System.ComponentModel.Composition;
  12. namespace HatenaPhotLife
  13. {
  14. [Export(typeof(IImageUploader))]
  15. public class HatenaPhotLifeUploader : IImageUploader
  16. {
  17. public string ImageUploaderName
  18. {
  19. get { return "はてなフォトライフ"; }
  20. }
  21. public string Description
  22. {
  23. get { return "はてなフォトライフに画像をアップロードします。"; }
  24. }
  25. public string Author
  26. {
  27. get { return "Masanori Onoue (ugaya40)"; }
  28. }
  29. public string Url
  30. {
  31. get { return "http://ugaya40.net"; }
  32. }
  33. public string UserName
  34. {
  35. get;
  36. private set;
  37. }
  38. public string Password
  39. {
  40. get;
  41. private set;
  42. }
  43. public string FolderName
  44. {
  45. get;
  46. private set;
  47. }
  48. public void Initialize()
  49. {
  50. Settings.Default.Reload();
  51. if ((!string.IsNullOrEmpty(Settings.Default.UserName))
  52. && (!string.IsNullOrEmpty(Settings.Default.Password)))
  53. {
  54. UserName = Settings.Default.UserName;
  55. Password = Settings.Default.Password;
  56. FolderName = Settings.Default.FolderName;
  57. }
  58. }
  59. public void Upload(string imageFilePath)
  60. {
  61. Observable.Defer(() => new HatenaPhotLifeClient(UserName, Password).UploadAsObservable(imageFilePath,FolderName))
  62. .Retry(3)
  63. .Subscribe(url =>
  64. {
  65. Process.Start(url);
  66. OnSuccessImageUpload(null);
  67. },(Exception ex) => OnFailedImageUpload("はてなフォトライフへのアップロードに失敗しました"));
  68. }
  69. public bool IsNeedSetting
  70. {
  71. get { return string.IsNullOrEmpty(UserName) || string.IsNullOrEmpty(Password); }
  72. }
  73. public event EventHandler<SuccessImageUploadEventArgs> SuccessImageUpload;
  74. private void OnSuccessImageUpload(string messageForUser)
  75. {
  76. var handler = SuccessImageUpload;
  77. if (handler != null)
  78. {
  79. handler(this, new SuccessImageUploadEventArgs(messageForUser));
  80. }
  81. }
  82. public event EventHandler<FailedImageUploadEventArgs> FailedImageUpload;
  83. private void OnFailedImageUpload(string messageForUser)
  84. {
  85. var handler = FailedImageUpload;
  86. if (handler != null)
  87. {
  88. handler(this, new FailedImageUploadEventArgs(messageForUser));
  89. }
  90. }
  91. public Type SettingWindowType
  92. {
  93. get { return typeof(SettingWindow); }
  94. }
  95. }
  96. }