public async Task <(ResponseMessage ResponseMessage, IMapping Mapping)> SendAsync( [NotNull] IProxyAndRecordSettings proxyAndRecordSettings, [NotNull] HttpClient client, [NotNull] RequestMessage requestMessage, [NotNull] string url) { Check.NotNull(client, nameof(client)); Check.NotNull(requestMessage, nameof(requestMessage)); Check.NotNull(url, nameof(url)); var originalUri = new Uri(requestMessage.Url); var requiredUri = new Uri(url); // Create HttpRequestMessage var httpRequestMessage = HttpRequestMessageHelper.Create(requestMessage, url); // Call the URL var httpResponseMessage = await client.SendAsync(httpRequestMessage, HttpCompletionOption.ResponseContentRead); // Create ResponseMessage bool deserializeJson = !_settings.DisableJsonBodyParsing.GetValueOrDefault(false); bool decompressGzipAndDeflate = !_settings.DisableRequestBodyDecompressing.GetValueOrDefault(false); var responseMessage = await HttpResponseMessageHelper.CreateAsync(httpResponseMessage, requiredUri, originalUri, deserializeJson, decompressGzipAndDeflate); IMapping mapping = null; if (HttpStatusRangeParser.IsMatch(proxyAndRecordSettings.SaveMappingForStatusCodePattern, responseMessage.StatusCode) && (proxyAndRecordSettings.SaveMapping || proxyAndRecordSettings.SaveMappingToFile)) { mapping = ToMapping(proxyAndRecordSettings, requestMessage, responseMessage); } return(responseMessage, mapping); }
public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "delete", Route = "Customers/{customerId}/Interactions/{interactionId}/actionplans/{actionplanId}/Outcomes/{outcomeId}")] HttpRequestMessage req, ILogger log, string customerId, string interactionId, string actionplanId, string outcomeId, [Inject] IResourceHelper resourceHelper, [Inject] IDeleteOutcomesHttpTriggerService outcomesDeleteService) { log.LogInformation("Delete Action Plan C# HTTP trigger function processed a request."); if (!Guid.TryParse(customerId, out var customerGuid)) { return(HttpResponseMessageHelper.BadRequest(customerGuid)); } if (!Guid.TryParse(interactionId, out var interactionGuid)) { return(HttpResponseMessageHelper.BadRequest(interactionGuid)); } if (!Guid.TryParse(actionplanId, out var actionplanGuid)) { return(HttpResponseMessageHelper.BadRequest(actionplanGuid)); } if (!Guid.TryParse(outcomeId, out var outcomesGuid)) { return(HttpResponseMessageHelper.BadRequest(outcomesGuid)); } var doesCustomerExist = await resourceHelper.DoesCustomerExist(customerGuid); if (!doesCustomerExist) { return(HttpResponseMessageHelper.NoContent(customerGuid)); } var doesInteractionExist = resourceHelper.DoesInteractionResourceExistAndBelongToCustomer(interactionGuid, customerGuid); if (!doesInteractionExist) { return(HttpResponseMessageHelper.NoContent(interactionGuid)); } var doesActionPlanExist = resourceHelper.DoesActionPlanResourceExistAndBelongToCustomer(actionplanGuid, interactionGuid, customerGuid); if (!doesActionPlanExist) { return(HttpResponseMessageHelper.NoContent(actionplanGuid)); } var outcome = await outcomesDeleteService.GetOutcomeForCustomerAsync(customerGuid, interactionGuid, actionplanGuid, outcomesGuid); if (outcome == null) { return(HttpResponseMessageHelper.NoContent(outcomesGuid)); } var outcomeDeleted = await outcomesDeleteService.DeleteAsync(outcome.OutcomeId.GetValueOrDefault()); return(!outcomeDeleted? HttpResponseMessageHelper.BadRequest(outcomesGuid) : HttpResponseMessageHelper.Ok()); }
public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "AdviserDetails/{adviserDetailId}")] HttpRequestMessage req, ILogger log, string adviserDetailId, [Inject] IHttpRequestMessageHelper httpRequestMessageHelper, [Inject] IGetAdviserDetailByIdHttpTriggerService getAdviserDetailByIdService) { var touchpointId = httpRequestMessageHelper.GetTouchpointId(req); if (string.IsNullOrEmpty(touchpointId)) { log.LogInformation("Unable to locate 'APIM-TouchpointId' in request header."); return(HttpResponseMessageHelper.BadRequest()); } log.LogInformation("Get Adviser Detail By Id C# HTTP trigger function processed a request. " + touchpointId); if (!Guid.TryParse(adviserDetailId, out var adviserDetailGuid)) { return(HttpResponseMessageHelper.BadRequest(adviserDetailGuid)); } var adviserDetail = await getAdviserDetailByIdService.GetAdviserDetailByIdAsync(adviserDetailGuid); return(adviserDetail == null ? HttpResponseMessageHelper.NoContent(adviserDetailGuid) : HttpResponseMessageHelper.Ok(JsonHelper.SerializeObject(adviserDetail))); }
public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "Customers/{customerId}")] HttpRequestMessage req, ILogger log, string customerId, [Inject] IResourceHelper resourceHelper, [Inject] IHttpRequestMessageHelper httpRequestMessageHelper, [Inject] IGetCustomerByIdHttpTriggerService getCustomerByIdService) { var touchpointId = httpRequestMessageHelper.GetTouchpointId(req); if (string.IsNullOrEmpty(touchpointId)) { log.LogInformation("Unable to locate 'APIM-TouchpointId' in request header"); return(HttpResponseMessageHelper.BadRequest()); } log.LogInformation("C# HTTP trigger function GetCustomerById processed a request. By Touchpoint " + touchpointId); if (!Guid.TryParse(customerId, out var customerGuid)) { return(HttpResponseMessageHelper.BadRequest(customerGuid)); } var doesCustomerExist = await resourceHelper.DoesCustomerExist(customerGuid); if (!doesCustomerExist) { return(HttpResponseMessageHelper.NoContent(customerGuid)); } var customer = await getCustomerByIdService.GetCustomerAsync(customerGuid); return(customer == null? HttpResponseMessageHelper.NoContent(customerGuid) : HttpResponseMessageHelper.Ok(JsonHelper.SerializeObject(customer))); }
public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "Customers/{customerId}/DiversityDetails")] HttpRequestMessage req, ILogger log, string customerId, [Inject] IResourceHelper resourceHelper, [Inject] IHttpRequestMessageHelper httpRequestMessageHelper, [Inject] IGetDiversityHttpTriggerService getDiversityService) { var touchpointId = httpRequestMessageHelper.GetTouchpointId(req); if (string.IsNullOrEmpty(touchpointId)) { log.LogInformation("Unable to locate 'TouchpointId' in request header."); return(HttpResponseMessageHelper.BadRequest()); } log.LogInformation("C# HTTP trigger function processed a request. " + touchpointId); if (!Guid.TryParse(customerId, out var customerGuid)) { return(HttpResponseMessageHelper.BadRequest(customerGuid)); } var doesCustomerExist = await resourceHelper.DoesCustomerExist(customerGuid); if (!doesCustomerExist) { return(HttpResponseMessageHelper.NoContent(customerGuid)); } var diversityId = await getDiversityService.GetDiversityDetailIdAsync(customerGuid); return(diversityId == null? HttpResponseMessageHelper.NoContent(customerGuid) : HttpResponseMessageHelper.Ok(diversityId.Value)); }
public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "Customers/{customerId}/Interactions/{interactionId}/actionplans/{actionplanId}/Outcomes")] HttpRequestMessage req, ILogger log, string customerId, string interactionId, string actionplanId, [Inject] IResourceHelper resourceHelper, [Inject] IHttpRequestMessageHelper httpRequestMessageHelper, [Inject] IGetOutcomesHttpTriggerService outcomesGetService) { var touchpointId = httpRequestMessageHelper.GetTouchpointId(req); if (string.IsNullOrEmpty(touchpointId)) { log.LogInformation("Unable to locate 'APIM-TouchpointId' in request header."); return(HttpResponseMessageHelper.BadRequest()); } log.LogInformation("Get Outcomes C# HTTP trigger function processed a request. " + touchpointId); if (!Guid.TryParse(customerId, out var customerGuid)) { return(HttpResponseMessageHelper.BadRequest(customerGuid)); } if (!Guid.TryParse(interactionId, out var interactionGuid)) { return(HttpResponseMessageHelper.BadRequest(interactionGuid)); } if (!Guid.TryParse(actionplanId, out var actionPlanGuid)) { return(HttpResponseMessageHelper.BadRequest(actionPlanGuid)); } //Check customer var doesCustomerExist = await resourceHelper.DoesCustomerExist(customerGuid); if (!doesCustomerExist) { return(HttpResponseMessageHelper.NoContent(customerGuid)); } //Check interactions var doesInteractionExist = resourceHelper.DoesInteractionResourceExistAndBelongToCustomer(interactionGuid, customerGuid); if (!doesInteractionExist) { return(HttpResponseMessageHelper.NoContent(interactionGuid)); } var doesActionPlanExist = resourceHelper.DoesActionPlanResourceExistAndBelongToCustomer(actionPlanGuid, interactionGuid, customerGuid); if (!doesActionPlanExist) { return(HttpResponseMessageHelper.NoContent(actionPlanGuid)); } var outcomes = await outcomesGetService.GetOutcomesAsync(customerGuid); return(outcomes == null? HttpResponseMessageHelper.NoContent(customerGuid) : HttpResponseMessageHelper.Ok(JsonHelper.SerializeObjects(outcomes))); }
public static async Task <HttpResponseMessage> Run3([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "Anonymise/Prod-to-Pre")] HttpRequestMessage req, ILogger log, [Inject] IResourceHelper resourceHelper, [Inject] IHttpRequestMessageHelper httpRequestMessageHelper, [Inject] IPostAnonymiseHttpTriggerService AnonymisePostService) { await AnonymisePostService.Anonymise(); return(HttpResponseMessageHelper.Created("Ok")); }
public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "Customers")] HttpRequestMessage req, ILogger log, [Inject] IResourceHelper resourceHelper, [Inject] IGetCustomerHttpTriggerService getAllCustomerService) { var customer = await getAllCustomerService.GetAllCustomerAsync(); return(customer == null? HttpResponseMessageHelper.NoContent(Guid.NewGuid()) : HttpResponseMessageHelper.Ok(JsonHelper.SerializeObject(customer))); }
public void GetCollectionByIdHtppTriggerService_Create_Test() { //Assign IHttpRequestHelper requestHelper = new HttpRequestHelper(); IHttpResponseMessageHelper responseMessageHelper = new HttpResponseMessageHelper(); ILoggerHelper mockLoggerHelper = MockingHelper.GetMockLoggerHelper(); IJsonHelper jsonHelper = new JsonHelper(); ICollectionDataStore mockDataStore = MockingHelper.GetMockCollectionDataStore(); IGetCollectionByIdHtppTriggerService service = new GetCollectionByIdHtppTriggerService(requestHelper, responseMessageHelper, mockLoggerHelper, jsonHelper, mockDataStore); //Assert Assert.IsNotNull(service); }
public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "Customers/{customerId}/Interactions/{interactionId}/WebChats/{webChatId}")] HttpRequestMessage req, ILogger log, string customerId, string interactionId, string webChatId, [Inject] IResourceHelper resourceHelper, [Inject] IHttpRequestMessageHelper httpRequestMessageHelper, [Inject] IGetWebChatByIdHttpTriggerService webChatGetService) { var touchpointId = httpRequestMessageHelper.GetTouchpointId(req); if (string.IsNullOrEmpty(touchpointId)) { log.LogInformation("Unable to locate 'TouchpointId' in request header."); return(HttpResponseMessageHelper.BadRequest()); } log.LogInformation("Get Web Chat By Id C# HTTP trigger function processed a request. By Touchpoint. " + touchpointId); if (!Guid.TryParse(customerId, out var customerGuid)) { return(HttpResponseMessageHelper.BadRequest(customerGuid)); } if (!Guid.TryParse(interactionId, out var interactionGuid)) { return(HttpResponseMessageHelper.BadRequest(interactionGuid)); } if (!Guid.TryParse(webChatId, out var webChatGuid)) { return(HttpResponseMessageHelper.BadRequest(webChatGuid)); } var doesCustomerExist = await resourceHelper.DoesCustomerExist(customerGuid); if (!doesCustomerExist) { return(HttpResponseMessageHelper.NoContent(customerGuid)); } var doesInteractionExist = resourceHelper.DoesInteractionResourceExistAndBelongToCustomer(interactionGuid, customerGuid); if (!doesInteractionExist) { return(HttpResponseMessageHelper.NoContent(interactionGuid)); } var webChat = await webChatGetService.GetWebChatForCustomerAsync(customerGuid, interactionGuid, webChatGuid); return(webChat == null? HttpResponseMessageHelper.NoContent(webChatGuid) : HttpResponseMessageHelper.Ok(JsonHelper.SerializeObject(webChat))); }
public HttpResponseMessage ExportContent(int appId, int zoneId, string contentTypeIdsString, string entityIdsString, string templateIdsString) { Log.Add($"export content z#{zoneId}, a#{appId}, ids:{entityIdsString}, templId:{templateIdsString}"); EnsureUserIsAdmin(); var currentApp = SxcAppForWebApi.AppBasedOnUserPermissions(zoneId, appId, UserInfo, Log);// AppWithRestrictedZoneChange(appId, zoneId); var appRuntime = new AppRuntime(currentApp, true, Log); var fileName = $"2sxcContentExport_{currentApp.NameWithoutSpecialChars()}_{currentApp.VersionSafe()}.xml"; var fileXml = new DnnXmlExporter().Init(zoneId, appId, appRuntime, false, contentTypeIdsString?.Split(';') ?? new string[0], entityIdsString?.Split(';') ?? new string[0], Log ).GenerateNiceXml(); return(HttpResponseMessageHelper.GetAttachmentHttpResponseMessage(fileName, "text/xml", fileXml)); }
public void GetCollectionsHttpTriggerService_Process_Test() { //Assign IHttpRequestHelper requestHelper = new HttpRequestHelper(); IHttpResponseMessageHelper responseMessageHelper = new HttpResponseMessageHelper(); ILoggerHelper mockLoggerHelper = MockingHelper.GetMockLoggerHelper(); IJsonHelper jsonHelper = new JsonHelper(); IGetCollectionsHttpTriggerService service = new GetCollectionsHttpTriggerService(new HttpRequestHelper(), new LoggerHelper(), new CollectionDataStore()); //Act IEnumerable <Collection> result = service.ProcessRequestAsync().Result; //Assert Assert.IsNotNull(service); Assert.IsNotNull(result); }
public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "AdviserDetails")] HttpRequestMessage req, ILogger log, [Inject] IHttpRequestMessageHelper httpRequestMessageHelper, [Inject] IValidate validate, [Inject] IPostAdviserDetailHttpTriggerService adviserDetailsPostService) { var touchpointId = httpRequestMessageHelper.GetTouchpointId(req); if (string.IsNullOrEmpty(touchpointId)) { log.LogInformation("Unable to locate 'APIM-TouchpointId' in request header."); return(HttpResponseMessageHelper.BadRequest()); } log.LogInformation("Post Adviser Detail C# HTTP trigger function processed a request. " + touchpointId); Models.AdviserDetail adviserDetailRequest; try { adviserDetailRequest = await httpRequestMessageHelper.GetAdviserDetailFromRequest <Models.AdviserDetail>(req); } catch (JsonException ex) { return(HttpResponseMessageHelper.UnprocessableEntity(ex)); } if (adviserDetailRequest == null) { return(HttpResponseMessageHelper.UnprocessableEntity(req)); } adviserDetailRequest.LastModifiedTouchpointId = touchpointId; var errors = validate.ValidateResource(adviserDetailRequest, true); if (errors != null && errors.Any()) { return(HttpResponseMessageHelper.UnprocessableEntity(errors)); } var adviserDetail = await adviserDetailsPostService.CreateAsync(adviserDetailRequest); return(adviserDetail == null ? HttpResponseMessageHelper.BadRequest() : HttpResponseMessageHelper.Created(JsonHelper.SerializeObject(adviserDetail))); }
public void GetCollectionByIdHtppTriggerService_Process_Test() { //Assign IHttpRequestHelper requestHelper = new HttpRequestHelper(); IHttpResponseMessageHelper responseMessageHelper = new HttpResponseMessageHelper(); ILoggerHelper mockLoggerHelper = MockingHelper.GetMockLoggerHelper(); IJsonHelper jsonHelper = new JsonHelper(); ICollectionDataStore dataStore = new CollectionDataStore(); IGetCollectionByIdHtppTriggerService getCollectionByIdHtppTriggerService = new GetCollectionByIdHtppTriggerService(requestHelper, responseMessageHelper, mockLoggerHelper, jsonHelper, dataStore); //Act var result = getCollectionByIdHtppTriggerService.ProcessRequestAsync(Guid.NewGuid().ToString()).Result; //Assert Assert.IsNotNull(getCollectionByIdHtppTriggerService); Assert.IsNotNull(result); Assert.AreEqual(typeof(Collection), result.GetType()); }
public HttpResponseMessage ExportApp(int appId, int zoneId, bool includeContentGroups, bool resetAppGuid) { Log.Add($"export app z#{zoneId}, a#{appId}, incl:{includeContentGroups}, reset:{resetAppGuid}"); EnsureUserIsAdmin(); // must happen inside here, as it's opened as a new browser window, so not all headers exist var currentApp = SxcAppForWebApi.AppBasedOnUserPermissions(zoneId, appId, UserInfo, Log); // AppWithRestrictedZoneChange(appId, zoneId); var zipExport = new ZipExport(zoneId, appId, currentApp.Folder, currentApp.PhysicalPath, Log); var addOnWhenContainingContent = includeContentGroups ? "_withPageContent_" + DateTime.Now.ToString("yyyy-MM-ddTHHmm") : ""; var fileName = $"2sxcApp_{currentApp.NameWithoutSpecialChars()}_{currentApp.VersionSafe()}{addOnWhenContainingContent}.zip"; Log.Add($"file name:{fileName}"); using (var fileStream = zipExport.ExportApp(includeContentGroups, resetAppGuid)) { var fileBytes = fileStream.ToArray(); Log.Add("will stream so many bytes:" + fileBytes.Length); return(HttpResponseMessageHelper.GetAttachmentHttpResponseMessage(fileName, "application/octet-stream", new MemoryStream(fileBytes))); } }
public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "patch", Route = "Customers/{customerId}/Addresses/{addressId}")] HttpRequestMessage req, ILogger log, string customerId, string addressId, [Inject] IResourceHelper resourceHelper, [Inject] IHttpRequestMessageHelper httpRequestMessageHelper, [Inject] IValidate validate, [Inject] IPatchAddressHttpTriggerService addressPatchService) { var touchpointId = httpRequestMessageHelper.GetTouchpointId(req); if (string.IsNullOrEmpty(touchpointId)) { log.LogInformation("Unable to locate 'TouchpointId' in request header"); return(HttpResponseMessageHelper.BadRequest()); } var ApimURL = httpRequestMessageHelper.GetApimURL(req); if (string.IsNullOrEmpty(ApimURL)) { log.LogInformation("Unable to locate 'apimurl' in request header"); return(HttpResponseMessageHelper.BadRequest()); } log.LogInformation("Patch Address C# HTTP trigger function processed a request. By Touchpoint " + touchpointId); if (!Guid.TryParse(customerId, out var customerGuid)) { return(HttpResponseMessageHelper.BadRequest(customerGuid)); } if (!Guid.TryParse(addressId, out var addressGuid)) { return(HttpResponseMessageHelper.BadRequest(addressGuid)); } AddressPatch addressPatchRequest; try { addressPatchRequest = await httpRequestMessageHelper.GetAddressFromRequest <AddressPatch>(req); } catch (JsonException ex) { return(HttpResponseMessageHelper.UnprocessableEntity(ex)); } if (addressPatchRequest == null) { return(HttpResponseMessageHelper.UnprocessableEntity(req)); } addressPatchRequest.LastModifiedTouchpointId = touchpointId; var errors = validate.ValidateResource(addressPatchRequest, false); if (errors != null && errors.Any()) { return(HttpResponseMessageHelper.UnprocessableEntity(errors)); } var doesCustomerExist = await resourceHelper.DoesCustomerExist(customerGuid); if (!doesCustomerExist) { return(HttpResponseMessageHelper.NoContent(customerGuid)); } var isCustomerReadOnly = await resourceHelper.IsCustomerReadOnly(customerGuid); if (isCustomerReadOnly) { return(HttpResponseMessageHelper.Forbidden(customerGuid)); } var addressForCustomer = await addressPatchService.GetAddressForCustomerAsync(customerGuid, addressGuid); if (addressForCustomer == null) { return(HttpResponseMessageHelper.NoContent(addressGuid)); } var patchedAddress = addressPatchService.PatchResource(addressForCustomer, addressPatchRequest); if (patchedAddress == null) { return(HttpResponseMessageHelper.NoContent(addressGuid)); } var updatedAddress = await addressPatchService.UpdateCosmosAsync(patchedAddress, addressGuid); if (updatedAddress != null) { await addressPatchService.SendToServiceBusQueueAsync(updatedAddress, customerGuid, ApimURL); } return(updatedAddress == null? HttpResponseMessageHelper.BadRequest(addressGuid) : HttpResponseMessageHelper.Ok(JsonHelper.SerializeObject(updatedAddress))); }
public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "patch", Route = "Customers/{customerId}/Interactions/{interactionId}/Transfers/{transferId}")] HttpRequestMessage req, ILogger log, string customerId, string interactionId, string transferId, [Inject] IResourceHelper resourceHelper, [Inject] IHttpRequestMessageHelper httpRequestMessageHelper, [Inject] IValidate validate, [Inject] IPatchTransferHttpTriggerService transferPatchService) { var touchpointId = httpRequestMessageHelper.GetTouchpointId(req); if (string.IsNullOrEmpty(touchpointId)) { log.LogInformation("Unable to locate 'TouchpointId' in request header."); return(HttpResponseMessageHelper.BadRequest()); } var ApimURL = httpRequestMessageHelper.GetApimURL(req); if (string.IsNullOrEmpty(ApimURL)) { log.LogInformation("Unable to locate 'apimurl' in request header"); return(HttpResponseMessageHelper.BadRequest()); } log.LogInformation("Patch Transfer C# HTTP trigger function processed a request. By Touchpoint. " + touchpointId); if (!Guid.TryParse(customerId, out var customerGuid)) { return(HttpResponseMessageHelper.BadRequest(customerGuid)); } if (!Guid.TryParse(interactionId, out var interactionGuid)) { return(HttpResponseMessageHelper.BadRequest(interactionGuid)); } if (!Guid.TryParse(transferId, out var transferGuid)) { return(HttpResponseMessageHelper.BadRequest(transferGuid)); } Models.TransferPatch transferPatchRequest; try { transferPatchRequest = await httpRequestMessageHelper.GetTransferFromRequest <Models.TransferPatch>(req); } catch (JsonException ex) { return(HttpResponseMessageHelper.UnprocessableEntity(ex)); } if (transferPatchRequest == null) { return(HttpResponseMessageHelper.UnprocessableEntity(req)); } transferPatchRequest.LastModifiedTouchpointId = touchpointId; var errors = validate.ValidateResource(transferPatchRequest, false); if (errors != null && errors.Any()) { return(HttpResponseMessageHelper.UnprocessableEntity(errors)); } var doesCustomerExist = await resourceHelper.DoesCustomerExist(customerGuid); if (!doesCustomerExist) { return(HttpResponseMessageHelper.NoContent(customerGuid)); } var isCustomerReadOnly = await resourceHelper.IsCustomerReadOnly(customerGuid); if (isCustomerReadOnly) { return(HttpResponseMessageHelper.Forbidden(customerGuid)); } var doesInteractionExist = resourceHelper.DoesInteractionResourceExistAndBelongToCustomer(interactionGuid, customerGuid); if (!doesInteractionExist) { return(HttpResponseMessageHelper.NoContent(interactionGuid)); } var transfer = await transferPatchService.GetTransferForCustomerAsync(customerGuid, transferGuid); if (transfer == null) { return(HttpResponseMessageHelper.NoContent(transferGuid)); } var updatedTransfer = await transferPatchService.UpdateAsync(transfer, transferPatchRequest); if (updatedTransfer != null) { await transferPatchService.SendToServiceBusQueueAsync(transfer, customerGuid, ApimURL); } return(updatedTransfer == null? HttpResponseMessageHelper.BadRequest(transferGuid) : HttpResponseMessageHelper.Ok(JsonHelper.SerializeObject(updatedTransfer))); }
public static async Task <HttpResponseMessage> RunAsync([HttpTrigger(AuthorizationLevel.Anonymous, "patch", Route = "customers/{customerId}/ContactDetails/{contactid}")] HttpRequestMessage req, ILogger log, string customerId, string contactid, [Inject] IResourceHelper resourceHelper, [Inject] IHttpRequestMessageHelper httpRequestMessageHelper, [Inject] IValidate validate, [Inject] IPatchContactDetailsHttpTriggerService contactdetailsPatchService, [Inject] IDocumentDBProvider provider) { var touchpointId = httpRequestMessageHelper.GetTouchpointId(req); if (string.IsNullOrEmpty(touchpointId)) { log.LogInformation("Unable to locate 'TouchpointId' in request header."); return(HttpResponseMessageHelper.BadRequest()); } var ApimURL = httpRequestMessageHelper.GetApimURL(req); if (string.IsNullOrEmpty(ApimURL)) { log.LogInformation("Unable to locate 'apimurl' in request header"); return(HttpResponseMessageHelper.BadRequest()); } log.LogInformation("C# HTTP trigger function Patch Contact processed a request. " + touchpointId); if (!Guid.TryParse(customerId, out var customerGuid)) { return(HttpResponseMessageHelper.BadRequest(customerGuid)); } if (!Guid.TryParse(contactid, out var contactGuid)) { return(HttpResponseMessageHelper.BadRequest(contactGuid)); } ContactDetailsPatch contactdetailsPatchRequest; try { contactdetailsPatchRequest = await httpRequestMessageHelper.GetContactDetailsFromRequest <ContactDetailsPatch>(req); } catch (JsonException ex) { return(HttpResponseMessageHelper.UnprocessableEntity(ex)); } if (contactdetailsPatchRequest == null) { return(HttpResponseMessageHelper.UnprocessableEntity(req)); } contactdetailsPatchRequest.LastModifiedTouchpointId = touchpointId; var doesCustomerExist = await resourceHelper.DoesCustomerExist(customerGuid); if (!doesCustomerExist) { return(HttpResponseMessageHelper.NoContent(customerGuid)); } var isCustomerReadOnly = await resourceHelper.IsCustomerReadOnly(customerGuid); if (isCustomerReadOnly) { return(HttpResponseMessageHelper.Forbidden(customerGuid)); } var contactdetails = await contactdetailsPatchService.GetContactDetailsForCustomerAsync(customerGuid, contactGuid); if (contactdetails == null) { return(HttpResponseMessageHelper.NoContent(contactGuid)); } var errors = validate.ValidateResource(contactdetailsPatchRequest, contactdetails, false); if (!string.IsNullOrEmpty(contactdetailsPatchRequest.EmailAddress)) { var contacts = await provider.GetContactsByEmail(contactdetailsPatchRequest.EmailAddress); if (contacts != null) { foreach (var contact in contacts) { var isReadOnly = await provider.DoesCustomerHaveATerminationDate(contact.CustomerId.GetValueOrDefault()); if (!isReadOnly && contact.CustomerId != contactdetails.CustomerId) { //if a customer that has the same email address is not readonly (has date of termination) //then email address on the request cannot be used. return(HttpResponseMessageHelper.Conflict()); } } } } // Set Digital account properties so that contentenhancer can queue change on digital identity topic. var diaccount = await provider.GetIdentityForCustomerAsync(contactdetails.CustomerId.Value); if (diaccount != null) { if (contactdetailsPatchRequest.EmailAddress == string.Empty) { if (errors == null) { errors = new List <System.ComponentModel.DataAnnotations.ValidationResult>(); } errors.Add(new System.ComponentModel.DataAnnotations.ValidationResult("Email Address cannot be removed because it is associated with a Digital Account", new List <string>() { "EmailAddress" })); return(HttpResponseMessageHelper.UnprocessableEntity(errors)); } if (!string.IsNullOrEmpty(contactdetails.EmailAddress) && !string.IsNullOrEmpty(contactdetailsPatchRequest.EmailAddress) && contactdetails.EmailAddress?.ToLower() != contactdetailsPatchRequest.EmailAddress?.ToLower() && diaccount.IdentityStoreId.HasValue) { contactdetails.SetDigitalAccountEmailChanged(contactdetailsPatchRequest.EmailAddress?.ToLower(), diaccount.IdentityStoreId.Value); } } if (errors != null && errors.Any()) { return(HttpResponseMessageHelper.UnprocessableEntity(errors)); } var updatedContactDetails = await contactdetailsPatchService.UpdateAsync(contactdetails, contactdetailsPatchRequest); if (updatedContactDetails != null) { await contactdetailsPatchService.SendToServiceBusQueueAsync(updatedContactDetails, customerGuid, ApimURL); } return(updatedContactDetails == null? HttpResponseMessageHelper.BadRequest(contactGuid) : HttpResponseMessageHelper.Ok(JsonHelper.SerializeObject(updatedContactDetails))); }
public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "Customers/{customerId}/DiversityDetails")] HttpRequestMessage req, ILogger log, string customerId, [Inject] IResourceHelper resourceHelper, [Inject] IHttpRequestMessageHelper httpRequestMessageHelper, [Inject] IValidate validate, [Inject] IPostDiversityHttpTriggerService postDiversityService) { var touchpointId = httpRequestMessageHelper.GetTouchpointId(req); if (string.IsNullOrEmpty(touchpointId)) { log.LogInformation("Unable to locate 'TouchpointId' in request header."); return(HttpResponseMessageHelper.BadRequest()); } log.LogInformation("C# HTTP trigger function processed a request. " + touchpointId); if (!Guid.TryParse(customerId, out var customerGuid)) { return(HttpResponseMessageHelper.BadRequest(customerGuid)); } Models.Diversity diversityRequest; try { diversityRequest = await httpRequestMessageHelper.GetDiversityFromRequest <Models.Diversity>(req); } catch (JsonException ex) { return(HttpResponseMessageHelper.UnprocessableEntity(ex)); } if (diversityRequest == null) { return(HttpResponseMessageHelper.UnprocessableEntity(req)); } diversityRequest.SetIds(customerGuid, touchpointId); var errors = validate.ValidateResource(diversityRequest); if (errors != null && errors.Any()) { return(HttpResponseMessageHelper.UnprocessableEntity(errors)); } var doesCustomerExist = await resourceHelper.DoesCustomerExist(customerGuid); if (!doesCustomerExist) { return(HttpResponseMessageHelper.NoContent(customerGuid)); } var isCustomerReadOnly = await resourceHelper.IsCustomerReadOnly(customerGuid); if (isCustomerReadOnly) { return(HttpResponseMessageHelper.Forbidden(customerGuid)); } var doesDiversityDetailsExist = postDiversityService.DoesDiversityDetailsExistForCustomer(customerGuid); if (doesDiversityDetailsExist) { return(HttpResponseMessageHelper.Conflict()); } var diversity = await postDiversityService.CreateAsync(diversityRequest); return(diversity == null ? HttpResponseMessageHelper.BadRequest(customerGuid) : HttpResponseMessageHelper.Created(JsonHelper.SerializeObject(diversity))); }
public static async Task <HttpResponseMessage> RunAsync([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "customers/{customerId}/ContactDetails/")] HttpRequestMessage req, ILogger log, string customerId, [Inject] IResourceHelper resourceHelper, [Inject] IHttpRequestMessageHelper httpRequestMessageHelper, [Inject] IValidate validate, [Inject] IPostContactDetailsHttpTriggerService contactdetailsPostService, [Inject] IDocumentDBProvider provider) { var touchpointId = httpRequestMessageHelper.GetTouchpointId(req); if (string.IsNullOrEmpty(touchpointId)) { log.LogInformation("Unable to locate 'TouchpointId' in request header."); return(HttpResponseMessageHelper.BadRequest()); } var ApimURL = httpRequestMessageHelper.GetApimURL(req); if (string.IsNullOrEmpty(ApimURL)) { log.LogInformation("Unable to locate 'apimurl' in request header"); return(HttpResponseMessageHelper.BadRequest()); } log.LogInformation("C# HTTP trigger function Post Contact processed a request. " + touchpointId); if (!Guid.TryParse(customerId, out var customerGuid)) { return(HttpResponseMessageHelper.BadRequest(customerGuid)); } Models.ContactDetails contactdetailsRequest; try { contactdetailsRequest = await httpRequestMessageHelper.GetContactDetailsFromRequest <Contact.Models.ContactDetails>(req); } catch (JsonException ex) { return(HttpResponseMessageHelper.UnprocessableEntity(ex)); } if (contactdetailsRequest == null) { return(HttpResponseMessageHelper.UnprocessableEntity(req)); } contactdetailsRequest.SetIds(customerGuid, touchpointId); var errors = validate.ValidateResource(contactdetailsRequest, null, true); if (errors != null && errors.Any()) { return(HttpResponseMessageHelper.UnprocessableEntity(errors)); } var doesCustomerExist = await resourceHelper.DoesCustomerExist(customerGuid); if (!doesCustomerExist) { return(HttpResponseMessageHelper.NoContent(customerGuid)); } var isCustomerReadOnly = await resourceHelper.IsCustomerReadOnly(customerGuid); if (isCustomerReadOnly) { return(HttpResponseMessageHelper.Forbidden(customerGuid)); } var doesContactDetailsExist = contactdetailsPostService.DoesContactDetailsExistForCustomer(customerGuid); if (doesContactDetailsExist) { return(HttpResponseMessageHelper.Conflict()); } if (!string.IsNullOrEmpty(contactdetailsRequest.EmailAddress)) { var contacts = await provider.GetContactsByEmail(contactdetailsRequest.EmailAddress); if (contacts != null) { foreach (var contact in contacts) { var isReadOnly = await provider.DoesCustomerHaveATerminationDate(contact.CustomerId.GetValueOrDefault()); if (!isReadOnly) { //if a customer that has the same email address is not readonly (has date of termination) //then email address on the request cannot be used. return(HttpResponseMessageHelper.Conflict()); } } } } var contactDetails = await contactdetailsPostService.CreateAsync(contactdetailsRequest); if (contactDetails != null) { await contactdetailsPostService.SendToServiceBusQueueAsync(contactDetails, ApimURL); } return(contactDetails == null ? HttpResponseMessageHelper.BadRequest(customerGuid) : HttpResponseMessageHelper.Created(JsonHelper.SerializeObject(contactDetails))); }
public static Task <HttpResponseMessage> ToHttpResponseAsync(this ResponseBase response) { return(Task.FromResult(HttpResponseMessageHelper.GetJsonOk(response))); }
public static Task <HttpResponseMessage> ToHttpVideoResponseAsync(this byte[] response) { return(Task.FromResult(HttpResponseMessageHelper.GetVideoOk(response))); }
public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "patch", Route = "Customers/{customerId}/DiversityDetails/{diversityId}")] HttpRequestMessage req, ILogger log, string customerId, string diversityId, [Inject] IResourceHelper resourceHelper, [Inject] IHttpRequestMessageHelper httpRequestMessageHelper, [Inject] IValidate validate, [Inject] IPatchDiversityHttpTriggerService patchDiversityService) { var touchpointId = httpRequestMessageHelper.GetTouchpointId(req); if (string.IsNullOrEmpty(touchpointId)) { log.LogInformation("Unable to locate 'TouchpointId' in request header"); return(HttpResponseMessageHelper.BadRequest()); } log.LogInformation("C# HTTP trigger function Patch Customer processed a request. By Touchpoint " + touchpointId); if (!Guid.TryParse(customerId, out var customerGuid)) { return(HttpResponseMessageHelper.BadRequest(customerGuid)); } if (!Guid.TryParse(diversityId, out var diversityGuid)) { return(HttpResponseMessageHelper.BadRequest(diversityGuid)); } Models.DiversityPatch diversityPatchRequest; try { diversityPatchRequest = await httpRequestMessageHelper.GetDiversityFromRequest <Models.DiversityPatch>(req); } catch (JsonException ex) { return(HttpResponseMessageHelper.UnprocessableEntity(ex)); } if (diversityPatchRequest == null) { return(HttpResponseMessageHelper.UnprocessableEntity(req)); } diversityPatchRequest.LastModifiedBy = touchpointId; // validate the request var errors = validate.ValidateResource(diversityPatchRequest); if (errors.Any()) { return(HttpResponseMessageHelper.UnprocessableEntity(errors)); } var doesCustomerExist = await resourceHelper.DoesCustomerExist(customerGuid); if (!doesCustomerExist) { return(HttpResponseMessageHelper.NoContent(customerGuid)); } var isCustomerReadOnly = await resourceHelper.IsCustomerReadOnly(customerGuid); if (isCustomerReadOnly) { return(HttpResponseMessageHelper.Forbidden(customerGuid)); } var diversity = await patchDiversityService.GetDiversityByIdAsync(customerGuid, diversityGuid); if (diversity == null) { return(HttpResponseMessageHelper.NoContent(customerGuid)); } var updatedDiversity = await patchDiversityService.UpdateDiversityAsync(diversity, diversityPatchRequest); return(updatedDiversity == null? HttpResponseMessageHelper.BadRequest(customerGuid) : HttpResponseMessageHelper.Ok()); }
public static Task<HttpResponseMessage> ToHttpResponseAsync(this object response, Dictionary<string, string> headers = null) { return Task.FromResult(HttpResponseMessageHelper.GetJsonOk(response, headers)); }
public static HttpResponseMessage ToHttpResponse(this ResponseBase response, Dictionary<string, string> headers = null) { return HttpResponseMessageHelper.GetJsonOk(response, headers); }
public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "customers/{customerId}/interactions/{interactionId}/sessions/")] HttpRequestMessage req, ILogger log, string customerId, string interactionId, [Inject] IResourceHelper resourceHelper, [Inject] IHttpRequestMessageHelper httpRequestMessageHelper, [Inject] IValidate validate, [Inject] IPostSessionHttpTriggerService sessionPostService) { var touchpointId = httpRequestMessageHelper.GetTouchpointId(req); if (string.IsNullOrEmpty(touchpointId)) { log.LogInformation("Unable to locate 'TouchpointId' in request header."); return(HttpResponseMessageHelper.BadRequest()); } var ApimURL = httpRequestMessageHelper.GetApimURL(req); if (string.IsNullOrEmpty(ApimURL)) { log.LogInformation("Unable to locate 'apimurl' in request header"); return(HttpResponseMessageHelper.BadRequest()); } log.LogInformation("C# HTTP trigger function Post Session processed a request. " + touchpointId); if (!Guid.TryParse(customerId, out var customerGuid)) { return(HttpResponseMessageHelper.BadRequest(customerGuid)); } if (!Guid.TryParse(interactionId, out var interactionGuid)) { return(HttpResponseMessageHelper.BadRequest(interactionGuid)); } Session sessionRequest; try { sessionRequest = await httpRequestMessageHelper.GetSessionFromRequest <Session>(req); } catch (JsonException ex) { return(HttpResponseMessageHelper.UnprocessableEntity(ex)); } if (sessionRequest == null) { return(HttpResponseMessageHelper.UnprocessableEntity(req)); } sessionRequest.SetIds(customerGuid, interactionGuid, touchpointId); var errors = validate.ValidateResource(sessionRequest); if (errors != null && errors.Any()) { return(HttpResponseMessageHelper.UnprocessableEntity(errors)); } var doesCustomerExist = await resourceHelper.DoesCustomerExist(customerGuid); if (!doesCustomerExist) { return(HttpResponseMessageHelper.NoContent(customerGuid)); } var isCustomerReadOnly = await resourceHelper.IsCustomerReadOnly(customerGuid); if (isCustomerReadOnly) { return(HttpResponseMessageHelper.Forbidden(customerGuid)); } var doesInteractionExist = resourceHelper.DoesInteractionResourceExistAndBelongToCustomer(interactionGuid, customerGuid); if (!doesInteractionExist) { return(HttpResponseMessageHelper.NoContent(interactionGuid)); } var session = await sessionPostService.CreateAsync(sessionRequest); if (session != null) { await sessionPostService.SendToServiceBusQueueAsync(session, ApimURL); } return(session == null ? HttpResponseMessageHelper.BadRequest(customerGuid) : HttpResponseMessageHelper.Created(JsonHelper.SerializeObject(session))); }
public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "URLEndpoint")] HttpRequestMessage req, ILogger log, [Inject] IResourceHelper resourceHelper, [Inject] IHttpRequestMessageHelper httpRequestMessageHelper) { string noti; string bearer = string.Empty; Models.Notification notification; try { notification = await httpRequestMessageHelper.GetMessageFromRequest <Models.Notification>(req); } catch (JsonException ex) { return(HttpResponseMessageHelper.UnprocessableEntity(ex)); } if (notification == null) { return(HttpResponseMessageHelper.UnprocessableEntity(req)); } string authHeader = string.Empty; if (req.Headers.TryGetValues("Authorization", out IEnumerable <string> authToken)) { authHeader = authToken.First(); } else { log.LogInformation("Authorization header error !"); } if (notification.ResourceURL != null) { if (notification.ResourceURL.ToString().Contains("collections")) { var lastIndexOf = notification.ResourceURL.ToString().LastIndexOf("/", StringComparison.Ordinal); if (lastIndexOf != -1) { var collectionId = notification.ResourceURL.ToString().Substring(lastIndexOf + 1); if (Guid.TryParse(collectionId, out var collectionGuid)) { notification.CollectionId = collectionGuid; } } } } noti = "Customer Id : " + notification.CustomerId + Environment.NewLine + "URL : " + notification.ResourceURL + Environment.NewLine + "LastModifiedDate : " + notification.LastModifiedDate + Environment.NewLine + "Touchpoint Id : " + notification.TouchpointId + Environment.NewLine + "Collection Id : " + notification.CollectionId + Environment.NewLine + "Bearer : " + authHeader; log.LogInformation(noti); await SaveNotificationToDatabase.SaveNotificationToDBAsync(notification); return(HttpResponseMessageHelper.Ok(noti)); }
public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "patch", Route = "Customers/{customerId}/Interactions/{interactionId}/actionplans/{actionplanId}/Outcomes/{OutcomeId}")] HttpRequestMessage req, ILogger log, string customerId, string interactionId, string actionplanId, string OutcomeId, [Inject] IResourceHelper resourceHelper, [Inject] IHttpRequestMessageHelper httpRequestMessageHelper, [Inject] IValidate validate, [Inject] IPatchOutcomesHttpTriggerService outcomesPatchService) { var touchpointId = httpRequestMessageHelper.GetTouchpointId(req); if (string.IsNullOrEmpty(touchpointId)) { log.LogInformation("Unable to locate 'APIM-TouchpointId' in request header."); return(HttpResponseMessageHelper.BadRequest()); } var ApimURL = httpRequestMessageHelper.GetApimURL(req); if (string.IsNullOrEmpty(ApimURL)) { log.LogInformation("Unable to locate 'apimurl' in request header"); return(HttpResponseMessageHelper.BadRequest()); } log.LogInformation("Patch Action Plan C# HTTP trigger function processed a request. " + touchpointId); if (!Guid.TryParse(customerId, out var customerGuid)) { return(HttpResponseMessageHelper.BadRequest(customerGuid)); } if (!Guid.TryParse(interactionId, out var interactionGuid)) { return(HttpResponseMessageHelper.BadRequest(interactionGuid)); } if (!Guid.TryParse(actionplanId, out var actionplanGuid)) { return(HttpResponseMessageHelper.BadRequest(actionplanGuid)); } if (!Guid.TryParse(OutcomeId, out var outcomesGuid)) { return(HttpResponseMessageHelper.BadRequest(outcomesGuid)); } Models.OutcomesPatch outcomesPatchRequest; try { outcomesPatchRequest = await httpRequestMessageHelper.GetOutcomesFromRequest <Models.OutcomesPatch>(req); } catch (JsonException ex) { return(HttpResponseMessageHelper.UnprocessableEntity(ex)); } if (outcomesPatchRequest == null) { return(HttpResponseMessageHelper.UnprocessableEntity(req)); } outcomesPatchRequest.LastModifiedTouchpointId = touchpointId; var errors = validate.ValidateResource(outcomesPatchRequest); if (errors != null && errors.Any()) { return(HttpResponseMessageHelper.UnprocessableEntity(errors)); } var doesCustomerExist = await resourceHelper.DoesCustomerExist(customerGuid); if (!doesCustomerExist) { return(HttpResponseMessageHelper.NoContent(customerGuid)); } var isCustomerReadOnly = await resourceHelper.IsCustomerReadOnly(customerGuid); if (isCustomerReadOnly) { return(HttpResponseMessageHelper.Forbidden(customerGuid)); } var doesInteractionExist = resourceHelper.DoesInteractionResourceExistAndBelongToCustomer(interactionGuid, customerGuid); if (!doesInteractionExist) { return(HttpResponseMessageHelper.NoContent(interactionGuid)); } var doesActionPlanExist = resourceHelper.DoesActionPlanResourceExistAndBelongToCustomer(actionplanGuid, interactionGuid, customerGuid); if (!doesActionPlanExist) { return(HttpResponseMessageHelper.NoContent(actionplanGuid)); } var outcomeForCustomer = await outcomesPatchService.GetOutcomesForCustomerAsync(customerGuid, interactionGuid, actionplanGuid, outcomesGuid); if (outcomeForCustomer == null) { return(HttpResponseMessageHelper.NoContent(outcomesGuid)); } var patchedOutcome = outcomesPatchService.PatchResource(outcomeForCustomer, outcomesPatchRequest); if (patchedOutcome == null) { return(HttpResponseMessageHelper.NoContent(outcomesGuid)); } var updatedOutcomes = await outcomesPatchService.UpdateCosmosAsync(patchedOutcome, outcomesGuid); if (updatedOutcomes != null) { await outcomesPatchService.SendToServiceBusQueueAsync(updatedOutcomes, customerGuid, ApimURL); } return(updatedOutcomes == null? HttpResponseMessageHelper.BadRequest(outcomesGuid) : HttpResponseMessageHelper.Ok(JsonHelper.SerializeObject(updatedOutcomes))); }
public static HttpResponseMessage ToHttpResponse(this ResponseBase response) { return(HttpResponseMessageHelper.GetJsonOk(response)); }
public static Task <HttpResponseMessage> ToHttpImageResponseAsync(this Image image) { return(Task.FromResult(HttpResponseMessageHelper.GetImageOk(image.ImageToByteArray()))); }