/// <summary> /// Generate a single <see cref="OpenApiCallback"/> matching the given <see cref="WebHookTrigger"/> /// </summary> /// <param name="trigger"></param> /// <param name="context"></param> /// <returns></returns> protected OpenApiCallback Generate(WebHookTrigger trigger, OperationFilterContext context) { var schema = context.SchemaGenerator.GenerateSchema(trigger.PayloadType, context.SchemaRepository); var result = new OpenApiCallback(); result.AddPathItem(RuntimeExpression.Build($"{{$request.body#/{PseudoCamelCase(nameof(IWebHook.Callback))}}}"), new OpenApiPathItem { Operations = new Dictionary <OperationType, OpenApiOperation> { [OperationType.Post] = new OpenApiOperation { OperationId = trigger.Id, Description = trigger.Description, Responses = _responses, Parameters = _parameters, RequestBody = new OpenApiRequestBody { Required = true, Content = new Dictionary <string, OpenApiMediaType> { ["application/json"] = new OpenApiMediaType { Schema = schema } } }, } } }); return(result); }
/// <summary> /// Generate a single <see cref="OpenApiCallback"/> matching the given <see cref="WebHookTrigger"/> /// </summary> /// <param name="trigger"></param> /// <returns></returns> protected OpenApiCallback Generate(WebHookTrigger trigger) { var triggerProperties = new Dictionary <string, OpenApiSchema>(trigger.Template.Properties) { [PseudoCamelCase(DefaultWebHookSender.TimestampKey)] = new OpenApiSchema { Type = "string", Format = "date-time" }, [PseudoCamelCase(DefaultWebHookSender.TriggerKey)] = new OpenApiSchema { Type = "string" }, [PseudoCamelCase(DefaultWebHookSender.UniqueIdKey)] = new OpenApiSchema { Type = "string", Format = "uuid" } }; var result = new OpenApiCallback(); result.AddPathItem(RuntimeExpression.Build($"{{$request.body#/{PseudoCamelCase(nameof(IWebHook.Callback))}}}"), new OpenApiPathItem { Operations = new Dictionary <OperationType, OpenApiOperation> { [OperationType.Post] = new OpenApiOperation { OperationId = trigger.Id, Description = trigger.Description, Responses = _responses, Parameters = _parameters, RequestBody = new OpenApiRequestBody { Required = true, Content = new Dictionary <string, OpenApiMediaType> { ["application/json"] = new OpenApiMediaType { Schema = new OpenApiSchema { Type = "object", Properties = triggerProperties } } } }, } } }); return(result); }
// This function will get triggered/executed when a new message is written // on an Azure Queue called queue. public static void ProcessQueueMessage(WebHookTrigger string message, TextWriter log) { log.WriteLine(message); }