"""OpenAPI core servers models module""" from six import iteritems class Server(object): def __init__(self, url, variables=None, description=None, extensions=None): self.url = url self.variables = variables and dict(variables) or {} self.description = description self.extensions = extensions and dict(extensions) or {} @property def default_url(self): return self.get_url() @property def default_variables(self): defaults = {} for name, variable in iteritems(self.variables): defaults[name] = variable.default return defaults def get_url(self, **variables): if not variables: variables = self.default_variables return self.url.format(**variables) def is_absolute(self, url=None): if url is None: url = self.url return url.startswith('//') or '://' in url class ServerVariable(object): def __init__(self, name, default, enum=None, extensions=None): self.name = name self.default = default self.enum = enum and list(enum) or [] self.extensions = extensions and dict(extensions) or {}