Search in sources :

Example 1 with AuthorizationScope

use of io.swagger.models.AuthorizationScope in project swagger-parser by swagger-api.

the class SwaggerCompatConverter method convertOperation.

public Operation convertOperation(String tag, io.swagger.models.apideclaration.Operation operation, ApiDeclaration apiDeclaration) {
    Method method;
    if (operation.getMethod() == null) {
        JsonNode node = (JsonNode) operation.getExtraFields().get("httpMethod");
        method = Method.forValue(node.asText());
        operation.setMethod(method);
    }
    Operation output = new Operation().summary(operation.getSummary()).description(operation.getNotes()).operationId(operation.getNickname());
    if (tag != null) {
        output.tag(tag);
    }
    for (io.swagger.models.apideclaration.Parameter parameter : operation.getParameters()) {
        output.parameter(convertParameter(parameter));
    }
    if (operation.getConsumes() != null && !operation.getConsumes().isEmpty()) {
        for (String consumes : operation.getConsumes()) {
            output.consumes(consumes);
        }
    } else if (apiDeclaration.getConsumes() != null) {
        for (String consumes : apiDeclaration.getConsumes()) {
            output.consumes(consumes);
        }
    }
    if (operation.getProduces() != null && !operation.getProduces().isEmpty()) {
        for (String produces : operation.getProduces()) {
            output.produces(produces);
        }
    } else if (apiDeclaration.getProduces() != null) {
        for (String produces : apiDeclaration.getProduces()) {
            output.produces(produces);
        }
    }
    for (ResponseMessage message : operation.getResponseMessages()) {
        Response response = new Response().description(message.getMessage());
        Model responseModel = null;
        if (message.getResponseModel() != null) {
            response.schema(new RefProperty(message.getResponseModel()));
        }
        output.response(message.getCode(), response);
    }
    // default response type
    Property responseProperty = propertyFromTypedObject(operation);
    Response response = new Response().description("success").schema(responseProperty);
    if (output.getResponses() == null) {
        output.defaultResponse(response);
    } else if (responseProperty != null) {
        output.response(200, response);
    }
    Map<String, List<AuthorizationScope>> auths = operation.getAuthorizations();
    for (String securityName : auths.keySet()) {
        List<AuthorizationScope> scopes = auths.get(securityName);
        List<String> updatedScopes = new ArrayList<String>();
        for (AuthorizationScope s : scopes) {
            updatedScopes.add(s.getScope());
        }
        output.addSecurity(securityName, updatedScopes);
    }
    return output;
}
Also used : ArrayList(java.util.ArrayList) JsonNode(com.fasterxml.jackson.databind.JsonNode) Method(io.swagger.models.Method) Operation(io.swagger.models.Operation) ResponseMessage(io.swagger.models.apideclaration.ResponseMessage) RefProperty(io.swagger.models.properties.RefProperty) Response(io.swagger.models.Response) Model(io.swagger.models.Model) RefModel(io.swagger.models.RefModel) ArrayModel(io.swagger.models.ArrayModel) List(java.util.List) ArrayList(java.util.ArrayList) AuthorizationScope(io.swagger.models.AuthorizationScope) StringProperty(io.swagger.models.properties.StringProperty) ArrayProperty(io.swagger.models.properties.ArrayProperty) Property(io.swagger.models.properties.Property) ModelProperty(io.swagger.models.apideclaration.ModelProperty) RefProperty(io.swagger.models.properties.RefProperty) UntypedProperty(io.swagger.models.properties.UntypedProperty)

Example 2 with AuthorizationScope

use of io.swagger.models.AuthorizationScope in project swagger-parser by swagger-api.

the class SwaggerParser method readAuthorizationScopes.

protected List<AuthorizationScope> readAuthorizationScopes(List<Map<String, Object>> map, MessageBuilder messages) {
    List<AuthorizationScope> authorizationScopes = new ArrayList<>();
    for (Map<String, Object> object : map) {
        AuthorizationScope authorizationScope = new AuthorizationScope();
        Object scope = object.get("scope");
        if (scope != null) {
            authorizationScope.setScope(scope.toString());
        } else {
            messages.append(new Message("AuthorizationScopes.scopes.scope", "missing required scope", Severity.ERROR));
        }
        Object description = object.get("description");
        if (description != null) {
            authorizationScope.setDescription(description.toString());
        } else {
            messages.append(new Message("AuthorizationScopes.scopes.description", "missing description", Severity.RECOMMENDED));
        }
        authorizationScopes.add(authorizationScope);
    }
    return authorizationScopes;
}
Also used : Message(io.swagger.report.Message) ArrayList(java.util.ArrayList) AuthorizationScope(io.swagger.models.AuthorizationScope)

