def create(): def mapper(x): return scheduler.create_cold_observable( on_next(100, 2 * x), on_next(200, 3 * x), on_completed(300)) return xs.pipe(ops.expand(mapper))
def list_folder( credentials, folder: dict, name_filter: str = None, retries: int = 5 ) -> Observable: def next_page(acc): def load_page(): if name_filter: q = "'{0}' in parents and name = '{1}'".format(folder['id'], name_filter) else: q = "'{0}' in parents".format(folder['id']) request = get_service(credentials).files().list( q=q, fields="nextPageToken, files(id, name, size, mimeType, modifiedTime)", pageSize=PAGE_SIZE, pageToken=acc.get('nextPageToken') ) return request.execute() return execute( credentials, load_page, retries=retries, description='loading file page {}, {}'.format(folder, acc) ).pipe( map(lambda page: { 'files': acc['files'] + page.get('files', []), 'nextPageToken': page.get('nextPageToken') }) ) def extract_files(result): files = result.get('files', []) for file in files: file['path'] = '{}{}{}'.format( folder['path'], file['name'].replace('/', '_'), '/' if is_folder(file) else '' ) return files return next_page({'files': [], 'nextPageToken': None}).pipe( expand(lambda acc: next_page(acc) if acc.get('nextPageToken') else empty()), map(extract_files) )
def create(): def mapper(x): raise Exception(ex) return xs.pipe(ops.expand(mapper))
def create(): def mapper(x): return scheduler.create_cold_observable(on_next(100, 2 * x), on_next(200, 3 * x), on_completed(300)) return xs.pipe(ops.expand(mapper))