summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Alejandro <ivanalejandro0@gmail.com>2014-01-07 18:58:06 -0300
committerIvan Alejandro <ivanalejandro0@gmail.com>2014-01-09 14:27:42 -0300
commitfc0663054c4f76c1103291c334bb60c0dff1280b (patch)
tree7f2041f67d6769812e9b0974ebe5c89b0711824b
parent504936617069b7dcba497ba6daf630769c36d4fd (diff)
Refactor provider utilities.
-rw-r--r--src/leap/bitmask/provider/__init__.py37
-rw-r--r--src/leap/bitmask/provider/providerbootstrapper.py9
-rw-r--r--src/leap/bitmask/provider/supportedapis.py38
-rw-r--r--src/leap/bitmask/provider/tests/test_providerbootstrapper.py10
4 files changed, 32 insertions, 62 deletions
diff --git a/src/leap/bitmask/provider/__init__.py b/src/leap/bitmask/provider/__init__.py
index 68f3ded0..ca6426f4 100644
--- a/src/leap/bitmask/provider/__init__.py
+++ b/src/leap/bitmask/provider/__init__.py
@@ -15,7 +15,7 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
-Module initialization for leap.bitmask.provider
+Provider utilities.
"""
import os
@@ -25,6 +25,10 @@ from leap.bitmask import __version__ as BITMASK_VERSION
from leap.common.check import leap_assert
+# The currently supported API versions by the client.
+SUPPORTED_APIS = ["1"]
+
+
def get_provider_path(domain):
"""
Returns relative path for provider config.
@@ -38,19 +42,24 @@ def get_provider_path(domain):
return os.path.join("leap", "providers", domain, "provider.json")
-class SupportedClient(object):
+def supports_api(api_version):
"""
- Class responsible of checking for client compatibility.
+ :param api_version: the version number of the api that we need to check
+ :type api_version: str
+
+ :returns: if that version is supported or not.
+ :return type: bool
"""
+ return api_version in SUPPORTED_APIS
+
- @classmethod
- def supports(self, minimum_version):
- """
- :param minimum_version: the version number of the client that
- we need to check.
- :type minimum_version: str
-
- :returns: True if that version is supported or False otherwise.
- :return type: bool
- """
- return LooseVersion(minimum_version) <= LooseVersion(BITMASK_VERSION)
+def supports_client(minimum_version):
+ """
+ :param minimum_version: the version number of the client that
+ we need to check.
+ :type minimum_version: str
+
+ :returns: True if that version is supported or False otherwise.
+ :return type: bool
+ """
+ return LooseVersion(minimum_version) <= LooseVersion(BITMASK_VERSION)
diff --git a/src/leap/bitmask/provider/providerbootstrapper.py b/src/leap/bitmask/provider/providerbootstrapper.py
index c02b4a05..e00dd646 100644
--- a/src/leap/bitmask/provider/providerbootstrapper.py
+++ b/src/leap/bitmask/provider/providerbootstrapper.py
@@ -29,8 +29,7 @@ from leap.bitmask.util.request_helpers import get_content
from leap.bitmask import util
from leap.bitmask.util.constants import REQUEST_TIMEOUT
from leap.bitmask.services.abstractbootstrapper import AbstractBootstrapper
-from leap.bitmask.provider.supportedapis import SupportedAPIs
-from leap.bitmask.provider import SupportedClient
+from leap.bitmask import provider
from leap.common import ca_bundle
from leap.common.certs import get_digest
from leap.common.files import check_and_fix_urw_only, get_mtime, mkdir_p
@@ -207,7 +206,7 @@ class ProviderBootstrapper(AbstractBootstrapper):
# end refactor, more or less...
# XXX Watch out, have to check the supported api yet.
else:
- if not SupportedClient.supports(min_client_version):
+ if not provider.supports_client(min_client_version):
self._signaler.signal(self._signaler.PROV_UNSUPPORTED_CLIENT)
raise UnsupportedClientVersionError()
@@ -219,10 +218,10 @@ class ProviderBootstrapper(AbstractBootstrapper):
domain, "provider.json"])
api_version = provider_config.get_api_version()
- if SupportedAPIs.supports(api_version):
+ if provider.supports_api(api_version):
logger.debug("Provider definition has been modified")
else:
- api_supported = ', '.join(SupportedAPIs.SUPPORTED_APIS)
+ api_supported = ', '.join(provider.SUPPORTED_APIS)
error = ('Unsupported provider API version. '
'Supported versions are: {0}. '
'Found: {1}.').format(api_supported, api_version)
diff --git a/src/leap/bitmask/provider/supportedapis.py b/src/leap/bitmask/provider/supportedapis.py
deleted file mode 100644
index 3e650ba2..00000000
--- a/src/leap/bitmask/provider/supportedapis.py
+++ /dev/null
@@ -1,38 +0,0 @@
-# -*- coding: utf-8 -*-
-# supportedapis.py
-# Copyright (C) 2013 LEAP
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-"""
-API Support check.
-"""
-
-
-class SupportedAPIs(object):
- """
- Class responsible of checking for API compatibility.
- """
- SUPPORTED_APIS = ["1"]
-
- @classmethod
- def supports(self, api_version):
- """
- :param api_version: the version number of the api that we need to check
- :type api_version: str
-
- :returns: if that version is supported or not.
- :return type: bool
- """
- return api_version in self.SUPPORTED_APIS
diff --git a/src/leap/bitmask/provider/tests/test_providerbootstrapper.py b/src/leap/bitmask/provider/tests/test_providerbootstrapper.py
index d8336fec..6cf3e469 100644
--- a/src/leap/bitmask/provider/tests/test_providerbootstrapper.py
+++ b/src/leap/bitmask/provider/tests/test_providerbootstrapper.py
@@ -36,17 +36,17 @@ from nose.twistedtools import deferred, reactor
from twisted.internet import threads
from requests.models import Response
+from leap.bitmask import provider
+from leap.bitmask import util
+from leap.bitmask.backend import Signaler
from leap.bitmask.config.providerconfig import ProviderConfig
from leap.bitmask.crypto.tests import fake_provider
from leap.bitmask.provider.providerbootstrapper import ProviderBootstrapper
from leap.bitmask.provider.providerbootstrapper import UnsupportedProviderAPI
from leap.bitmask.provider.providerbootstrapper import WrongFingerprint
-from leap.bitmask.provider.supportedapis import SupportedAPIs
-from leap.bitmask.backend import Signaler
-from leap.bitmask import util
from leap.common.files import mkdir_p
-from leap.common.testing.https_server import where
from leap.common.testing.basetest import BaseLeapTest
+from leap.common.testing.https_server import where
class ProviderBootstrapperTest(BaseLeapTest):
@@ -489,7 +489,7 @@ class ProviderBootstrapperActiveTest(unittest.TestCase):
'leap.bitmask.config.providerconfig.ProviderConfig.get_ca_cert_path',
lambda x: where('cacert.pem'))
def test_download_provider_info_unsupported_api(self):
- self._setup_provider_config_with(SupportedAPIs.SUPPORTED_APIS[0],
+ self._setup_provider_config_with(provider.SUPPORTED_APIS[0],
tempfile.mkdtemp())
self._setup_providerbootstrapper(False)
self._produce_dummy_provider_json()