예제 #1
0
        private async Task UploadRecords()
        {
            ShowUploadDescriptionTextBox = false;
            ShowUploadInfo             = true;
            ShareUrl                   = string.Empty;
            EnableClearAndUploadButton = false;

            var sessions = CloudEntries.Select(ce => _recordManager.LoadData(ce.FileRecordInfo.FullPath));

            var contentAsJson = JsonConvert.SerializeObject(sessions);

            using (var client = new HttpClient()
            {
                BaseAddress = new Uri(ConfigurationManager.AppSettings["WebserviceUri"])
            })
            {
                client.DefaultRequestHeaders.AddCXClientUserAgent();
                if (_loginManager.State?.Token != null)
                {
                    try
                    {
                        await _loginManager.RefreshTokenIfNeeded();

                        if (_loginManager.State.IsSigned)
                        {
                            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _loginManager.State.Token.AccessToken);
                        }
                    } catch (Exception e)
                    {
                        _logger.LogWarning(e, "Something went wrong while Refreshing the Accesstoken. Using Guest Mode");
                    }
                }
                var content = new StringContent(contentAsJson);
                content.Headers.ContentType.MediaType = "application/json";
                var response = await client.PostAsync($@"SessionCollections?description={UploadDescription}", content);

                if (response.IsSuccessStatusCode)
                {
                    ShareUrl          = response.Headers.Location.ToString();
                    ShowUploadInfo    = false;
                    UploadDescription = string.Empty;
                    _logger.LogInformation("Successfully uploaded Captures. ShareUrl is {shareUrl}", response.Headers.Location);
                }
                else
                {
                    var responseBody = await response.Content.ReadAsStringAsync();

                    _logger.LogError("Upload of Captures failed. {error}", responseBody);
                }
            }
        }