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}" }); } }
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); }