Beispiel #1
0
        /// <summary>
        /// Generate the an operation of an AsyncApi Channel for the given method.
        /// </summary>
        private Operation GenerateOperationFromMethod(MethodInfo method, ISchemaRepository schemaRepository, OperationType operationType)
        {
            var operationAttribute = GetOperationAttribute(method, operationType);

            if (operationAttribute == null)
            {
                return(null);
            }

            var messageAttribute = method.GetCustomAttribute <MessageAttribute>();
            var message          = messageAttribute != null
                ? GenerateMessageFromAttribute(messageAttribute, schemaRepository)
                : GenerateMessageFromType(operationAttribute.MessagePayloadType, schemaRepository);

            var operation = new Operation
            {
                OperationId = operationAttribute.OperationId ?? method.Name,
                Summary     = operationAttribute.Summary ?? method.GetXmlDocsSummary(),
                Description = operationAttribute.Description ?? (method.GetXmlDocsRemarks() != "" ? method.GetXmlDocsRemarks() : null),
                Message     = message,
            };

            var filterContext = new OperationFiterContext(method, schemaRepository, operationAttribute);

            foreach (var filter in _options.OperationFilters)
            {
                filter.Apply(operation, filterContext);
            }

            return(operation);
        }
        /// <summary>
        /// Generate the an operation of an AsyncApi Channel for the given method.
        /// </summary>
        private Operation GenerateOperation(MethodInfo method, ISchemaRepository schemaRepository, OperationType operationType)
        {
            OperationAttribute operationAttribute;

            switch (operationType)
            {
            case OperationType.Publish:
                var publishOperationAttribute = method.GetCustomAttribute <PublishOperationAttribute>();
                if (publishOperationAttribute == null)
                {
                    return(null);
                }
                operationAttribute = (OperationAttribute)publishOperationAttribute;
                break;

            case OperationType.Subscribe:
                var subscribeOperationAttribute = method.GetCustomAttribute <SubscribeOperationAttribute>();
                if (subscribeOperationAttribute == null)
                {
                    return(null);
                }
                operationAttribute = (OperationAttribute)subscribeOperationAttribute;
                break;

            default:
                return(null);
            }

            var operation = new Operation
            {
                OperationId = operationAttribute.OperationId ?? method.Name,
                Summary     = operationAttribute.Summary ?? method.GetXmlDocsSummary(),
                Description = operationAttribute.Description ?? (method.GetXmlDocsRemarks() != "" ? method.GetXmlDocsRemarks() : null),
                Message     = GenerateMessage(method, operationAttribute, schemaRepository),
            };

            var filterContext = new OperationFiterContext(method, schemaRepository, operationAttribute);

            foreach (var filter in _options.OperationFilters)
            {
                filter.Apply(operation, filterContext);
            }

            return(operation);
        }
Beispiel #3
0
 public void Apply(Operation publishOperation, OperationFiterContext context)
 {
     publishOperation.Traits.Add(new OperationTraitReference("exampleTrait"));
 }