//package com.wecloud.netty.dispatch.swagger;
//
//import com.fasterxml.classmate.TypeResolver;
//import com.google.common.collect.Sets;
//import org.springframework.http.HttpMethod;
//import org.springframework.http.MediaType;
//import org.springframework.stereotype.Component;
//import springfox.documentation.builders.OperationBuilder;
//import springfox.documentation.builders.ParameterBuilder;
//import springfox.documentation.schema.ModelRef;
//import springfox.documentation.service.ApiDescription;
//import springfox.documentation.service.Operation;
//import springfox.documentation.service.Parameter;
//import springfox.documentation.spi.DocumentationType;
//import springfox.documentation.spi.service.ApiListingScannerPlugin;
//import springfox.documentation.spi.service.contexts.DocumentationContext;
//import springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator;
//
//import java.util.ArrayList;
//import java.util.Arrays;
//import java.util.List;
//
//@Component
//public class SwaggerAddtion implements ApiListingScannerPlugin {
//    @Override
//    public List<ApiDescription> apply(DocumentationContext documentationContext) {
//        String path = "/oauth/token";
//        String description = "UserToken";
//
//        List<Parameter> parameters = new ArrayList<>();
//        Parameter param1 = new ParameterBuilder()
//                .description("oauth2鉴权方式，如password")//参数描述
//                .type(new TypeResolver().resolve(String.class))//参数数据类型
//                .name("grant_type")//参数名称
//                .defaultValue("password")//参数默认值
//                .parameterType("query")//参数类型
//                .parameterAccess("access")
//                .required(true)//是否必填
//                .modelRef(new ModelRef("string")) //参数数据类型
//                .build();
//        parameters.add(param1);
//        Parameter param2 = new ParameterBuilder()
//                .description("用户名")
//                .type(new TypeResolver().resolve(String.class))
//                .name("username")
//                .parameterType("query")
//                .parameterAccess("access")
//                .required(true)
//                .modelRef(new ModelRef("string")) //<5>
//                .build();
//        parameters.add(param2);
//
//        Parameter param3 = new ParameterBuilder()
//                .description("密码")
//                .type(new TypeResolver().resolve(String.class))
//                .name("password")
//                .parameterType("query")
//                .parameterAccess("access")
//                .required(true)
//                .modelRef(new ModelRef("string")) //<5>
//                .build();
//        parameters.add(param3);
//
//        Operation operation = new OperationBuilder(
//                new CachingOperationNameGenerator())
//                .method(HttpMethod.POST)//http请求类型
//                .produces(Sets.newHashSet(MediaType.APPLICATION_JSON_VALUE))
//                .summary("获取token")
//                .notes("获取token")//方法描述
//                .tags(Sets.newHashSet("归类标签"))//归类标签
//                .parameters(parameters)
//                .build();
//
//        ApiDescription apiDescription = new ApiDescription(
//                path,  //url
//                description, //描述
//                Arrays.asList(operation),
//                false);
//        List<ApiDescription> descriptions = new ArrayList<>();
//        descriptions.add(apiDescription);
//
//        return descriptions;
//    }
//
//    @Override
//    public boolean supports(DocumentationType documentationType) {
//        return DocumentationType.SWAGGER_2.equals(documentationType);
//    }
//}
