string SendViaAPIUploadOneReport(WebClient client, string filename, string xml) { byte[] answer = null; Version version = Assembly.GetExecutingAssembly().GetName().Version; client.Headers.Add(HttpRequestHeader.ContentType, "application/json"); client.Headers.Add(HttpRequestHeader.UserAgent, "PingCastle " + version.ToString(4)); try { var request = "{\"xmlReport\": \"" + HealthCheckReportMapBuilder.EscapeJsonString(xml) + "\",\"filename\":\"" + HealthCheckReportMapBuilder.EscapeJsonString(filename) + "\"}"; byte[] data = Encoding.ASCII.GetBytes(request); answer = client.UploadData(apiEndpoint + "api/Agent/SendReport", "POST", data); return(Encoding.Default.GetString(answer)); } catch (WebException ex) { if (ex.Response != null) { var responseStream = ex.Response.GetResponseStream(); if (responseStream != null) { using (var reader = new StreamReader(responseStream)) { string responseText = reader.ReadToEnd(); throw new ApplicationException(responseText); } } } throw; } }
// return JWT token void SendViaAPIGetJwtToken(WebClient client) { ServicePointManager.Expect100Continue = false; client.UseDefaultCredentials = true; client.Proxy = WebRequest.DefaultWebProxy; Version version = Assembly.GetExecutingAssembly().GetName().Version; client.Headers.Add(HttpRequestHeader.ContentType, "application/json"); client.Headers.Add(HttpRequestHeader.UserAgent, "PingCastle " + version.ToString(4)); //client.Headers.Add("Authorization", token); string token; byte[] answer = null; try { string location = Dns.GetHostEntry(Environment.MachineName).HostName; byte[] data = Encoding.Default.GetBytes("{\"apikey\": \"" + HealthCheckReportMapBuilder.EscapeJsonString(apiKey) + "\",\"location\": \"" + HealthCheckReportMapBuilder.EscapeJsonString(location) + "\"}"); answer = client.UploadData(apiEndpoint + "api/Agent/Login", "POST", data); token = Encoding.Default.GetString(answer); client.Headers.Add(HttpRequestHeader.Authorization, token); } catch (WebException ex) { if (ex.Response != null) { var responseStream = ex.Response.GetResponseStream(); if (responseStream != null) { using (var reader = new StreamReader(responseStream)) { string responseText = reader.ReadToEnd(); throw new UnauthorizedAccessException(responseText); } } } throw new UnauthorizedAccessException(ex.Message); } }