コード例 #1
0
    private async Task <T> GetAsync <T>(YandexPreset preset, string url, CancellationToken cancellationToken)
    {
        var handler = new HttpClientHandler
        {
            Proxy                 = WebHelper.GetProxy(),
            PreAuthenticate       = true,
            UseDefaultCredentials = false,
        };

        using (var client = new HttpClient(handler))
        {
            var request = new HttpRequestMessage(HttpMethod.Get, url)
            {
                Headers =
                {
                    { HttpRequestHeader.Authorization.ToString(), "OAuth " + preset.OAuthToken }
                }
            };

            string responseBody;
            using (var response = await client.SendAsync(request, cancellationToken))
            {
                responseBody = await response.Content.ReadAsStringAsync(cancellationToken);
            }

            var errorDescriptor = Serializer.Deserialize <ErrorDescriptor>(responseBody);

            if (errorDescriptor.Error != null)
            {
                throw new UploadException($"{errorDescriptor.Error}, {errorDescriptor.Message}, {errorDescriptor.Description}");
            }

            return(Serializer.Deserialize <T>(responseBody));
        }
    }
コード例 #2
0
    public static async Task <ValidatedEventArgs> IsValid(YandexPreset preset)
    {
        if (!preset.IsAnonymous && !YandexDisk.IsAuthorized(preset))
        {
            return(new ValidatedEventArgs("S.SaveAs.Warning.Upload.NotAuthorized", StatusReasons.UploadServiceUnauthorized, () => App.MainViewModel.OpenOptions.Execute(Options.UploadIndex)));
        }

        return(await preset.IsValid());
    }
コード例 #3
0
ファイル: YandexUpload.cs プロジェクト: pawlos/ScreenToGif
        public async Task ThrowExceptionWhenUploadFileWithInvalidToken()
        {
            var cloud  = CloudFactory.CreateCloud(UploadDestinations.Yandex);
            var preset = new YandexPreset
            {
                OAuthToken = "Invalid token"
            };

            //Upload.
            await Assert.ThrowsAsync <UploadException>(async() => await cloud.UploadFileAsync(preset, "./Data/Test.txt", CancellationToken.None));
        }
コード例 #4
0
    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;
        }
    }
コード例 #5
0
ファイル: YandexUpload.cs プロジェクト: pawlos/ScreenToGif
        public async Task CanUploadFile()
        {
            var cloud  = CloudFactory.CreateCloud(UploadDestinations.Yandex);
            var preset = new YandexPreset
            {
                OAuthToken = "2344534523e45LW2jwerdp-efUwe4rmg" //Put your test token in here.
            };

            //Upload.
            var history = await cloud.UploadFileAsync(preset, "./Data/Test.txt", CancellationToken.None);

            Assert.NotNull(history);
            Assert.False(string.IsNullOrEmpty(history.Link));

            Trace.WriteLine("Link: " + history.Link);

            //Download.
            var data = await HttpHelper.HttpDownloadFileAsync(history.Link);

            Assert.NotNull(data);
        }
コード例 #6
0
    private async Task PutAsync(YandexPreset preset, string url, HttpContent content, CancellationToken cancellationToken)
    {
        var handler = new HttpClientHandler
        {
            Proxy                 = WebHelper.GetProxy(),
            PreAuthenticate       = true,
            UseDefaultCredentials = false,
        };

        using (var client = new HttpClient(handler))
        {
            var request = new HttpRequestMessage(HttpMethod.Put, url)
            {
                Headers =
                {
                    { HttpRequestHeader.Authorization.ToString(), "OAuth " + preset.OAuthToken }
                },
                Content = content
            };

            using (await client.SendAsync(request, cancellationToken))
            { }
        }
    }
コード例 #7
0
 public static bool IsAuthorized(YandexPreset preset)
 {
     return(!string.IsNullOrWhiteSpace(preset.OAuthToken));
 }