/// <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); }
public void Apply(Operation publishOperation, OperationFiterContext context) { publishOperation.Traits.Add(new OperationTraitReference("exampleTrait")); }