From 7cc82eb143f4ca509e733d10b006c58ae434e83a Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Tue, 25 Oct 2022 23:07:22 +0200 Subject: [PATCH] feat(flickr): add list albums dynamic data --- .../src/apps/flickr/data/list-albums/index.ts | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 packages/backend/src/apps/flickr/data/list-albums/index.ts diff --git a/packages/backend/src/apps/flickr/data/list-albums/index.ts b/packages/backend/src/apps/flickr/data/list-albums/index.ts new file mode 100644 index 00000000..c10d99b1 --- /dev/null +++ b/packages/backend/src/apps/flickr/data/list-albums/index.ts @@ -0,0 +1,54 @@ +import { IGlobalVariable, IJSONObject } from '@automatisch/types'; + +type TResponse = { + data: IJSONObject[]; + error?: IJSONObject; +}; + +type TPhotoset = { + id: string; + title: { + _content: string; + }; +} + +export default { + name: 'List albums', + key: 'listAlbums', + + async run($: IGlobalVariable) { + const params = { + page: 1, + per_page: 500, + user_id: $.auth.data.userId, + method: 'flickr.photosets.getList', + format: 'json', + nojsoncallback: 1, + }; + let response = await $.http.get('/rest', { params, }); + + const aggregatedResponse: TResponse = { + data: [...response.data.photosets.photoset], + }; + + while (response.data.photosets.page < response.data.photosets.pages) { + response = await $.http.get('/rest', { + params: { + ...params, + page: response.data.photosets.page + } + }); + + aggregatedResponse.data.push(...response.data.photosets.photoset); + } + + aggregatedResponse.data = aggregatedResponse.data.map((photoset: TPhotoset) => { + return { + value: photoset.id, + name: photoset.title._content, + } as IJSONObject; + }); + + return aggregatedResponse; + }, +};