public async Task <IActionResult> Process([FromQuery] string data, CancellationToken cancellationToken) { // Nothing to see here if (!IPAddress.IsLoopback(Request.HttpContext.Connection.RemoteIpAddress)) { return(NotFound()); } BridgeParameters request; try { request = JsonConvert.DeserializeObject <BridgeParameters>(data, DMApiConstants.SerializerSettings); } catch { logger.LogWarning("Error deserializing bridge request: {0}", data); return(BadRequest()); } logger.LogTrace("Bridge Request: {0}", data); var response = await bridgeDispatcher.ProcessBridgeRequest(request, cancellationToken).ConfigureAwait(false); if (response == null) { Forbid(); } var responseJson = JsonConvert.SerializeObject(response, DMApiConstants.SerializerSettings); logger.LogTrace("Bridge Response: {0}", responseJson); return(Content(responseJson, ApiHeaders.ApplicationJson)); }
public async Task <IActionResult> Process([FromQuery] string data, CancellationToken cancellationToken) { // Nothing to see here var remoteIP = Request.HttpContext.Connection.RemoteIpAddress; if (!IPAddress.IsLoopback(remoteIP)) { logger.LogTrace("Ignoring remote bridge request from {0}", remoteIP); return(NotFound()); } using (LogContext.PushProperty("Bridge", Interlocked.Increment(ref requestsProcessed))) { BridgeParameters request; try { request = JsonConvert.DeserializeObject <BridgeParameters>(data, DMApiConstants.SerializerSettings); } catch (Exception ex) { logger.LogWarning(ex, "Error deserializing bridge request: {0}", data); return(BadRequest()); } logger.LogTrace("Bridge Request: {0}", data); var response = await bridgeDispatcher.ProcessBridgeRequest(request, cancellationToken).ConfigureAwait(false); if (response == null) { Forbid(); } var responseJson = JsonConvert.SerializeObject(response, DMApiConstants.SerializerSettings); logger.LogTrace("Bridge Response: {0}", responseJson); return(Content(responseJson, MediaTypeNames.Application.Json)); } }