All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.swagger.parser.OpenAPIParser Maven / Gradle / Ivy

The newest version!
package io.swagger.parser;

import io.swagger.parser.models.AuthorizationValue;
import io.swagger.parser.models.ParseOptions;
import io.swagger.parser.models.SwaggerParseResult;
import io.swagger.parser.v3.OpenAPIV3Parser;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ServiceLoader;

public class OpenAPIParser {
    public SwaggerParseResult readLocation(String url, List auth, ParseOptions options) {
        SwaggerParseResult output = null;

        for(io.swagger.parser.extensions.SwaggerParserExtension extension : getExtensions()) {
            output = extension.readLocation(url, transform(auth), options);
            if(output != null && output.getOpenAPI() != null) {
                return output;
            }
        }

        return output;
    }

    public SwaggerParseResult readContents(String swaggerAsString, List auth, ParseOptions options) {
        SwaggerParseResult output = null;

        for(io.swagger.parser.extensions.SwaggerParserExtension extension : getExtensions()) {
            output = extension.readContents(swaggerAsString, transform(auth), options);
            if(output != null && output.getOpenAPI() != null) {
                return output;
            }
        }

        return output;
    }

    protected List getExtensions() {
        List extensions = new ArrayList<>();

        ServiceLoader loader = ServiceLoader.load(io.swagger.parser.extensions.SwaggerParserExtension.class);
        Iterator itr = loader.iterator();
        while (itr.hasNext()) {
            extensions.add(itr.next());
        }
        extensions.add(0, new OpenAPIV3Parser());
        return extensions;
    }

    /**
     * Transform the swagger-model version of AuthorizationValue into a parser-specific one, to avoid
     * dependencies across extensions
     *
     * @param input
     * @return
     */
    protected List transform(List input) {
        if(input == null) {
            return null;
        }

        List output = new ArrayList<>();

        for(AuthorizationValue value : input) {
            io.swagger.parser.models.AuthorizationValue v = new io.swagger.parser.models.AuthorizationValue();

            v.setKeyName(value.getKeyName());
            v.setValue(value.getValue());
            v.setType(value.getType());

            output.add(v);
        }

        return output;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy