public void Apply(Operation operation, DataTypeRegistry dataTypeRegistry, ApiDescription apiDescription) { var methodNode = _navigator.SelectSingleNode(GetXPathFor(apiDescription.ActionDescriptor)); operation.Summary = GetChildValueOrDefault(methodNode, SummaryExpression); operation.Notes = GetChildValueOrDefault(methodNode, RemarksExpression); foreach (var paramDesc in apiDescription.ParameterDescriptions) { if (paramDesc.ParameterDescriptor == null) { continue; // not in action signature (e.g. route parameter) } var parameter = operation.Parameters.SingleOrDefault(p => p.Name == paramDesc.Name); if (parameter == null) { continue; } parameter.Description = GetChildValueOrDefault( methodNode, String.Format(ParameterExpression, paramDesc.ParameterDescriptor.ParameterName)); } if (methodNode == null) { return; } foreach (var responseMessage in GetResponseMessages(methodNode)) { operation.ResponseMessages.Add(responseMessage); } }
public void Apply(DataType model, DataTypeRegistry dataTypeRegistry, Type type) { var typeNode = _navigator.SelectSingleNode(String.Format(TypeExpression, type.FullName)); if (typeNode == null) { return; } var summary = GetChildValue(typeNode, SummaryExpression); if (summary != null) { model.Description = summary; } foreach (var property in model.Properties) { var propertyNode = _navigator.SelectSingleNode(String.Format(PropertyExpression, type.FullName, property.Key)); if (propertyNode == null) { continue; } summary = GetChildValue(propertyNode, SummaryExpression); if (summary != null) { property.Value.Description = summary; } } }
public void Apply(Operation operation, DataTypeRegistry dataTypeRegistry, ApiDescription apiDescription) { if (operation.Parameters == null) { return; } HandleFromUriObjectParams(operation, dataTypeRegistry, apiDescription); }
public void Apply(Operation operation, DataTypeRegistry dataTypeRegistry, ApiDescription apiDescription) { if (apiDescription.ActionDescriptor.GetFilters().OfType <AuthorizeAttribute>().Any()) { operation.ResponseMessages.Add(new ResponseMessage { Code = (int)HttpStatusCode.Unauthorized, Message = "Authentication required" }); } }
public void Apply(DataType model, DataTypeRegistry dataTypeRegistry, Type type) { var typeNode = _navigator.SelectSingleNode(String.Format(TypeExpression, type.FullName)); model.Description = GetChildValueOrDefault(typeNode, SummaryExpression); foreach (var property in model.Properties) { var propertyNode = _navigator.SelectSingleNode(String.Format(PropertyExpression, type.FullName, property.Key)); property.Value.Description = GetChildValueOrDefault(propertyNode, SummaryExpression); } }
public void Apply(DataType model, DataTypeRegistry dataTypeRegistry, Type type) { var camelCasedProperties = new Dictionary <string, DataType>(); foreach (var entry in model.Properties) { var key = entry.Key; camelCasedProperties[Char.ToLower(key[0]) + key.Substring(1)] = entry.Value; } model.Properties = camelCasedProperties; }
public void Apply(DataType model, DataTypeRegistry dataTypeRegistry, Type type) { foreach ( var name in from name in model.Properties.Keys.ToArray() let property = type.GetProperty(name) where property != null && property.GetCustomAttributes(typeof(ObsoleteAttribute), false).Any() select name) { model.Properties.Remove(name); } }
public void Apply(Operation operation, DataTypeRegistry dataTypeRegistry, ApiDescription apiDescription) { operation.ResponseMessages.Add(new ResponseMessage { Code = (int)HttpStatusCode.OK, Message = "It's all good!" }); operation.ResponseMessages.Add(new ResponseMessage { Code = (int)HttpStatusCode.InternalServerError, Message = "Somethings up!" }); }
public void Apply(Operation operation, DataTypeRegistry dataTypeRegistry, ApiDescription apiDescription) { var scopeIds = apiDescription.ActionDescriptor.GetFilterPipeline() .Select(filterInfo => filterInfo.Instance) .OfType <ScopeAuthorizeAttribute>() .SelectMany(attr => attr.Scopes) .Distinct(); if (scopeIds.Any()) { operation.Authorizations = new Dictionary <string, IList <Scope> >(); operation.Authorizations["oauth2"] = scopeIds .Select(id => new Scope { ScopeId = id }) .ToList(); } }
private void HandleFromUriObjectParams(Operation operation, DataTypeRegistry dataTypeRegistry, ApiDescription apiDescription) { var models = dataTypeRegistry.GetModels(); var fromUriObjectParams = operation.Parameters .Where(param => param.ParamType == "query" && models.ContainsKey(param.Type)) .ToArray(); foreach (var objectParam in fromUriObjectParams) { var type = apiDescription.ParameterDescriptions .Single(paramDesc => paramDesc.Name == objectParam.Name) .ParameterDescriptor.ParameterType; var model = models[objectParam.Type]; ExtractAndAddQueryParams(model, "", objectParam.Required, models, operation.Parameters); operation.Parameters.Remove(objectParam); } }
public override void Execute() { // Define the schema elements. var schema = Schemas.GetSchemaByNamespace(BasePluginConstants.DesignModel_SchemaNamespace); var stringType = DataTypeRegistry.Get(BasePluginConstants.DataType_string); var boolType = DataTypeRegistry.Get(BasePluginConstants.DataType_bool); schema .RootElement .FindChildElement("Namespace/Entity") .GetBuilder() .CreateElement("Relation", "Defines a relation to another entity") .CreateAttribute("name", stringType, "Relation name") .CreateAttribute("destination", stringType, "Destination entity name", c => c.IsMandatory = true) .CreateAttribute("mandatory", boolType, "Whether this is a mandatory relation", c => c.IsMandatory = true); var designModelElement = schema.RootElement.FindChildElement("Namespace/Entity/Relation"); // Register parser. DesignModelConverterFactory.RegisterFactory(designModelElement, new EntityRelationParser(DesignModelCollection)); }
/// <summary> /// This Operation is called, when the module shall initialize itself. /// </summary> /// <param name="typeRegistry">The type registry for service requests or registrations.</param> /// <inheritdoc/> public void Initialize(ITypeRegistry typeRegistry) { var odataObjectFactory = new ODataObjectFactory(); var pathService = new ODataPathService(); var modelItemNamingService = new ModelItemNamingService(); var navigationPropertyBuilderFactory = new NavigationPropertyBuilderFactory(modelItemNamingService); var modelBuilderFactory = new ModelBuilderFactory(pathService, navigationPropertyBuilderFactory); var queryBuilderFactory = new QueryBuilderFactory(); var operationContextFactory = new OperationContextFactory(pathService); var dataTypeRegistry = new DataTypeRegistry(new DefaultDataTypeKeyLookupStrategy()); typeRegistry.RegisterInstance <IModelBuilderFactory>(modelBuilderFactory); typeRegistry.RegisterInstance <IDataTypeRegistry>(dataTypeRegistry); typeRegistry.RegisterInstance <IODataObjectFactory>(odataObjectFactory); typeRegistry.RegisterInstance <IODataPathService>(pathService); typeRegistry.RegisterInstance <IOperationContextFactory>(operationContextFactory); typeRegistry.RegisterInstance <IModelItemNamingService>(modelItemNamingService); typeRegistry.RegisterInstance <IQueryBuilderFactory>(queryBuilderFactory); }
public void Apply(DataType model, DataTypeRegistry dataTypeRegistry, Type type) { model.Description = "foobar"; }
public void Apply(Operation operation, DataTypeRegistry dataTypeRegistry, System.Web.Http.Description.ApiDescription apiDescription) { operation.ResponseMessages.Add(new ResponseMessage { Code = 200, Message = "It's all good!" }); }