def _folder_data(self, folder_id): # Split out from set_folder for ease of testing, due to # outgoing requests. Should only be called by set_folder try: Provider(self.external_account).refresh_oauth_key(force=True) except InvalidGrantError: raise exceptions.InvalidAuthError() try: oauth = OAuth2(client_id=settings.BOX_KEY, client_secret=settings.BOX_SECRET, access_token=ensure_str( self.external_account.oauth_key)) client = Client(oauth) folder_data = client.folder(self.folder_id).get() except BoxAPIException: raise exceptions.InvalidFolderError() folder_name = folder_data['name'].replace('All Files', '') or '/ (Full Box)' folder_path = '/'.join([ x['name'] for x in folder_data['path_collection']['entries'] if x['name'] ] + [folder_data['name']]).replace('All Files', '') or '/' return folder_name, folder_path
def set_folder(self, folder_id, auth): if not bucket_exists(self.external_account.oauth_key, self.external_account.oauth_secret, folder_id): error_message = ( 'We are having trouble connecting to that bucket. ' 'Try a different one.') raise exceptions.InvalidFolderError(error_message) self.folder_id = str(folder_id) bucket_location = get_bucket_location_or_error( self.external_account.oauth_key, self.external_account.oauth_secret, folder_id) try: bucket_location = BUCKET_LOCATIONS[bucket_location] except KeyError: # Unlisted location, S3 may have added it recently. # Default to the key. When hit, add mapping to settings pass self.folder_name = '{} ({})'.format(folder_id, bucket_location) self.save() self.nodelogger.log(action='bucket_linked', extra={'bucket': str(folder_id)}, save=True)
def set_folder(self, folder_id, auth): try: info = FigshareClient(self.external_account.oauth_key).get_linked_folder_info(folder_id) except HTTPError as e: raise exceptions.InvalidFolderError(e.message) self.folder_id = info['id'] self.folder_name = info['name'] self.folder_path = info['path'] self.save() self.nodelogger.log(action='folder_selected', save=True)
def set_folder(self, folder_id, auth): if not bucket_exists(self.external_account.provider_id.split('\t')[0], self.external_account.oauth_key, self.external_account.oauth_secret, folder_id): error_message = ('We are having trouble connecting to that bucket. ' 'Try a different one.') raise exceptions.InvalidFolderError(error_message) self.folder_id = str(folder_id) self.folder_name = str(folder_id) self.save() self.nodelogger.log(action='bucket_linked', extra={'bucket': str(folder_id)}, save=True)
def set_folder(self, folder_id, auth): provider = SwiftProvider(self.external_account) if not container_exists(provider.auth_version, provider.auth_url, provider.username, provider.user_domain_name, provider.password, provider.tenant_name, provider.project_domain_name, folder_id): error_message = ( 'We are having trouble connecting to that container. ' 'Try a different one.') raise exceptions.InvalidFolderError(error_message) self.folder_id = str(folder_id) self.folder_name = str(folder_id) self.save() self.nodelogger.log(action='bucket_linked', extra={'bucket': str(folder_id)}, save=True)
def _folder_data(self, folder_id): # Split out from set_folder for ease of testing, due to # outgoing requests. Should only be called by set_folder try: Provider(self.external_account).refresh_oauth_key(force=True) except InvalidGrantError: raise exceptions.InvalidAuthError() try: client = BoxClient(self.external_account.oauth_key) folder_data = client.get_folder(self.folder_id) except BoxClientException: raise exceptions.InvalidFolderError() folder_name = folder_data['name'].replace('All Files', '') or '/ (Full Box)' folder_path = '/'.join( [x['name'] for x in folder_data['path_collection']['entries'] if x['name']] + [folder_data['name']] ).replace('All Files', '') or '/' return folder_name, folder_path