コード例 #1
0
ファイル: SwaggerActionFilter.cs プロジェクト: chunlei/QrF
        private ResourceListing getDocs(HttpActionContext actionContext)
        {
            var assemblyType = (actionContext.ActionDescriptor as ReflectedHttpActionDescriptor).MethodInfo.DeclaringType;
            var docProvider = new XmlCommentDocumentationProvider(); //(XmlCommentDocumentationProvider)GlobalConfiguration.Configuration.Services.GetDocumentationProvider();

            ResourceListing r = SwaggerGen.CreateResourceListing(actionContext);

            foreach (var api in GlobalConfiguration.Configuration.Services.GetApiExplorer().ApiDescriptions)
            {
                if (api.ActionDescriptor.ActionName.EndsWith("API"))//Ignore each Default API action
                    continue;

                string apiControllerName = api.ActionDescriptor.ControllerDescriptor.ControllerName;
                if (api.Route.Defaults.ContainsKey(SwaggerGen.SWAGGER) ||
                    apiControllerName.ToUpper().Equals(SwaggerGen.SWAGGER.ToUpper()))
                    continue;

                // Make sure we only report the current controller docs
                if (!apiControllerName.Equals(actionContext.ControllerContext.ControllerDescriptor.ControllerName))
                    continue;

                ResourceApi rApi = SwaggerGen.CreateResourceApi(api);
                r.apis.Add(rApi);

                ResourceApiOperation rApiOperation = SwaggerGen.CreateResourceApiOperation(r, api, docProvider);
                rApi.operations.Add(rApiOperation);

                foreach (var param in api.ParameterDescriptions)
                {
                    ResourceApiOperationParameter parameter = SwaggerGen.CreateResourceApiOperationParameter(r, api, param, docProvider);
                    rApiOperation.parameters.Add(parameter);
                }

                if (System.Configuration.ConfigurationManager.AppSettings["swagger:APITOKEN"] != null &&
                    System.Configuration.ConfigurationManager.AppSettings["swagger:APITOKEN"].Equals("true") &&
                    !api.ActionDescriptor.ActionName.EndsWith("API"))
                {
                    //添加Token
                    ResourceApiOperationParameter p = new ResourceApiOperationParameter();
                    p.name = "ApiToken";
                    p.description = "Api Token";
                    p.paramType = "path";
                    p.required = true;
                    p.dataType = "String";
                    rApiOperation.parameters.Insert(0, p);
                }

                SwaggerGen.CreateModel(r, api, docProvider);
                //r.models = new ResourceApiModel();
            }

            return r;
        }
コード例 #2
0
        public static void PrepareByOptionAttribute(ResourceApiOperationParameter parameter, HttpParameterDescriptor parameterDescriptor)
        {
            var attributes = parameterDescriptor.GetCustomAttributes <SwaggerOptionsAttribute>();

            if (attributes.Count > 0)
            {
                var att = attributes[0] as SwaggerOptionsAttribute;

                if (!String.IsNullOrWhiteSpace(att.Name))
                {
                    parameter.name = att.Name;
                }
            }
        }
コード例 #3
0
		public static void PrepareByOptionAttribute(ResourceApiOperationParameter parameter, HttpParameterDescriptor parameterDescriptor)
		{
			var attributes = parameterDescriptor.GetCustomAttributes<SwaggerOptionsAttribute>();

			if (attributes.Count > 0)
			{
				var att = attributes[0] as SwaggerOptionsAttribute;

				if (!String.IsNullOrWhiteSpace(att.Name))
				{
					parameter.name = att.Name;
				}
			}
		}