Search in sources :

Example 1 with SwaggerDescriptorException

use of io.gravitee.management.service.exceptions.SwaggerDescriptorException in project gravitee-management-rest-api by gravitee-io.

the class SwaggerServiceImpl method prepare.

public NewApiEntity prepare(ImportSwaggerDescriptorEntity swaggerDescriptor) {
    Swagger swagger = null;
    switch(swaggerDescriptor.getVersion()) {
        case VERSION_1_0:
            try {
                logger.info("Loading an old Swagger descriptor from {}", swaggerDescriptor.getPayload());
                // For spec < 2.0, only read by url is possible
                swagger = new SwaggerCompatConverter().read(swaggerDescriptor.getPayload());
            } catch (IOException ioe) {
                logger.error("Can not read old Swagger specification", ioe);
                throw new SwaggerDescriptorException();
            }
        case VERSION_2_0:
            if (swaggerDescriptor.getType() == ImportSwaggerDescriptorEntity.Type.INLINE) {
                logger.info("Loading an inline Swagger descriptor");
                swagger = new SwaggerParser().parse(swaggerDescriptor.getPayload());
            } else if (swaggerDescriptor.getType() == ImportSwaggerDescriptorEntity.Type.URL) {
                logger.info("Loading a Swagger descriptor from URL: ", swaggerDescriptor.getPayload());
                swagger = new SwaggerParser().read(swaggerDescriptor.getPayload());
            }
    }
    if (swagger == null) {
        throw new SwaggerDescriptorException();
    }
    NewApiEntity apiEntity = new NewApiEntity();
    apiEntity.setName(swagger.getInfo().getTitle());
    apiEntity.setDescription(swagger.getInfo().getDescription());
    apiEntity.setVersion(swagger.getInfo().getVersion());
    String scheme = (swagger.getSchemes() == null || swagger.getSchemes().isEmpty()) ? defaultScheme : swagger.getSchemes().iterator().next().toValue();
    apiEntity.setEndpoint(scheme + "://" + swagger.getHost() + swagger.getBasePath());
    apiEntity.setPaths(new ArrayList<>(swagger.getPaths().keySet().stream().map(path -> path.replaceAll("\\{(.[^/]*)\\}", ":$1")).collect(Collectors.toList())));
    return apiEntity;
}
Also used : SwaggerParser(io.swagger.parser.SwaggerParser) Scheme(io.swagger.models.Scheme) Yaml(io.swagger.util.Yaml) SwaggerParser(io.swagger.parser.SwaggerParser) Swagger(io.swagger.models.Swagger) URISyntaxException(java.net.URISyntaxException) Json(io.swagger.util.Json) LoggerFactory(org.slf4j.LoggerFactory) ArrayList(java.util.ArrayList) Value(org.springframework.beans.factory.annotation.Value) PageEntity(io.gravitee.management.model.PageEntity) OpenAPI(io.swagger.v3.oas.models.OpenAPI) SwaggerCompatConverter(io.swagger.parser.SwaggerCompatConverter) URI(java.net.URI) SwaggerParseResult(io.swagger.v3.parser.core.models.SwaggerParseResult) Logger(org.slf4j.Logger) ImportSwaggerDescriptorEntity(io.gravitee.management.model.ImportSwaggerDescriptorEntity) BufferedWriter(java.io.BufferedWriter) FileWriter(java.io.FileWriter) JsonProcessingException(com.fasterxml.jackson.core.JsonProcessingException) IOException(java.io.IOException) NewApiEntity(io.gravitee.management.model.NewApiEntity) Collectors(java.util.stream.Collectors) File(java.io.File) Component(org.springframework.stereotype.Component) MediaType(io.gravitee.common.http.MediaType) PageConfigurationEntity(io.gravitee.management.model.PageConfigurationEntity) SwaggerDescriptorException(io.gravitee.management.service.exceptions.SwaggerDescriptorException) SwaggerService(io.gravitee.management.service.SwaggerService) Collections(java.util.Collections) OpenAPIV3Parser(io.swagger.v3.parser.OpenAPIV3Parser) SwaggerDescriptorException(io.gravitee.management.service.exceptions.SwaggerDescriptorException) SwaggerCompatConverter(io.swagger.parser.SwaggerCompatConverter) Swagger(io.swagger.models.Swagger) IOException(java.io.IOException) NewApiEntity(io.gravitee.management.model.NewApiEntity)

Aggregations

JsonProcessingException (com.fasterxml.jackson.core.JsonProcessingException)1 MediaType (io.gravitee.common.http.MediaType)1 ImportSwaggerDescriptorEntity (io.gravitee.management.model.ImportSwaggerDescriptorEntity)1 NewApiEntity (io.gravitee.management.model.NewApiEntity)1 PageConfigurationEntity (io.gravitee.management.model.PageConfigurationEntity)1 PageEntity (io.gravitee.management.model.PageEntity)1 SwaggerService (io.gravitee.management.service.SwaggerService)1 SwaggerDescriptorException (io.gravitee.management.service.exceptions.SwaggerDescriptorException)1 Scheme (io.swagger.models.Scheme)1 Swagger (io.swagger.models.Swagger)1 SwaggerCompatConverter (io.swagger.parser.SwaggerCompatConverter)1 SwaggerParser (io.swagger.parser.SwaggerParser)1 Json (io.swagger.util.Json)1 Yaml (io.swagger.util.Yaml)1 OpenAPI (io.swagger.v3.oas.models.OpenAPI)1 OpenAPIV3Parser (io.swagger.v3.parser.OpenAPIV3Parser)1 SwaggerParseResult (io.swagger.v3.parser.core.models.SwaggerParseResult)1 BufferedWriter (java.io.BufferedWriter)1 File (java.io.File)1 FileWriter (java.io.FileWriter)1