예제 #1
0
파일: utils.py 프로젝트: nylen/cyg-apt
def uri_get(directory, uri, verbose=False):
    up = urlparse.urlparse(uri)
    scriptname = os.path.basename(sys.argv[0])

    if up.scheme == "file":
        shutil.copy(uri[7:], directory)
        if verbose:
            print("cp {0} {1}".format(uri[7:], directory))
    elif up.scheme == "http" or up.scheme == "ftp":
        url_base = os.path.basename(up.path)
        old_cwd = os.getcwd()
        os.chdir(directory)
        if verbose:
            print("\r{0}: downloading: {1}".format(scriptname, uri))
        try:
            opener = CygAptURLopener(verbose)
            opener.retrieve(uri,
                            "{0}.tmp".format(url_base),
                            reporthook=opener.dlProgress)
        except IOError:
            opener.setErrorCode(1)
        finally:
            opener.close()

        if opener.getErrorCode() == 200:
            rename(url_base + ".tmp", url_base)
        else:
            if os.path.exists(url_base + ".tmp"):
                os.remove(url_base + ".tmp")
            os.chdir(old_cwd)
            raise RequestException("{0} unreached URL {1}"
                                   "".format(opener.getErrorCode(), uri))
        os.chdir(old_cwd)
    else:
        raise InvalidArgumentException("bad URL {0}".format(uri))
예제 #2
0
 def setUp(self):
     TestCase.setUp(self)
     self.obj = CygAptURLopener(True)