Ejemplo n.º 1
0
        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))
Ejemplo n.º 2
0
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)
    )
Ejemplo n.º 3
0
        def create():
            def mapper(x):
                raise Exception(ex)

            return xs.pipe(ops.expand(mapper))
Ejemplo n.º 4
0
 def create():
     def mapper(x):
         raise Exception(ex)
     return xs.pipe(ops.expand(mapper))
Ejemplo n.º 5
0
 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))