private static async Task PostDataToApolloEngine(FullTracesReport traceReport) { using (var stream = new MemoryStream()) { Serializer.Serialize(stream, traceReport); var client = new HttpClient { BaseAddress = new Uri("https://engine-report.apollodata.com/") }; client.DefaultRequestHeaders.Add("User-Agent", "apollo-engine-reporting"); client.DefaultRequestHeaders.Add("X-Api-Key", "service:TracingDemo-2351:d7aPwnVfRZjuTrOmp1XF4g"); var byteArrayContent = new ByteArrayContent(stream.ToArray()); byteArrayContent.Headers.ContentType = new MediaTypeHeaderValue("application/x-protobuf"); var result = await client.PostAsync("api/ingress/traces", byteArrayContent); var statusCode = result.StatusCode; } }
public static async Task <bool> SendResultToApollo(ExecutionResult result) { var traceResult = GetApolloTraceMetrics(result.Extensions); var traceQueries = new Dictionary <string, Traces>(); var root = GetRootNode(traceResult.Execution); var trace = new Trace { EndTime = traceResult.EndTime, StartTime = traceResult.StartTime, ClientName = "c1", ClientVersion = "v1", Root = root }; var traces = new Traces(); traces.trace.Add(trace); var traceReport = new FullTracesReport() { Header = new ReportHeader() { Hostname = "www.example.com", SchemaTag = "current" } }; var traceName = $"# {result.Operation.Name}\n{result.Query}"; //traceReport.TracesPerQueries.Add("# Foo\nquery Foo { user { email } }", traces); traceReport.TracesPerQueries.Add(traceName, traces); if (result.Operation.Name.ToString() != "IntrospectionQuery") { await PostDataToApolloEngine(traceReport); } return(true); }