コード例 #1
0
ファイル: environment.py プロジェクト: zz198808/CloudBackup
    def setup_vdisk(self,
                    account,
                    password,
                    local_folder,
                    holder,
                    is_weibo=False,
                    log=True,
                    encrypt=False,
                    encrypt_code=None,
                    force_stop=True):
        try:
            self.vdisk_lock.acquire()

            if not force_stop and self.vdisk_handler:
                return self.vdisk_handler

            if force_stop and self.vdisk_handler:
                self.vdisk_handler.stop()

            if encrypt and encrypt_code:
                client = CryptoVdiskClient(VDISK_APP_KEY, VDISK_APP_SECRET)
                client.auth(account, password, encrypt_code,
                            'sinat' if is_weibo else 'local')
            else:
                client = VdiskClient(VDISK_APP_KEY, VDISK_APP_SECRET)
                client.auth(account, password,
                            'sinat' if is_weibo else 'local')
            self.vdisk_token_refresh = VdiskRefreshToken(client)
            self.vdisk_token_refresh.setDaemon(True)
            self.vdisk_token_refresh.start()

            storage = VdiskStorage(client, holder_name=holder)

            try:
                handler = SyncHandler(storage,
                                      local_folder,
                                      sec=DEFAULT_SLEEP_SECS,
                                      log=log)
                handler.setDaemon(True)
                handler.start()
                self.vdisk_handler = handler

                self.save_vdisk_info(account, password, local_folder, holder,
                                     is_weibo, log, encrypt, encrypt_code)
                return handler
            except VdiskError, e:
                raise CloudBackupError(e.src, e.err_no, e.msg)
        finally:
            self.vdisk_lock.release()