using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Net.Http; using System.Net.Security; using System.Security.Cryptography.X509Certificates; using System.Text; using System.Text.RegularExpressions; using Amazon.Lambda.APIGatewayEvents; using Newtonsoft.Json.Linq; namespace classes { public static class Helper { public static bool ValidateRequestParameters(ref string validationMessage, IDictionary QueryStringParameters, params string[] expectedParameters) { var builder = new StringBuilder(); var validator = new ResponseModel.APIModel.ValidData(); var validationContext = new ValidationContext(validator, null, null); var results = new List(); foreach (var parameter in expectedParameters) { if (!QueryStringParameters.ContainsKey(parameter)) { builder.Append(parameter).Append(","); continue; } else { switch (parameter) { case "noticeNumber": validator.NoticeNumber = QueryStringParameters[parameter].ToString(); break; case "strIdNumber": validator.StrIdNumber = QueryStringParameters[parameter].ToString(); break; case "strIdType": validator.StrIdType = QueryStringParameters[parameter].ToString(); break; case "strCognitoUuid": validator.StrCognitoUuid = QueryStringParameters[parameter].ToString(); break; case "includeImage": validator.IncludeImage = QueryStringParameters[parameter].ToString(); break; case "strMobileNumber": validator.StrMobileNumber = QueryStringParameters[parameter].ToString(); break; case "evidenceToken": validator.EvidenceToken = QueryStringParameters[parameter].ToString(); break; case "userId": validator.UserId = QueryStringParameters[parameter].ToString(); break; case "Id": validator.Id = QueryStringParameters[parameter].ToString(); break; case "strName": validator.Name = QueryStringParameters[parameter].ToString(); break; case "strSurname": validator.Surname = QueryStringParameters[parameter].ToString(); break; } } Validator.TryValidateObject(validator, validationContext, results, true); } if (builder.Length > 0) { validationMessage = "Missing Paramter(s): " + builder.ToString(); } var errors = results.Select(x => x).Distinct().ToList(); //dont show repeat errors foreach (var error in errors) { validationMessage += error.ErrorMessage + ", "; } return builder.Length == 0 && results.Count == 0; } public static bool ValidateRequestParameters(ref string validationMessage, JObject data, params string[] expectedParameters) { var builder = new StringBuilder(); var validator = new ResponseModel.APIModel.ValidData(); var validationContext = new ValidationContext(validator, null, null); var results = new List(); foreach (var parameter in expectedParameters) { if (data[parameter] == null) { builder.Append(parameter).Append(","); continue; } else { switch (parameter) { case "noticeNumber": validator.NoticeNumber = data[parameter].ToString(); break; case "strIdNumber": validator.StrIdNumber = data[parameter].ToString(); break; case "strIdType": validator.StrIdType = data[parameter].ToString(); break; case "strCognitoUuid": validator.StrCognitoUuid = data[parameter].ToString(); break; case "includeImage": validator.IncludeImage = data[parameter].ToString(); break; case "strMobileNumber": validator.StrMobileNumber = data[parameter].ToString(); break; case "evidenceToken": validator.EvidenceToken = data[parameter].ToString(); break; case "userId": validator.UserId = data[parameter].ToString(); break; case "Id": validator.Id = data[parameter].ToString(); break; case "strName": validator.Name = data[parameter].ToString(); break; case "strSurname": validator.Surname = data[parameter].ToString(); break; case "striVeriNumber": validator.StriVeriNumber = data[parameter].ToString(); break; case "strStatus": validator.StrStatus = data[parameter].ToString(); break; case "strAmount": validator.StrAmount = data[parameter].ToString(); break; } } Validator.TryValidateObject(validator, validationContext, results, true); } if (builder.Length > 0) { validationMessage = "Missing Paramter(s): " + builder.ToString(); } var errors = results.Select(x => x).Distinct().ToList(); //dont show repeat errors foreach (var error in errors) { validationMessage += error.ErrorMessage + ", "; } return builder.Length == 0 && results.Count == 0; } public static bool IsRequestEmpty(APIGatewayProxyRequest request) { bool emptyRequest = false; try { if (request.QueryStringParameters == null) { emptyRequest = true; } } catch { emptyRequest = true; } return emptyRequest; } public static bool IsValidDate(string date) { DateTime temp; return DateTime.TryParse(date, out temp); } public static bool IsAValidEmail(string email) { try { var emailAdd = new System.Net.Mail.MailAddress(email); return emailAdd.Address == email; } catch { return false; } } public static string CleanInput(string data) { string clean_input = ""; data = StripSlashes(data); data = data.Trim(); Regex regHtml = new System.Text.RegularExpressions.Regex("<[^>]*>"); data = regHtml.Replace(data, ""); clean_input = data.Trim(); clean_input = clean_input.Replace("'", "''"); //sql will parse single quote only if an extra quote is added. return clean_input; } private static string StripSlashes(string InputText) { // List of characters handled: // \000 null // \010 backspace // \011 horizontal tab // \012 new line // \015 carriage return // \032 substitute // \042 double quote // \047 single quote // \134 backslash // \140 grave accent string Result = InputText; try { Result = System.Text.RegularExpressions.Regex.Replace(InputText, @"(\\)([\000\010\011\012\015\032\042\047\134\140])", "$2"); } catch (Exception) { // handle any exception here } return Result; } public static bool ServerCertificateCustomValidation(HttpRequestMessage message, X509Certificate2 certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; } public static bool IsDigitsOnly(string noticeNumber) { return !string.IsNullOrEmpty(noticeNumber) && noticeNumber.All(char.IsDigit); } } }