Ejemplo n.º 1
0
        private static async Task <TestResult> CallAtlas(IngestXML xml, Options options)
        {
            var client = new HttpClient {
                BaseAddress = new Uri(options.Host)
            };

            try
            {
                var response = await client.PostAsync(
                    "v1/ingest/atlas" + (options.DoNotHidePayload ? "" : "?verbosity=HidePayload"),
                    new StringContent(JsonConvert.SerializeObject(xml), Encoding.UTF8,
                                      "application/json"));

                string content = null;
                if (response.Content != null)
                {
                    content = await response.Content.ReadAsStringAsync();
                }

                if (!response.IsSuccessStatusCode)
                {
                    return(new TestResult
                    {
                        Success = false,
                        FailureReason = $"Call to Atlas ingest failed {response.StatusCode} - {response.ReasonPhrase}",
                        Result = JsonConvert.DeserializeObject <MetadataIngestEvent>(content)
                    });
                }

                var mie = JsonConvert.DeserializeObject <MetadataIngestEvent>(content);
                if (mie.OverallStatus == PayloadStatus.Success)
                {
                    return(new TestResult
                    {
                        Success = true,
                        FailureReason = null,
                        Result = mie
                    });
                }

                return(new TestResult
                {
                    Success = false,
                    FailureReason = mie.PayloadResults
                                    .FirstOrDefault(f => !string.IsNullOrWhiteSpace(f.FailureReason))?.FailureReason,
                    Result = mie
                });
            }
            catch (Exception ex)
            {
                return(new TestResult
                {
                    Success = false,
                    FailureReason = $"Call to Atlas ingest failed {ex.Message}"
                });
            }
        }
Ejemplo n.º 2
0
        private static async Task <IEnumerable <TestResult> > CallLink(IngestXML xml, TestResult atlasResult, TestResult mrResult, Options options)
        {
            if (!atlasResult.Success)
            {
                return(new[] { new TestResult
                               {
                                   Success = false,
                                   FailureReason = atlasResult.FailureReason
                               } });
            }

            var client = new HttpClient {
                BaseAddress = new Uri(options.Host)
            };
            var results = new List <TestResult>();

            if (mrResult?.Result != null && atlasResult?.Result != null)
            {
                foreach (var payloadResult in mrResult.Result.PayloadResults)
                {
                    if (payloadResult.Status == PayloadStatus.Failure)
                    {
                        results.Add(new TestResult {
                            Success = false, FailureReason = payloadResult.FailureReason
                        });
                        continue;
                    }

                    if (payloadResult.Action == PayloadAction.Skipped)
                    {
                        results.Add(new TestResult {
                            Success = true
                        });
                        continue;
                    }

                    var link = new Link
                    {
                        IngestURN            = xml.IngestURN,
                        AtlasIds             = atlasResult.Result.PayloadResults.First().AtlasURNs,
                        MetadataRepositoryId = payloadResult.MetadataRepositoryURN
                    };

                    var response = await client.PostAsync(
                        "v1/ingest/link" + (options.DoNotHidePayload ? "" : "?verbosity=HidePayload"),
                        new StringContent(JsonConvert.SerializeObject(link), Encoding.UTF8,
                                          "application/json"));

                    if (response.IsSuccessStatusCode)
                    {
                        results.Add(new TestResult
                        {
                            Success = true
                        });
                    }
                }
            }
            else
            {
                results.Add(new TestResult
                {
                    Success       = false,
                    FailureReason = "No results in Metadata or Atlas Results"
                });
            }

            return(results);
        }