public IActionResult Index([FromBody] KenticoCloudWebhookModel model) { switch (model.Message.Type) { case KenticoCloudCacheHelper.CONTENT_ITEM_SINGLE_IDENTIFIER: case KenticoCloudCacheHelper.CONTENT_ITEM_VARIANT_SINGLE_IDENTIFIER: case KenticoCloudCacheHelper.CONTENT_TYPE_SINGLE_IDENTIFIER: return(RaiseNotificationForSupportedOperations(model.Message.Operation, model.Message.Type, model.Data.Items)); case KenticoCloudCacheHelper.TAXONOMY_GROUP_SINGLE_IDENTIFIER: return(RaiseNotificationForSupportedOperations(model.Message.Operation, model.Message.Type, model.Data.Taxonomies)); default: // For all other types of artifacts, return OK to avoid webhook re-submissions. return(Ok()); } }
// POST api/publish public async Task <HttpStatusCode> Post([FromBody] KenticoCloudWebhookModel item) { System.Diagnostics.Trace.TraceInformation("POST METHOD"); if (item.Message.Operation.Equals("publish")) { string publishUri = "https://api.sphere.io/" + System.Configuration.ConfigurationManager.AppSettings["CommerceToolsProjectId"] + "/products/"; var kcProjectId = System.Configuration.ConfigurationManager.AppSettings["KenticoProjectId"]; for (int i = 0; i < item.Data.Items.Length; i++) { var codeName = item.Data.Items[i].Codename; var language = item.Data.Items[i].Language; System.Diagnostics.Trace.TraceInformation("Item codename: " + item.Data.Items[i].Codename + ",lang:" + language); client.DefaultRequestHeaders.Accept. Add(new MediaTypeWithQualityHeaderValue("application/json")); // get published item from Kentico Cloud try { string productId = await GetPublishedItemFromKenticoCloud(kcProjectId, codeName, language); //authentication to CommerceTools string token = await GetCommerceToolsAuthToken(); string version = await GetVersionOfCommerceToolsProduct(token, productId, publishUri); //publish product in CommerceTools return(await PublishInCommerceTools(version, productId, token)); } catch (HttpRequestException ex) { System.Diagnostics.Trace.TraceInformation(ex.Message); return(HttpStatusCode.BadRequest); } } } System.Diagnostics.Trace.TraceInformation("Not publish operation."); return(HttpStatusCode.OK); }
public void ReturnsOkWheneverPossible(PayloadType payloadType, string artefactType, string dataType, string operation) { Item[] items = null; Taxonomy[] taxonomies = null; switch (payloadType) { case PayloadType.Items: items = new[] { new Item { Codename = "Test", Type = dataType } }; break; case PayloadType.Taxonomies: taxonomies = new[] { new Taxonomy { Codename = "Test" } }; break; default: break; } var model = new KenticoCloudWebhookModel { Data = new Data { Items = items, Taxonomies = taxonomies }, Message = new Message { Type = artefactType, Operation = operation } }; var controller = new KenticoCloudController(new WebhookListener()); var result = (StatusCodeResult)Task.Run(() => controller.Index(model)).Result; Assert.InRange(result.StatusCode, 200, 299); }