Example #1
0
        public async Task AuthenticateUser_ValidCredentials_AllowsAuthorizedAccess()
        {
            var dto = await _client.AuthenticateUserAsync("mwilson", "password");

            Assert.NotNull(dto);
            _httpClient.AddAuthorization(dto);

            AssignedCaretakersForCustomerDto dto2 = null;
            var exception2 = await Record.ExceptionAsync(async() =>
            {
                dto2 = await _client.Customer_GetAssignedCaretakersAsync();
            });

            Assert.Null(exception2);
            Assert.NotNull(dto2);
        }
Example #2
0
        private static async Task InitiateDatasetUpload(this WaveContext context, string xmdJson, DataOperation operation, Interfaces.ILog log)
        {
            var url = $"{context.EntryPoint}/services/data/v41.0/sobjects/InsightsExternalData";

            log.Info(Localization.GetLocalizationString("Initializing data upload"));
            var client  = new HttpClient();
            var encJson = Convert.ToBase64String(Encoding.UTF8.GetBytes(xmdJson));
            var payload =
                $"{{\"Format\":\"csv\",\"EdgemartAlias\":\"{context.Alias}\",\"Operation\":\"{operation.ToString()}\",\"Action\":\"None\",\"MetadataJson\":\"{encJson}\"}}";
            var content = new StringContent(payload, Encoding.ASCII);

            content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
            client.AddAuthorization(context);
            var response = await client.PostAsync(url, content);

            var responseType = new { id = "" };
            var responseText = await response.Content.ReadAsStringAsync();

            log.Debug($"Received {responseText}");
            if (response.IsSuccessStatusCode)
            {
                context.SetId = JsonConvert.DeserializeAnonymousType(responseText, responseType).id;
                log.Info(Localization.GetLocalizationString("Received job id {0}", context.SetId));
            }
        }
Example #3
0
        private static async Task <Func <MemoryStream, bool, int> > GetDataChunkUploader(this IFileMedia fileMedia, IFileConfiguration fileConfig, Interfaces.ILog log)
        {
            var getContext = await fileMedia.GetWaveContextFunc(fileConfig.Name, log);

            var xmdJson = fileConfig.GetMetadataBuilder();
            var chunkNo = 0;

            return((stream, isFinalizing) =>
            {
                var context = getContext();
                if (string.IsNullOrWhiteSpace(context.SetId))
                {
                    context.InitiateDatasetUpload(xmdJson(), fileMedia.Operation, log).Wait();
                    if (string.IsNullOrWhiteSpace(context.SetId))
                    {
                        throw new ImporterException(
                            Localization.GetLocalizationString("Could not get job id from wave, cannot upload chunks"));
                    }
                }
                stream.Flush();
                var encCSVchunk = Convert.ToBase64String(stream.ToArray());
                var payload =
                    $"{{\"InsightsExternalDataId\":\"{context.SetId}\",\"PartNumber\":{++chunkNo},\"DataFile\":\"{encCSVchunk}\"}}";
                var tryCount = 0;
                while (true)
                {
                    try
                    {
                        var client = new HttpClient();
                        var content = new StringContent(payload, Encoding.ASCII);
                        content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                        var url = $"{context.EntryPoint}/services/data/v41.0/sobjects/InsightsExternalDataPart";
                        client.AddAuthorization(context);
                        log.Debug($"Uploading chunk #{chunkNo}");
                        var response = client.PostAsync(url, content).Result;
                        if (response.IsSuccessStatusCode)
                        {
                            log.Debug($"Uploaded chunk #{chunkNo}");
                            if (isFinalizing)
                            {
                                context.FinalizeDatasetUpload(log).Wait();
                            }
                            return chunkNo;
                        }
                    }
                    catch (Exception ex)
                    {
                        log.Error(Localization.GetLocalizationString("Error while uploading chunk #{0} - {1}", chunkNo, ex.Message));
                        log.Debug(ex.ToString());
                    }
                    if (++tryCount > 4)
                    {
                        throw new ImporterUploadException(Localization.GetLocalizationString("Failed to upload dataset."));
                    }
                    log.Debug(Localization.GetLocalizationString("Retrying to upload chunk#{0}", chunkNo));
                }
            });
        }
Example #4
0
        private static async Task FinalizeDatasetUpload(this WaveContext context, Interfaces.ILog log)
        {
            var client = new HttpClient();
            var url    = $"{context.EntryPoint}/services/data/v36.0/sobjects/InsightsExternalData/{context.SetId}";

            log.Info(Localization.GetLocalizationString("Finalizing upload job {0}", context.SetId));
            var content = new StringContent("{\"Action\" : \"Process\"}", Encoding.ASCII);

            content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
            client.AddAuthorization(context);
            var response = await client.PatchAsync(url, content);

            if (response.IsSuccessStatusCode)
            {
                log.Info(Localization.GetLocalizationString("Successfully uploaded {0}", context.Alias));
                return;
            }
            var responseText = await response.Content.ReadAsStringAsync();

            throw new ImporterUploadException($"{response.StatusCode} -{responseText}");
        }
        public static async Task <List <RepoResponse> > GetPrivateRepos()
        {
            using (var web = new HttpClient())
            {
                web.AddAuthorization();
                web.BaseAddress = new Uri(BaseEndPoint);
                var result = await web.GetAsync("/user/repos?visibility=private");

                if (result.IsSuccessStatusCode)
                {
                    var content = await result.Content.ReadAsStringAsync();

                    var data = Newtonsoft.Json.JsonConvert.DeserializeObject <List <RepoResponse> >(content);
                    return(data);
                }
                else
                {
                    return(null);
                }
            }
        }
        public static async Task <GitHubUser> GetUser()
        {
            using (var web = new HttpClient())
            {
                web.AddAuthorization();

                web.BaseAddress = new Uri(BaseEndPoint);

                var result = await web.GetAsync("/user");

                if (result.IsSuccessStatusCode)
                {
                    var content = await result.Content.ReadAsStringAsync();

                    var data = Newtonsoft.Json.JsonConvert.DeserializeObject <GitHubUser>(content);
                    return(data);
                }
                else
                {
                    return(null);
                }
            }
        }