public async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req, ILogger log) { try { var requestBody = await new StreamReader(req.Body).ReadToEndAsync(); log.LogInformation($"Request body: {requestBody}"); var requestBodyParsed = JObject.Parse(requestBody); BaseBodyValidator.ValidateBody(requestBodyParsed); var contractAddress = requestBodyParsed.Value <string>("contractAddress"); var web3 = Web3Service.Initialize(); var stockService = new StockService(web3, contractAddress); var createItem = JsonConvert.DeserializeObject <CreateItemFunction>(requestBody); var receiptForCreateItemFunctionCall = await stockService.CreateItemRequestAndWaitForReceiptAsync(createItem); var itemCreatedEvent = receiptForCreateItemFunctionCall.DecodeAllEvents <ItemCreatedEventDTO>().FirstOrDefault().Event; log.LogInformation("Event:"); log.LogInformation($" Message: {itemCreatedEvent.Message}"); log.LogInformation($" Item ID: {itemCreatedEvent.Id}"); return(new OkObjectResult(itemCreatedEvent.Id)); } catch (Exception e) { log.LogInformation($"The following Exception was raised in CreateItem: {e.Message}"); if (e is SmartContractRevertException || e is RpcResponseException) { return(new ContentResult { StatusCode = 401, Content = Messages.UnAuthorizedMessage }); } return(new BadRequestObjectResult(e.Message)); } }