using System; using Amazon.Lambda.Core; using Amazon.Lambda.APIGatewayEvents; using Newtonsoft.Json; using MySqlConnector; using Newtonsoft.Json.Linq; using System.Data; using classes; using System.Threading.Tasks; using System.Net; using Model.ResponseModel; using System.Net.Http; namespace PMF { public class IForceEvidence: Pmfbase { public async Task GetEvidence(APIGatewayProxyRequest request, ILambdaContext context) { APIGatewayProxyResponse response; string statement = "iForce::GetEvidence"; string userId = ""; MySqlDataReader _reader = null; try { string validationMessage = string.Empty; if (!Helper.IsRequestEmpty(request)) { var validRequest = Helper.ValidateRequestParameters(ref validationMessage, request.QueryStringParameters, "evidenceToken", "Id", "includeImage"); if (validRequest) { var evidenceToken = request.QueryStringParameters["evidenceToken"]; var includeImage = request.QueryStringParameters["includeImage"]; userId = request.QueryStringParameters["Id"]; var handler = new HttpClientHandler(); handler.ServerCertificateCustomValidationCallback = Helper.ServerCertificateCustomValidation; var client = new HttpClient(handler) { BaseAddress = new Uri(baseUrl), Timeout = TimeSpan.FromSeconds(Constants.TimeDefaultValue) }; try { var iForceResponse = await client.GetAsync($"IForce/queryevidence?EvidenceToken={evidenceToken}&IncludeImage={includeImage}"); statement = $"EvidenceToken={evidenceToken}, IncludeImage={includeImage}"; var body = await iForceResponse.Content.ReadAsStringAsync(); if (iForceResponse.StatusCode == HttpStatusCode.OK) { //_logger.WriteLog(userId, statement, body, "TMT"); var payload = JsonConvert.DeserializeObject(body); return HttpService.CreateResponse(200, payload: payload); } else { var error = JsonConvert.DeserializeObject(body); _logger.WriteLog(userId, statement, body, "TMT"); return HttpService.CreateResponse(200, payload: "Evidence unavailable"); } } catch (Exception) { return HttpService.CreateResponse(504, payload: Constants.NO_RESPONSE); } } else { response = HttpService.CreateResponse(400, payload: $"{validationMessage}"); } } else { _logger.LogMessage(context, $"Processing request failed invalid request"); return HttpService.CreateResponse(400, payload: "No parameters provided"); } _logger.WriteLog(userId, statement, response.Body, "TMT"); } catch (Exception ex) { _logger.WriteLog(userId, statement, ex.Message, "TMT"); return HttpService.CreateResponse(500, ex.Message); } finally { if (_reader != null) _reader.Close(); if (_con != null || _con.State == ConnectionState.Open) _con.Close(); } return response; } } }