Example #1
0
    def download_file(self, remote, local):
        """Downloads remote files to local path.

        :param remote: (str) Remote path.
        :param local: (str) Local path.
        :return: (bool) True on success, False on failure.
        """
        if not self.isfile_remote(remote):
            return self.err(1, remote)

        if not hasstring(local):
            return self.err(2, local)

        if isdir(local) and local[-1] != '/':
            local += '/'

        if local[-1] == '/':
            local += remote.split('/')[:-1]

        if not isdir('/'.join(local.split('/')[:-1]), True):
            return self.err(3, local)

        try:
            self.connection.get(remote, local)
            return True

        except Exception:
            _, message = getexcept()
            return self.err(4, message)
Example #2
0
    def download_dir(self, remote, local):
        """Downloads remote directories to local path.

        :param remote: (str) Remote path.
        :param local: (str) Local path.
        :return: (bool) True on success, False on failure.
        """
        if not self.isdir_remote(remote):
            return self.err(1, remote)

        if isfile(local):
            return self.err(2, local)

        if not isdir(local, True):
            return self.err(3, local)

        if remote[-1] == '/':
            remote = remote[:-1]

        if local[-1] == '/':
            local = local[:-1]

        remote_c = len(remote)

        for root, dirs, files in self.walk_remote(remote):
            local_root = local + root[remote_c:]

            if not isdir(local_root, True):
                return self.err(4, local_root)

            for name in dirs:
                local_dir = local_root + '/' + name

                if not isdir(local_dir, True):
                    return self.err(5, local_dir)

            try:
                for name in files:
                    local_file = local_root + '/' + name
                    self.connection.get(root + '/' + name, local_file)
            except Exception:
                _, message = getexcept()
                self.err(6, local_file)
                return self.err(7, message)

        return True
Example #3
0
    def upload_dir(self, local, remote):
        """Uploads local directories to remote host.

        Source: https://www.tutorialspoint.com/python/os_walk.htm

        :param local: (str) Local path.
        :param remote: (str) Remote path.
        :return: (bool) True on success, False on failure.
        """
        if not isdir(local):
            return self.err(1, local)

        if self.isfile_remote(remote):
            return self.err(2, remote)

        if not self.isdir_remote(remote, True):
            return self.err(3, remote)

        if local[-1] == '/':
            local = local[:-1]

        if remote[-1] == '/':
            remote = remote[:-1]

        local_c = len(local)

        for root, dirs, files in os.walk(local, topdown=False):
            remote_root = remote + root[local_c:]

            if not self.mkdir_remote(remote_root):
                return self.err(4, remote_root)

            for name in dirs:
                remote_dir = remote_root + '/' + name

                if not self.mkdir_remote(remote_dir):
                    return self.err(5, remote_dir)

            try:
                for name in files:
                    remote_file = remote_root + '/' + name
                    self.connection.put(root + '/' + name, remote_file)
            except Exception:
                _, message = getexcept()
                self.err(6, remote_file)
                return self.err(7, message)

        return True
Example #4
0
    def upload(self, local, remote):
        """Uploads local files or directories to remote host.

        :param local: (str) Local path.
        :param remote: (str) Remote path.
        :return: (bool) True on success, False on failure.
        """
        if not hasstring(remote):
            return self.err(1)

        if isfile(local):
            return self.upload_file(local, remote)

        if isdir(local):
            return self.upload_dir(local, remote)

        return False
Example #5
0
def writejson(filename, data):
    """Saves the (dict) data to JSON file.

    :param filename: (str) Filename to write JSON to.
    :param data: (dict) Dict to save to JSON file.
    :return: (bool) True on success, False on failure.
    """
    if not hasstring(filename):
        return False
    if not isdir('/'.join(filename.split('/')[:-1]), True):
        return False
    if not isinstance(data, dict):
        return False
    try:
        with open(filename, 'w') as handler:
            json.dump(data, handler)
    except IOError:
        return getexcept()
    return True
Example #6
0
def writefile(filename, lines):
    """Saves lines to file.

    :param filename: (str) File to write.
    :param lines: (list) List of lines to write.
    :return: (bool) True on success, False on failure.
    """
    if not isdir('/'.join(filename.split('/')[:-1]), True):
        return False
    if not haslist(lines):
        return False
    try:
        handler = open(filename, 'w')
        for line in lines:
            handler.write(line + '\n')
        handler.close()
        return True
    except Exception:
        return getexcept()
    return False
Example #7
0
    def test_isdir(self):
        """Test if input is directory.
        """

        none0 = None
        int0 = 0
        int1 = 1
        int2 = -1
        str0 = ''
        str1 = 'abcd'
        list0 = []
        list1 = ['ab', 'cd']
        dict0 = {}
        dict1 = {'ab': 'cd'}
        set0 = set()
        set1 = set(['a', 'b', 1, 2])
        tuple0 = ()
        tuple1 = ('a', 'b', 1, 2)

        self.assertFalse(valid.isdir(none0))
        self.assertFalse(valid.isdir(int0))
        self.assertFalse(valid.isdir(int1))
        self.assertFalse(valid.isdir(int2))
        self.assertFalse(valid.isdir(str0))
        self.assertFalse(valid.isdir(str1))
        self.assertFalse(valid.isdir(list0))
        self.assertFalse(valid.isdir(list1))
        self.assertFalse(valid.isdir(dict0))
        self.assertFalse(valid.isdir(dict1))
        self.assertFalse(valid.isdir(set0))
        self.assertFalse(valid.isdir(set1))
        self.assertFalse(valid.isdir(tuple0))
        self.assertFalse(valid.isdir(tuple1))

        directory0 = '/'
        directory1 = '/abcd'

        self.assertTrue(valid.isdir(directory0))  # assertTrue
        self.assertFalse(valid.isdir(directory1))