public static async Task <List <ImgurAlbum> > GetAlbums(ImgurPreset preset) { if (!await IsAuthorized(preset)) { return(null); } var headers = new NameValueCollection { { "Authorization", "Bearer " + preset.AccessToken } }; var response = await WebHelper.Get("https://api.imgur.com/3/account/me/albums", headers); var responseAux = Serializer.Deserialize <ImgurAlbumsResponse>(response); if (responseAux == null || (!responseAux.Success && responseAux.Status != 200)) { return(null); } var list = responseAux.Data.Select(s => new ImgurAlbum(s)).ToList(); preset.Albums = new ArrayList(list); return(list); }
public static async Task <ValidatedEventArgs> IsValid(ImgurPreset preset) { if (!preset.IsAnonymous && !await Imgur.IsAuthorized(preset)) { return(new ValidatedEventArgs("S.SaveAs.Warning.Upload.NotAuthorized", StatusReasons.UploadServiceUnauthorized, () => App.MainViewModel.OpenOptions.Execute(Options.UploadIndex))); } return(await preset.IsValid()); }
private async Task <History> Upload(ImgurPreset preset, string path, Dictionary <string, string> args, NameValueCollection headers) { await using (var stream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { var result = await WebHelper.SendFile("https://api.imgur.com/3/image", stream, path, args, headers, "image"); var response = Serializer.Deserialize <ImgurUploadResponse>(result); //Error when sending video. //{"data":{"errorCode":null,"ticket":"7234557b"},"success":true,"status":200} //{"data":{"error":"No image data was sent to the upload api","request":"\/3\/image","method":"POST"},"success":false,"status":400} if (response == null || (!response.Success && response.Status != 200)) { LogWriter.Log("It was not possible to upload to Imgur", result); return(new ImgurHistory { PresetName = preset.Title, DateInUtc = DateTime.UtcNow, Result = 400, Message = response?.Status + " - " + (response?.Data?.Error ?? result) }); } if (string.IsNullOrEmpty(response.Data?.Link)) { LogWriter.Log("It was not possible to upload to Imgur", result); return(new ImgurHistory { PresetName = preset.Title, DateInUtc = DateTime.UtcNow, Result = 400, Message = "Upload failed. The link was not provided." }); } var history = new ImgurHistory { PresetName = preset.Title, DateInUtc = DateTime.UtcNow, Result = 200, Id = response.Data.Id, Link = $"https://imgur.com/{response.Data.Id}", DeletionLink = $"https://imgur.com/delete/{response.Data.DeleteHash}", Mp4 = response.Data.Mp4, Webm = response.Data.Webm, Gifv = response.Data.Gifv, Gif = response.Data.Link }; return(history); } }
private void TypeComboBox_Selected(object sender, RoutedEventArgs e) { if (!IsLoaded) { return; } if (TypeComboBox.SelectedIndex < 1) { MainPresenter.Content = null; return; } if (!IsEditing) { //Create a new model. switch ((UploadDestinations)TypeComboBox.SelectedIndex) { case UploadDestinations.Imgur: CurrentPreset = new ImgurPreset(); break; case UploadDestinations.Gfycat: CurrentPreset = new GfycatPreset(); break; case UploadDestinations.Yandex: CurrentPreset = new YandexPreset(); break; } } switch ((UploadDestinations)TypeComboBox.SelectedIndex) { case UploadDestinations.Imgur: MainPresenter.Content = new ImgurPanel { DataContext = CurrentPreset }; break; case UploadDestinations.Gfycat: MainPresenter.Content = new GfycatPanel { DataContext = CurrentPreset }; break; case UploadDestinations.Yandex: MainPresenter.Content = new YandexPanel { DataContext = CurrentPreset }; break; } }
public static async Task <bool> RefreshToken(ImgurPreset preset) { var args = new Dictionary <string, string> { { "refresh_token", preset.RefreshToken }, { "client_id", Secret.ImgurId }, { "client_secret", Secret.ImgurSecret }, { "grant_type", "refresh_token" } }; return(await GetTokens(preset, args)); }
public static async Task <bool> IsAuthorized(ImgurPreset preset) { if (string.IsNullOrWhiteSpace(preset.RefreshToken)) { return(false); } if (!IsAuthorizationExpired(preset)) { return(true); } return(await RefreshToken(preset)); }
private static async Task <bool> GetTokens(ImgurPreset preset, Dictionary <string, string> args) { var response = await WebHelper.PostMultipart("https://api.imgur.com/oauth2/token", args); if (string.IsNullOrEmpty(response)) { return(false); } var token = Serializer.Deserialize <OAuth2Token>(response); if (string.IsNullOrEmpty(token?.AccessToken)) { return(false); } preset.AccessToken = token.AccessToken; preset.RefreshToken = token.RefreshToken; preset.ExpiryDate = DateTime.UtcNow + TimeSpan.FromSeconds(token.ExpiresIn - 10); return(true); }
public static async Task <string> AskForAlbum(ImgurPreset preset) { var albums = await GetAlbums(preset); return(Application.Current.Dispatcher.Invoke <string>(() => PickAlbumDialog.OkCancel(albums))); }
public static bool IsAuthorizationExpired(ImgurPreset preset) { return(DateTime.UtcNow > preset.ExpiryDate); }