use of io.gravitee.rest.api.service.swagger.OAIDescriptor in project gravitee-management-rest-api by gravitee-io.
the class OAIParser method parse.
public OAIDescriptor parse(String content, ParseOptions options) {
OpenAPIParser parser = new OpenAPIParser();
SwaggerParseResult parseResult;
String path = content;
File temp = null;
if (!isLocationUrl(content)) {
// Swagger v1 supports only a URL to read swagger: create temporary file for Swagger parser
temp = createTempFile(content);
path = temp.getAbsolutePath();
}
parseResult = parser.readLocation(path, null, options);
if (temp != null) {
temp.delete();
}
/* Hack due to swagger v1 converting issue
* See https://github.com/swagger-api/swagger-parser/issues/1451
*/
if (parseResult.getMessages() != null) {
final List<String> filteredMessages = parseResult.getMessages().stream().filter(message -> message != null && !message.matches("^attribute info.contact.*")).collect(Collectors.toList());
parseResult.setMessages(filteredMessages);
}
if (parseResult.getOpenAPI() == null) {
throw new SwaggerDescriptorException("Malformed descriptor");
}
OAIDescriptor descriptor = new OAIDescriptor(parseResult.getOpenAPI());
descriptor.setMessages(parseResult.getMessages());
return descriptor;
}
use of io.gravitee.rest.api.service.swagger.OAIDescriptor in project gravitee-management-rest-api by gravitee-io.
the class SwaggerService_TransformTest method shouldTransformAPIWithServerUrlAndContextPath.
@Test
public void shouldTransformAPIWithServerUrlAndContextPath() throws IOException {
PageEntity pageEntity = getPage("io/gravitee/rest/api/management/service/openapi.json", MediaType.APPLICATION_JSON);
Map<String, String> pageConfigurationEntity = new HashMap<>();
pageConfigurationEntity.put(SwaggerProperties.ENTRYPOINTS_AS_SERVERS, "true");
pageConfigurationEntity.put(SwaggerProperties.ENTRYPOINT_AS_BASEPATH, "true");
pageEntity.setConfiguration(pageConfigurationEntity);
OAIDescriptor descriptor = (OAIDescriptor) swaggerService.parse(pageEntity.getContent(), false);
final ApiEntity apiEntity = getApiEntity();
swaggerService.transform(descriptor, Arrays.asList(new PageConfigurationOAITransformer(pageEntity), new EntrypointsOAITransformer(pageEntity, apiEntity)));
assertNotNull(descriptor.toJson());
final JsonNode node = Json.mapper().readTree(descriptor.toJson());
assertEquals("https://apis.gravitee.io/test", node.get("servers").get(0).get("url").asText());
}
use of io.gravitee.rest.api.service.swagger.OAIDescriptor in project gravitee-management-rest-api by gravitee-io.
the class SwaggerService_TransformTest method shouldTransformAPIWithOriginalServer.
@Test
public void shouldTransformAPIWithOriginalServer() throws IOException {
PageEntity pageEntity = getPage("io/gravitee/rest/api/management/service/openapi.json", MediaType.APPLICATION_JSON);
Map<String, String> pageConfigurationEntity = new HashMap<>();
pageConfigurationEntity.put(SwaggerProperties.ENTRYPOINTS_AS_SERVERS, "false");
pageConfigurationEntity.put(SwaggerProperties.ENTRYPOINT_AS_BASEPATH, "false");
pageEntity.setConfiguration(pageConfigurationEntity);
OAIDescriptor descriptor = (OAIDescriptor) swaggerService.parse(pageEntity.getContent(), false);
final ApiEntity apiEntity = getApiEntity();
swaggerService.transform(descriptor, Arrays.asList(new PageConfigurationOAITransformer(pageEntity), new EntrypointsOAITransformer(pageEntity, apiEntity)));
assertNotNull(descriptor.toJson());
final JsonNode node = Json.mapper().readTree(descriptor.toJson());
assertEquals("https://demo.gravitee.io/gateway/echo", node.get("servers").get(0).get("url").asText());
}
use of io.gravitee.rest.api.service.swagger.OAIDescriptor in project gravitee-management-rest-api by gravitee-io.
the class SwaggerService_TransformTest method shouldTransformAPIFromSwaggerV3_yaml.
@Test
public void shouldTransformAPIFromSwaggerV3_yaml() throws IOException {
PageEntity pageEntity = getPage("io/gravitee/rest/api/management/service/openapi.yaml", MediaType.TEXT_PLAIN);
OAIDescriptor descriptor = (OAIDescriptor) swaggerService.parse(pageEntity.getContent(), false);
swaggerService.transform(descriptor, Collections.singleton(new PageConfigurationOAITransformer(pageEntity)));
assertNotNull(descriptor.toYaml());
validateV3(Yaml.mapper().readTree(descriptor.toYaml()));
}
use of io.gravitee.rest.api.service.swagger.OAIDescriptor in project gravitee-management-rest-api by gravitee-io.
the class SwaggerService_TransformTest method shouldTransformAPIWithServerUrl.
@Test
public void shouldTransformAPIWithServerUrl() throws IOException {
PageEntity pageEntity = getPage("io/gravitee/rest/api/management/service/openapi.json", MediaType.APPLICATION_JSON);
Map<String, String> pageConfigurationEntity = new HashMap<>();
pageConfigurationEntity.put(SwaggerProperties.ENTRYPOINTS_AS_SERVERS, "true");
pageEntity.setConfiguration(pageConfigurationEntity);
OAIDescriptor descriptor = (OAIDescriptor) swaggerService.parse(pageEntity.getContent(), false);
final ApiEntity apiEntity = getApiEntity();
swaggerService.transform(descriptor, Arrays.asList(new PageConfigurationOAITransformer(pageEntity), new EntrypointsOAITransformer(pageEntity, apiEntity)));
assertNotNull(descriptor.toJson());
final JsonNode node = Json.mapper().readTree(descriptor.toJson());
assertEquals("https://apis.gravitee.io", node.get("servers").get(0).get("url").asText());
}
Aggregations