PageRenderTime 40ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/Twitpic/SettingWindow.xaml.cs

https://bitbucket.org/ugaya40/instant-image-uploader
C# | 94 lines | 83 code | 8 blank | 3 comment | 6 complexity | 9f6e34a3bdad25732ed4183b8d844c38 MD5 | raw file
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Windows;
  6. using System.Windows.Controls;
  7. using System.Windows.Data;
  8. using System.Windows.Documents;
  9. using System.Windows.Input;
  10. using System.Windows.Media;
  11. using System.Windows.Media.Imaging;
  12. using System.Windows.Navigation;
  13. using System.Windows.Shapes;
  14. using System.Reactive.Linq;
  15. using Codeplex.OAuth;
  16. using System.Diagnostics;
  17. using ImageUploader.Extensions.Twitpic.Properties;
  18. namespace ImageUploader.Extensions.Twitpic
  19. {
  20. /// <summary>
  21. /// SettingWindow.xaml の相互作用ロジック
  22. /// </summary>
  23. public partial class SettingWindow : Window
  24. {
  25. RequestToken _requestToken;
  26. public SettingWindow()
  27. {
  28. InitializeComponent();
  29. }
  30. private void RequestUrlButton_Click(object sender, RoutedEventArgs e)
  31. {
  32. Observable.Defer(() =>
  33. {
  34. var authorizer = new OAuthAuthorizer(TwitpicUploader.CONSUMER_KEY, TwitpicUploader.CONSUMER_SECRET);
  35. return authorizer.GetRequestToken("http://twitter.com/oauth/request_token");
  36. })
  37. .Retry(3)
  38. .Select(res => res.Token)
  39. .Subscribe(token =>
  40. {
  41. _requestToken = token;
  42. var url = new OAuthAuthorizer(TwitpicUploader.CONSUMER_KEY, TwitpicUploader.CONSUMER_SECRET)
  43. .BuildAuthorizeUrl("http://twitter.com/oauth/authorize", token);
  44. Process.Start(url);
  45. });
  46. }
  47. private void PinCodeTextBox_TextChanged(object sender, TextChangedEventArgs e)
  48. {
  49. if ((_requestToken != null) && (!string.IsNullOrEmpty(PinCodeTextBox.Text)))
  50. {
  51. OkButton.IsEnabled = true;
  52. }
  53. else
  54. {
  55. OkButton.IsEnabled = false;
  56. }
  57. }
  58. private void OkButton_Click(object sender, RoutedEventArgs e)
  59. {
  60. if ((_requestToken != null) && (!string.IsNullOrEmpty(PinCodeTextBox.Text)))
  61. {
  62. Observable.Defer(() =>
  63. {
  64. var authorizer = new OAuthAuthorizer(TwitpicUploader.CONSUMER_KEY, TwitpicUploader.CONSUMER_SECRET);
  65. return authorizer.GetAccessToken("http://twitter.com/oauth/access_token", _requestToken, PinCodeTextBox.Text);
  66. })
  67. .Retry(3)
  68. .Subscribe(res =>
  69. {
  70. Dispatcher.BeginInvoke((Action)(() =>
  71. {
  72. Settings.Default.AccessTokenKey = res.Token.Key;
  73. Settings.Default.AccessTokenSecret = res.Token.Secret;
  74. Settings.Default.Save();
  75. MessageBox.Show("認証に成功しました","情報",MessageBoxButton.OK,MessageBoxImage.Information);
  76. this.Close();
  77. }));
  78. });
  79. }
  80. }
  81. private void CancelButton_Click(object sender, RoutedEventArgs e)
  82. {
  83. this.Close();
  84. }
  85. }
  86. }