Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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);
 }