def generate(self, registry, host=None, sort_keys=True):
        """Generates a Swagger specification from a Rebar instance.

        :param flask_rebar.rebar.HandlerRegistry registry:
        :param str host: Adds this host as a Server Object for the service
        :param bool sort_keys: Use OrderedDicts sorted by keys instead of dicts
        :rtype: dict
        """

        components = self._get_components(registry=registry)

        if registry.default_authenticators:
            default_security = [
                self.authenticator_converter.get_security_requirement(
                    default_authenticator)[0]
                for default_authenticator in registry.default_authenticators
                if default_authenticator is not None
            ]
        else:
            default_security = None

        paths = self._get_paths(
            paths=registry.paths,
            default_headers_schema=registry.default_headers_schema,
            default_security=default_security,
        )

        swagger = {
            sw.openapi: "3.0.2",
            sw.info: self._get_info(),
            sw.paths: paths,
            sw.components: components,
        }
        if default_security:
            swagger[sw.security] = default_security

        if self.tags:
            swagger[sw.tags] = [tag.as_swagger() for tag in self.tags]

        servers = self.servers or []

        if host:
            servers.append(Server(url=host))

        if servers:
            swagger[sw.servers] = [server.as_swagger() for server in servers]

        if sort_keys:
            # Sort the swagger we generated by keys to produce a consistent output.
            swagger = recursively_convert_dict_to_ordered_dict(swagger)

        return swagger
    def generate(
        self,
        registry,
        host=None,
        schemes=None,
        consumes=None,
        produces=None,
        sort_keys=True,
    ):
        """Generate a swagger specification from the provided `registry`

        `generate_swagger` implements the SwaggerGeneratorI interface. But for backwards compatibility,
        we are keeping the similarly named `generate` signature.

        :param flask_rebar.rebar.HandlerRegistry registry:
        :param str host: Overrides the initialized host
        :param Sequence[str] schemes: Overrides the initialized schemas
        :param Sequence[str] consumes: Overrides the initialized consumes
        :param Sequence[str] produces: Overrides the initialized produces
        :param bool sort_keys: Use OrderedDicts sorted by keys instead of dicts
        :rtype: dict
        """
        default_authenticator = registry.default_authenticator
        security_definitions = self.authenticator_converter.get_security_schemes(
            registry
        )
        definitions = get_unique_schema_definitions(
            registry=registry,
            base=self._ref_base,
            default_response_schema=self.default_response_schema,
            response_converter=self._response_converter,
            request_body_converter=self._request_body_converter,
        )
        paths = self._get_paths(
            paths=registry.paths, default_headers_schema=registry.default_headers_schema
        )

        if host and "://" in host:
            _, _, host = host.partition("://")

        swagger = {
            sw.swagger: self._get_version(),
            sw.info: self._get_info(),
            sw.host: host or self.host,
            sw.schemes: list(schemes or self.schemes),
            sw.consumes: list(consumes or self.consumes),
            sw.produces: list(produces or self.produces),
            sw.security_definitions: security_definitions,
            sw.paths: paths,
            sw.definitions: definitions,
        }

        if default_authenticator:
            swagger[
                sw.security
            ] = self.authenticator_converter.get_security_requirement(
                default_authenticator
            )

        if self.tags:
            swagger[sw.tags] = [tag.as_swagger() for tag in self.tags]

        if sort_keys:
            # Sort the swagger we generated by keys to produce a consistent output.
            swagger = recursively_convert_dict_to_ordered_dict(swagger)

        return swagger