Example #1
0
 def tagged_release_url(self, version):
     token = self._os_token
     url = self._mozila_release_tag.format(version)
     if token:
         console("GH_TOKEN will be used to perform requests")
         return url + "?access_token={0}".format(token)
     return url
Example #2
0
 def latest_release_url(self):
     token = self._os_token
     url = self._latest_release_url
     if token:
         console("GH_TOKEN will be used to perform requests")
         return "{base_url}?access_token={access_token}".format(
             base_url=url, access_token=token)
     return url
Example #3
0
 def __unpack(self, path, to_directory=None):
     console("Unpack archive {}".format(path))
     if not to_directory:
         to_directory = os.path.dirname(path)
     if path.endswith(".zip"):
         return extract_zip(path, to_directory)
     else:
         file_list = extract_tar_file(path, to_directory)
         return [x.name for x in file_list]
def unpack(archive, to_directory=None):
    console("Unpack archive {}".format(archive.name))
    if not to_directory:
        to_directory = os.path.dirname(archive.name)
    if archive.name.endswith(".zip"):
        return extract_zip(archive, to_directory)
    else:
        file_list = extract_tar_file(archive, to_directory)
        return [x.name for x in file_list]
Example #5
0
 def __init__(self, name, version, os_type, url, latest_release_url,
              mozila_release_tag):
     super(GeckoDriver, self).__init__(name, version, os_type, url,
                                       latest_release_url)
     self._mozila_release_tag = mozila_release_tag
     self._os_token = os.getenv("GH_TOKEN", None)
     self.auth_header = None
     if self._os_token:
         console("GH_TOKEN will be used to perform requests")
         self.auth_header = {'Authorization': f'token {self._os_token}'}
Example #6
0
 def get_url(self, version):
     # type: () -> str
     # https://github.com/operasoftware/operachromiumdriver/releases/download/v.2.45/operadriver_linux64.zip
     console("Getting latest opera release info for {0}".format(version))
     resp = requests.get(self.tagged_release_url(version))
     validate_response(resp)
     assets = resp.json()["assets"]
     name = "{0}_{1}".format(self.get_name(), self.get_os_type())
     output_dict = [
         asset for asset in assets if asset['name'].startswith(name)
     ]
     return output_dict[0]['browser_download_url']
Example #7
0
    def __find_file(self, paths, name, version, os_type):
        console("\nLooking for [{} {} {}] driver in cache ".format(name, version, os_type))
        if len(name) == 0 or len(version) == 0:
            return None

        if "win" in os_type:
            name += ".exe"

        for path in paths:
            if os.path.isfile(path) and path.endswith(name):
                console("File found in cache by path [{}]".format(path))
                return path
        return None
Example #8
0
    def get_url(self, version):
        # https://github.com/mozilla/geckodriver/releases/download/v0.11.1/geckodriver-v0.11.1-linux64.tar.gz
        console("Getting latest mozilla release info for {0}".format(version))
        resp = requests.get(self.tagged_release_url(version))
        validate_response(resp)
        assets = resp.json()["assets"]

        name = "{0}-{1}-{2}".format(self.get_name(), version,
                                    self.get_os_type())
        output_dict = [
            asset for asset in assets if asset['name'].startswith(name)
        ]
        return output_dict[0]['browser_download_url']
Example #9
0
 def __init__(self,
              name,
              version,
              os_type,
              url,
              latest_release_url,
              opera_release_tag,
              DEBUG_LOGGING=True):
     super(OperaDriver, self).__init__(name, version, os_type, url,
                                       latest_release_url)
     self.opera_release_tag = opera_release_tag
     self._os_token = os.getenv("GH_TOKEN", None)
     self.auth_header = None
     self.DEBUG_LOGGING = DEBUG_LOGGING
     if self._os_token:
         console("GH_TOKEN will be used to perform requests",
                 DEBUG_LOGGING=self.DEBUG_LOGGING)
         self.auth_header = {'Authorization': f'token {self._os_token}'}
    def _download_file(self, driver, path=None):
        # type: (Driver) -> file
        url = driver.get_url()
        console("Trying to download new driver from {}".format(url))

        response = requests.get(url, stream=True)
        if response.status_code == 404:
            raise ValueError(
                "There is no such driver {0} with version {1} by {2}".format(
                    driver.name, driver.get_version(), driver.get_url()))
        filename = self._get_filename_from_response(response, driver)
        if '"' in filename:
            filename = filename.replace('"', "")
        if path is None:
            driver_path = self._get_driver_path(driver.name,
                                                driver.get_version(),
                                                driver.os_type)
        else:
            driver_path = path
        self.create_cache_dir(driver_path)
        file_path = os.path.join(driver_path, filename)

        return self._save_file_to_cache(response, file_path)
Example #11
0
    def get_cached_binary(self, driver):
        cached_driver = driver.config.driver_path
        is_offline = driver.config.offline
        if cached_driver and is_offline == 'True':
            console("Using driver from cache {}".format(cached_driver))
            return Binary(cached_driver)

        name = driver.name
        version = driver.get_version()
        os_type = driver.os_type
        console("")
        console("Checking for {} {}:{} in cache".format(
            os_type, name, version),
                bold=True)
        if "win" in os_type:
            name += ".exe"
        for dirName, subdirList, fileList in os.walk(self.get_cache_path()):
            for fname in fileList:
                if os.path.join(dirName,
                                fname).endswith(os.path.join(version, name)):
                    console("Driver found in {}/{}".format(dirName, fname))
                    return Binary(os.path.join(dirName, fname))
        console("There is no cached driver. Downloading new one...")
        return None
    def get_cached_binary(self, driver, path=None, subpath=None):
        if path is not None:
            self.root_dir = path
        cached_driver = driver.config.driver_path
        is_offline = driver.config.offline
        if cached_driver and is_offline == 'True':
            console("Using driver from cache {}".format(cached_driver))
            return Binary(cached_driver)

        name = driver.name
        version = driver.get_version()
        os_type = driver.os_type
        console("")
        console("Checking for {} {}:{} in cache".format(
            os_type, name, version),
                bold=True)
        if subpath is not None:
            name = subpath
        elif "win" in os_type:
            name += ".exe"
        if path is None:
            for dirName, subdirList, fileList in \
                    os.walk(self.get_cache_path()):
                for fname in fileList:
                    target_file = os.path.join(version, os_type, name)
                    driver_file = os.path.join(dirName, fname)

                    if driver_file.endswith(target_file):
                        console("Driver found in {}/{}".format(dirName, fname))
                        return Binary(os.path.join(dirName, fname))
        else:
            if os.path.isfile(os.path.join(path, name)):
                console("Driver found in {}".format(os.path.join(path, name)))
                return Binary(os.path.join(path, name))
        console("There is no cached driver. Downloading new one...")
        return None