private Operation CreateOperation(ApiDescription apiDescription, ISchemaRegistry schemaRegistry) { var groupName = _options.GroupNameSelector(apiDescription); var parameters = apiDescription.ParameterDescriptions .Where(paramDesc => paramDesc.Source.IsFromRequest) .Select(paramDesc => CreateParameter(paramDesc, schemaRegistry)) .ToList(); var responses = new Dictionary<string, Response>(); if (apiDescription.ResponseType == typeof(void)) responses.Add("204", new Response { Description = "No Content" }); else responses.Add("200", CreateSuccessResponse(apiDescription.ResponseType, schemaRegistry)); var operation = new Operation { Tags = (groupName != null) ? new[] { groupName } : null, OperationId = apiDescription.ActionDescriptor.DisplayName, Produces = apiDescription.Produces().ToList(), //consumes = apiDescription.Consumes().ToList(), Parameters = parameters.Any() ? parameters : null, // parameters can be null but not empty Responses = responses, Deprecated = apiDescription.IsObsolete() }; var filterContext = new OperationFilterContext(apiDescription, schemaRegistry); foreach (var filter in _options.OperationFilters) { filter.Apply(operation, filterContext); } return operation; }
private static bool ResolveVersionSupportByVersionsConstraint(ApiDescription apiDesc, string version) { var versionAttribute = apiDesc.ActionDescriptor.ActionConstraints.OfType<VersionsAttribute>() .FirstOrDefault(); if (versionAttribute == null) return true; return versionAttribute.AcceptedVersions.Contains(version); }
// TODO replace with UrlHelper method once RC2 has been released private SimpleLink ToUrl(Context context, ApiDescription action, Dictionary<string, object> values) { var template = TemplateParser.Parse(action.RelativePath); var result = action.RelativePath.ToLowerInvariant(); foreach (var parameter in template.Parameters) { var value = values[parameter.Name]; result = result.Replace(parameter.ToPlaceholder(), value.ToString()); } return new SimpleLink(new Uri(context.BaseUri, result)); }
private ApiExplorerData CreateSerializableData(ApiDescription description) { var data = new ApiExplorerData() { GroupName = description.GroupName, HttpMethod = description.HttpMethod, RelativePath = description.RelativePath, ResponseType = description.ResponseType?.FullName, }; foreach (var parameter in description.ParameterDescriptions) { var parameterData = new ApiExplorerParameterData() { Name = parameter.Name, Source = parameter.Source.Id, Type = parameter.Type?.FullName, }; if (parameter.RouteInfo != null) { parameterData.RouteInfo = new ApiExplorerParameterRouteInfo() { ConstraintTypes = parameter.RouteInfo.Constraints?.Select(c => c.GetType().Name).ToArray(), DefaultValue = parameter.RouteInfo.DefaultValue, IsOptional = parameter.RouteInfo.IsOptional, }; } data.ParameterDescriptions.Add(parameterData); } foreach (var response in description.SupportedResponseFormats) { var responseData = new ApiExplorerResponseData() { FormatterType = response.Formatter.GetType().FullName, MediaType = response.MediaType.ToString(), }; data.SupportedResponseFormats.Add(responseData); } return data; }
public FakeApiDescriptionGroupCollectionProvider WithGetAction() { var action = new ApiDescription() { GroupName = "posts", HttpMethod = "GET", RelativePath = "posts/{id}", ActionDescriptor = new ControllerActionDescriptor() { ControllerTypeInfo = typeof(PostsController).GetTypeInfo() } }; action.ParameterDescriptions.Add(new ApiParameterDescription() { Name = "id" }); actions.Add(action); return this; }
public OperationFilterContext(ApiDescription apiDescription, ISchemaRegistry schemaRegistry) { ApiDescription = apiDescription; SchemaRegistry = schemaRegistry; }
private bool VersionSupportResolver(ApiDescription apiDescription, string s) { // Check version return true; }