Example 3 with AuthorizationScope

use of io.swagger.models.AuthorizationScope in project swagger-parser by swagger-api.

the class SwaggerCompatConverter method convert.

public Swagger convert(ResourceListing resourceListing, List<ApiDeclaration> apiDeclarations) {
    Info info = new Info();
    if (resourceListing.getInfo() != null) {
        ApiInfo apiInfo = resourceListing.getInfo();
        Contact contact = null;
        if (apiInfo.getContact() != null) {
            contact = new Contact().url(apiInfo.getContact());
        }
        License license = null;
        if (apiInfo.getLicense() != null) {
            license = new License().name(apiInfo.getLicense()).url(apiInfo.getLicenseUrl());
        }
        info = new Info().description(apiInfo.getDescription()).version(resourceListing.getApiVersion()).title(apiInfo.getTitle()).termsOfService(apiInfo.getTermsOfServiceUrl()).contact(contact).license(license);
    } else if (resourceListing.getApiVersion() != null) {
        info = new Info().version(resourceListing.getApiVersion());
    }
    Map<String, Path> paths = new HashMap<String, Path>();
    Map<String, Model> definitions = new HashMap<String, Model>();
    String basePath = null;
    for (ApiDeclaration apiDeclaration : apiDeclarations) {
        String tag;
        if (apiDeclaration.getApiListingRef() != null) {
            String refPath = apiDeclaration.getApiListingRef().getPath();
            tag = refPath.substring(refPath.lastIndexOf("/") + 1);
        } else {
            tag = apiDeclaration.getResourcePath();
        }
        if (tag != null) {
            tag = tag.replaceAll("/", "");
        }
        if (basePath != null) {
            if (!basePath.equals(apiDeclaration.getBasePath()) && apiDeclaration.getBasePath() != null) {
                LOGGER.warn("warning!  multiple basePath values not supported!");
            }
        } else {
            basePath = apiDeclaration.getBasePath();
        }
        List<Api> apis = apiDeclaration.getApis();
        for (Api api : apis) {
            String apiPath = api.getPath();
            String description = api.getDescription();
            List<io.swagger.models.apideclaration.Operation> ops = api.getOperations();
            Path path = paths.get(apiPath);
            if (path == null) {
                path = new Path();
                paths.put(apiPath, path);
            }
            for (io.swagger.models.apideclaration.Operation op : ops) {
                Operation operation = convertOperation(tag, op, apiDeclaration);
                if (op.getMethod() != null) {
                    path.set(op.getMethod().toString().toLowerCase(), operation);
                } else {
                    LOGGER.info("skipping operation with missing method:\n" + Json.pretty(op));
                }
            }
        }
        // model definitions
        Map<String, io.swagger.models.apideclaration.Model> apiModels = apiDeclaration.getModels();
        for (String key : apiModels.keySet()) {
            Model model = convertModel(apiModels.get(key));
            definitions.put(key, model);
        }
    }
    String host = null;
    String scheme = "http";
    if (basePath != null) {
        String[] parts = basePath.split("://");
        if (parts.length == 2) {
            scheme = parts[0];
            int pos = parts[1].indexOf("/");
            if (pos != -1) {
                host = parts[1].substring(0, pos);
                basePath = parts[1].substring(pos);
            } else {
                host = parts[1];
                basePath = "/";
            }
        }
        if (!basePath.startsWith("/")) {
            basePath = "/" + basePath;
        }
    }
    Swagger swagger = new Swagger().host(host).scheme(Scheme.forValue(scheme)).basePath(basePath).info(info).paths(paths).basePath(basePath);
    swagger.setDefinitions(definitions);
    // host is read from the api declarations
    Map<String, Authorization> authorizations = resourceListing.getAuthorizations();
    if (authorizations != null) {
        for (String authNickname : authorizations.keySet()) {
            Authorization auth = authorizations.get(authNickname);
            if (auth instanceof OAuth2Authorization) {
                OAuth2Authorization o2 = (OAuth2Authorization) auth;
                List<AuthorizationScope> scopes = o2.getScopes();
                if (o2.getGrantTypes().getImplicit() != null) {
                    ImplicitGrant ig = o2.getGrantTypes().getImplicit();
                    OAuth2Definition oauth2 = new OAuth2Definition().implicit(ig.getLoginEndpoint().getUrl());
                    if (swagger.getSecurityDefinitions() != null && swagger.getSecurityDefinitions().keySet().contains(authNickname)) {
                        System.err.println("Warning!  Authorization nickname already in use!");
                    } else {
                        swagger.securityDefinition(authNickname, oauth2);
                    }
                    for (AuthorizationScope scope : scopes) {
                        oauth2.scope(scope.getScope(), scope.getDescription());
                    }
                } else if (o2.getGrantTypes().getAuthorization_code() != null) {
                    AuthorizationCodeGrant ac = (AuthorizationCodeGrant) o2.getGrantTypes().getAuthorization_code();
                    OAuth2Definition oauth2 = new OAuth2Definition().accessCode(ac.getTokenRequestEndpoint().getUrl(), ac.getTokenEndpoint().getUrl());
                    if (swagger.getSecurityDefinitions() != null && swagger.getSecurityDefinitions().keySet().contains(authNickname)) {
                        System.err.println("Warning!  Authorization nickname already in use!");
                    } else {
                        swagger.securityDefinition(authNickname, oauth2);
                    }
                    for (AuthorizationScope scope : scopes) {
                        oauth2.scope(scope.getScope(), scope.getDescription());
                    }
                }
            } else if (auth instanceof ApiKeyAuthorization) {
                ApiKeyAuthorization o2 = (ApiKeyAuthorization) auth;
                ApiKeyAuthDefinition def = new ApiKeyAuthDefinition();
                PassAs passAs = o2.getPassAs();
                if (PassAs.HEADER.equals(passAs)) {
                    def.in(In.HEADER);
                } else {
                    def.in(In.QUERY);
                }
                def.setName(o2.getKeyname());
                swagger.securityDefinition(authNickname, def);
            } else if (auth instanceof BasicAuthorization) {
                BasicAuthDefinition def = new BasicAuthDefinition();
                swagger.securityDefinition(authNickname, def);
            }
        }
    }
    return swagger;
}
Also used : HashMap(java.util.HashMap) BasicAuthorization(io.swagger.models.resourcelisting.BasicAuthorization) License(io.swagger.models.License) OAuth2Definition(io.swagger.models.auth.OAuth2Definition) Operation(io.swagger.models.Operation) BasicAuthorization(io.swagger.models.resourcelisting.BasicAuthorization) ApiKeyAuthorization(io.swagger.models.resourcelisting.ApiKeyAuthorization) Authorization(io.swagger.models.resourcelisting.Authorization) OAuth2Authorization(io.swagger.models.resourcelisting.OAuth2Authorization) PassAs(io.swagger.models.PassAs) Swagger(io.swagger.models.Swagger) ApiKeyAuthorization(io.swagger.models.resourcelisting.ApiKeyAuthorization) Path(io.swagger.models.Path) ApiDeclaration(io.swagger.models.apideclaration.ApiDeclaration) OAuth2Authorization(io.swagger.models.resourcelisting.OAuth2Authorization) Info(io.swagger.models.Info) ApiInfo(io.swagger.models.resourcelisting.ApiInfo) BasicAuthDefinition(io.swagger.models.auth.BasicAuthDefinition) Contact(io.swagger.models.Contact) ApiKeyAuthDefinition(io.swagger.models.auth.ApiKeyAuthDefinition) AuthorizationCodeGrant(io.swagger.models.resourcelisting.AuthorizationCodeGrant) ApiInfo(io.swagger.models.resourcelisting.ApiInfo) Model(io.swagger.models.Model) RefModel(io.swagger.models.RefModel) ArrayModel(io.swagger.models.ArrayModel) ImplicitGrant(io.swagger.models.resourcelisting.ImplicitGrant) Api(io.swagger.models.apideclaration.Api) AuthorizationScope(io.swagger.models.AuthorizationScope)

Aggregations

AuthorizationScope (io.swagger.models.AuthorizationScope)3 ArrayModel (io.swagger.models.ArrayModel)2 Model (io.swagger.models.Model)2 Operation (io.swagger.models.Operation)2 RefModel (io.swagger.models.RefModel)2 ArrayList (java.util.ArrayList)2 JsonNode (com.fasterxml.jackson.databind.JsonNode)1 Contact (io.swagger.models.Contact)1 Info (io.swagger.models.Info)1 License (io.swagger.models.License)1 Method (io.swagger.models.Method)1 PassAs (io.swagger.models.PassAs)1 Path (io.swagger.models.Path)1 Response (io.swagger.models.Response)1 Swagger (io.swagger.models.Swagger)1 Api (io.swagger.models.apideclaration.Api)1 ApiDeclaration (io.swagger.models.apideclaration.ApiDeclaration)1 ModelProperty (io.swagger.models.apideclaration.ModelProperty)1 ResponseMessage (io.swagger.models.apideclaration.ResponseMessage)1 ApiKeyAuthDefinition (io.swagger.models.auth.ApiKeyAuthDefinition)1