本文整理汇总了C#中System.Web.Http.Description.ApiDescription类的典型用法代码示例。如果您正苦于以下问题:C# ApiDescription类的具体用法?C# ApiDescription怎么用?C# ApiDescription使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
ApiDescription类属于System.Web.Http.Description命名空间,在下文中一共展示了ApiDescription类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GenerateApiModel
public static HelpPageApiModel GenerateApiModel(ApiDescription apiDescription, HelpPageSampleGenerator sampleGenerator)
{
HelpPageApiModel apiModel = new HelpPageApiModel();
apiModel.ApiDescription = apiDescription;
try
{
foreach (var item in sampleGenerator.GetSampleRequests(apiDescription))
{
apiModel.SampleRequests.Add(item.Key, item.Value);
LogInvalidSampleAsError(apiModel, item.Value);
}
foreach (var item in sampleGenerator.GetSampleResponses(apiDescription))
{
apiModel.SampleResponses.Add(item.Key, item.Value);
LogInvalidSampleAsError(apiModel, item.Value);
}
}
catch (Exception e)
{
apiModel.ErrorMessages.Add(String.Format(CultureInfo.CurrentCulture, "An exception has occurred while generating the sample. Exception Message: {0}", e.Message));
}
return apiModel;
}
示例2: Generate
public static MetadataPlainObjects.Fields Generate(MappingRule mappingRule, ApiDescription apiDescription, object originalObject)
{
var fromBodyParameterType = (from param in mappingRule.MethodExpression.Method.GetParameters()
let fromBodyAttr = param.GetCustomAttribute<FromBodyAttribute>()
where fromBodyAttr != null
select param.ParameterType).FirstOrDefault();
if (fromBodyParameterType == null)
return GenerateFromGet(mappingRule, apiDescription, originalObject);
var result = new MetadataPlainObjects.Fields();
result.AddRange(from property in fromBodyParameterType.GetProperties()
let fieldName = GetFieldName(property)
let propVal = property.GetValue(originalObject)
let jsonIgnore = property.GetCustomAttribute<JsonIgnoreAttribute>()
where jsonIgnore == null
select new MetadataPlainObjects.Field
{
FieldName = fieldName,
FieldType = GetFieldType(property),
FieldValue = propVal == null ? null : propVal.ToString()
});
return result;
}
示例3: Apply
public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
{
if (!operation.responses.ContainsKey("default") && operation.responses.ContainsKey("200"))
{
operation.responses.Add("default", operation.responses["200"]);
}
}
示例4: VersionSupportByAttribute
private static bool VersionSupportByAttribute(ApiDescription apiDesc, string version)
{
var attr = apiDesc.ActionDescriptor.GetCustomAttributes<SupportedInVersionsAttribute>().FirstOrDefault();
if (attr == null) return false;
return attr.Versions.Contains(version);
}
示例5: Apply
public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
{
if (operation.operationId == "FileDownload_GetFile")
{
operation.produces = new[] { "application/octet-stream" };
}
}
示例6: CreateOperation
private Operation CreateOperation(ApiDescription apiDescription, SchemaRegistry schemaRegistry)
{
var parameters = apiDescription.ParameterDescriptions
.Select(paramDesc =>
{
var inPath = apiDescription.RelativePathSansQueryString().Contains("{" + paramDesc.Name + "}");
return CreateParameter(paramDesc, inPath, schemaRegistry);
})
.ToList();
var responses = new Dictionary<string, Response>();
var responseType = apiDescription.ResponseType();
if (responseType == null || responseType == typeof(void))
responses.Add("204", new Response { description = "No Content" });
else
responses.Add("200", new Response { description = "OK", schema = schemaRegistry.GetOrRegister(responseType) });
var operation = new Operation
{
tags = new [] { _options.GroupingKeySelector(apiDescription) },
operationId = apiDescription.FriendlyId(),
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()
};
foreach (var filter in _options.OperationFilters)
{
filter.Apply(operation, schemaRegistry, apiDescription);
}
return operation;
}
示例7: ApiResource
public ApiResource(ApiDescription description)
{
this.Url = this.EnsureStartingSlash(description.RelativePath);
this.HttpMethod = description.HttpMethod.Method.ToLower();
this.Name = this.EnsureLowerFirstLetter(description.ActionDescriptor.ActionName);
this.ParamsFromQueryString = this.GetParamsFromQueryString(description.ActionDescriptor.GetParameters());
}
示例8: Apply
public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
{
if (operation.parameters == null) return;
HandleFromUriArrayParams(operation);
HandleFromUriObjectParams(operation, schemaRegistry, apiDescription);
}
示例9: WriteParameters
/// <summary>Writes the parameters.</summary>
/// <param name="apiDescription">The API description.</param>
public void WriteParameters(ApiDescription apiDescription)
{
Condition.Requires(apiDescription).IsNotNull();
if (apiDescription.ParameterDescriptions.Any())
{
Writer.WriteLine("**Parameters** ");
}
foreach (var pd in apiDescription.ParameterDescriptions)
{
if (pd.ParameterDescriptor != null)
{
Writer.Write("`{0}` {1} - ", pd.ParameterDescriptor.ParameterType.GetFriendlyTypeName(), pd.Name);
if (!string.IsNullOrEmpty(pd.Documentation))
{
Writer.Write("_{0}_, ", pd.Documentation);
}
if (pd.ParameterDescriptor.DefaultValue != null)
{
Writer.Write("default [{0}], ", pd.ParameterDescriptor.DefaultValue);
}
Writer.WriteLine("{0} ", pd.ParameterDescriptor.IsOptional ? "optional" : "required");
}
};
}
示例10: Apply
public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
{
if (operation == null)
{
throw new ArgumentNullException("operation");
}
if (apiDescription == null)
{
throw new ArgumentNullException("apiDescription");
}
Collection<IFilter> filters = apiDescription.ActionDescriptor.ControllerDescriptor.GetFilters();
IEnumerable<IFilter> mobileAppFilter = filters.Where(f => typeof(MobileAppControllerAttribute).IsAssignableFrom(f.GetType()));
if (mobileAppFilter.Any())
{
if (operation.parameters == null)
{
operation.parameters = new List<Parameter>();
}
operation.parameters.Add(new Parameter
{
name = "ZUMO-API-VERSION",
@in = "header",
type = "string",
required = true,
@default = "2.0.0"
});
}
}
示例11: Apply
public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
{
List<SwaggerDefaultValue> listDefine = new List<SwaggerDefaultValue>
{
new SwaggerDefaultValue("Compare", "<", "<,<=,>,>=,="),
//new SwaggerDefaultValue("Model_URI", "@{body(\'besconnector').Results.output2.FullURL}"),
//new SwaggerDefaultValue("Evaluate_Output_Path", "@{body(\'besconnector\').Results.output1.FullURL}")
};
if (operation.parameters == null)
return;
foreach (var param in operation.parameters)
{
var actionParam = apiDescription.ActionDescriptor.GetParameters().First(p => p.ParameterName == param.name);
foreach (SwaggerDefaultValue customAttribute in listDefine)
{
if (customAttribute.ParameterName == param.name)
{
[email protected] = customAttribute.DefaultValue;
string[] listValue = customAttribute.Values.Split(',');
if (listValue != null && listValue.Length > 1)
[email protected] = listValue;
}
}
}
}
示例12: Apply
public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
{
// Determine if the operation has the Authorize attribute
var authorizeAttributes = apiDescription
.ActionDescriptor.GetCustomAttributes<AuthorizeAttribute>();
if (!authorizeAttributes.Any())
return;
// Correspond each "Authorize" role to an oauth2 scope
var scopes =
authorizeAttributes
.SelectMany(attr => attr.Roles.Split(','))
.Distinct()
.ToList();
// Initialize the operation.security property if it hasn't already been
if (operation.security == null)
operation.security = new List<IDictionary<string, IEnumerable<string>>>();
var oAuthRequirements = new Dictionary<string, IEnumerable<string>>
{
{ "oauth2", scopes }
};
operation.security.Add(oAuthRequirements);
}
示例13: Apply
public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
{
var hasAuthorizeAttr = apiDescription.ActionDescriptor.GetFilterPipeline()
.Select(filterInfo => filterInfo.Instance)
.Any(filter => filter is IAuthorizationFilter);
var hasAllowAnonymous = apiDescription.ActionDescriptor.GetCustomAttributes<AllowAnonymousAttribute>().Any();
if (hasAuthorizeAttr && !hasAllowAnonymous)
{
if (operation.parameters == null)
{
operation.parameters = new List<Parameter>();
}
operation.parameters.Add(new Parameter()
{
description = "Authorization token. Used for applying content access restrictions. Use one of the OAuth2 grants to auto-populate this value.",
@in = "header",
name = "Authorization",
required = true,
type = "string",
@default = "bearer "
});
}
}
示例14: Apply
public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
{
if (operation == null)
{
throw new ArgumentNullException("operation");
}
if (apiDescription == null)
{
throw new ArgumentNullException("apiDescription");
}
// Correspond each "Authorize" action to an oauth2 scope
var authorized = apiDescription.ActionDescriptor.GetFilterPipeline()
.Select(filterInfo => filterInfo.Instance)
.OfType<AuthorizeAttribute>()
.Distinct();
if (authorized.Any())
{
if (operation.security == null)
{
operation.security = new List<IDictionary<string, IEnumerable<string>>>();
}
var requirements = new Dictionary<string, IEnumerable<string>>
{
{ this.provider, new string[] { } }
};
operation.security.Add(requirements);
}
}
示例15: HeaderFilter_AddsHeaderRequirement
public void HeaderFilter_AddsHeaderRequirement(Collection<IFilter> filters)
{
// Arrange
var swashbuckleFilter = new MobileAppHeaderFilter();
var operation = new Operation();
var controllerDescMock = new Mock<HttpControllerDescriptor>();
controllerDescMock.Setup(c => c.GetFilters()).Returns(filters);
var description = new ApiDescription();
description.ActionDescriptor = new ReflectedHttpActionDescriptor();
description.ActionDescriptor.ControllerDescriptor = controllerDescMock.Object;
// Act
swashbuckleFilter.Apply(operation, null, description);
// Assert
Assert.NotNull(operation.parameters);
Assert.Equal(1, operation.parameters.Count);
Parameter parameter = operation.parameters[0];
Assert.Equal("ZUMO-API-VERSION", parameter.name);
Assert.Equal("header", [email protected]);
Assert.Equal("string", parameter.type);
Assert.Equal("2.0.0", [email protected]);
Assert.True(parameter.required);
}