Exemple #1
0
        private Response CreateResponse(ApiResponseType apiResponseType, ISchemaRegistry schemaRegistry)
        {
            var description = ResponseDescriptionMap
                              .FirstOrDefault((entry) => Regex.IsMatch(apiResponseType.StatusCode.ToString(), entry.Key))
                              .Value;

            return(new Response
            {
                Description = description,
                Schema = (apiResponseType.Type != null && apiResponseType.Type != typeof(void))
                    ? schemaRegistry.GetOrRegister(apiResponseType.Type)
                    : null
            });
        }
        private Response CreateResponse(ServiceEntry apiResponseType, MethodInfo methodInfo, ISchemaRegistry schemaRegistry)
        {
            var description = ResponseDescriptionMap
                              .FirstOrDefault((entry) => Regex.IsMatch("200", entry.Key))
                              .Value;

            return(new Response
            {
                Description = description,
                Schema = (methodInfo.ReturnType != typeof(Task) && methodInfo.ReturnType != typeof(void))
                    ? schemaRegistry.GetOrRegister(typeof(HttpResultMessage <>).MakeGenericType(methodInfo.ReturnType.GenericTypeArguments))
                    : null
            });
        }
Exemple #3
0
        private OpenApiResponse CreateResponse(
            ApiResponseType apiResponseType,
            IEnumerable <object> methodAttributes,
            ISchemaRegistry schemaRegistry)
        {
            var description = ResponseDescriptionMap
                              .FirstOrDefault((entry) => Regex.IsMatch(apiResponseType.StatusCode.ToString(), entry.Key))
                              .Value;

            var responseContentTypes = InferResponseContentTypes(apiResponseType, methodAttributes);

            return(new OpenApiResponse
            {
                Description = description,
                Content = responseContentTypes.ToDictionary(
                    contentType => contentType,
                    contentType => CreateResponseMediaType(apiResponseType.Type, schemaRegistry)
                    )
            });
        }
Exemple #4
0
        private OpenApiResponse GenerateResponse(
            ApiDescription apiDescription,
            SchemaRepository schemaRepository,
            string statusCode,
            ApiResponseType apiResponseType)
        {
            var description = ResponseDescriptionMap
                              .FirstOrDefault((entry) => Regex.IsMatch(statusCode, entry.Key))
                              .Value;

            var responseContentTypes = InferResponseContentTypes(apiDescription, apiResponseType);

            return(new OpenApiResponse
            {
                Description = description,
                Content = responseContentTypes.ToDictionary(
                    contentType => contentType,
                    contentType => CreateResponseMediaType(apiResponseType.ModelMetadata, schemaRepository)
                    )
            });
        }
        /// <summary>
        /// 创建接口返回数据格式
        /// </summary>
        /// <param name="actionDescriptor"></param>
        /// <param name="schemaRegistry"></param>
        /// <returns></returns>
        public Dictionary <string, Response> CreateResponse(ControllerActionDescriptor actionDescriptor, ISchemaRegistry schemaRegistry)
        {
            var result       = new Dictionary <string, Response>();
            var responseType = actionDescriptor.FilterDescriptors
                               .Where(x => x.Filter is IFilterMetadata)
                               .Select(x => x.Filter).OfType <ProducesResponseTypeAttribute>()
                               .DefaultIfEmpty(new ProducesResponseTypeAttribute(200));

            foreach (var item in responseType)
            {
                var statusCode = item.StatusCode.ToString();
                var model      = new Response();

                model.Description = ResponseDescriptionMap.FirstOrDefault(x => Regex.IsMatch(statusCode, x.Key)).Value;
                model.Schema      = (item.Type != null && item.Type != typeof(void))
                    ? schemaRegistry.GetOrRegister(item.Type)
                    : null;

                result.Add(statusCode, model);
            }
            return(result);
        }
Exemple #6
0
 public static string GetDescription(string statusCode)
 {
     return(ResponseDescriptionMap
            .FirstOrDefault((entry) => Regex.IsMatch(statusCode, entry.Key))
            .Value);
 }