@uppy/companion
Version:
OAuth helper and remote fetcher for Uppy's (https://uppy.io) extensible file upload widget with support for drag&drop, resumable uploads, previews, restrictions, file processing/encoding, remote providers like Dropbox and Google Drive, S3 and more :dog:
85 lines (69 loc) • 1.88 kB
JavaScript
import querystring from 'node:querystring'
const isFolder = (item) => {
return false
}
const getItemIcon = (item) => {
return item.urls.thumb
}
const getItemSubList = (item) => {
return item.results
}
const getItemName = (item) => {
const description = item.description || item.alt_description
if (description) {
return `${description.replace(/^([\S\s]{27})[\S\s]{3,}/, '$1...')}.jpg`
}
return undefined
}
const getMimeType = (item) => {
return 'image/jpeg'
}
const getItemId = (item) => {
return `${item.id}`
}
const getItemRequestPath = (item) => {
return `${item.id}`
}
const getItemModifiedDate = (item) => {
return item.created_at
}
const getItemThumbnailUrl = (item) => {
return item.urls.thumb
}
const getNextPageQuery = (currentQuery) => {
const newCursor = Number.parseInt(currentQuery.cursor || 1, 10) + 1
const query = {
...currentQuery,
cursor: newCursor,
}
delete query.q
return querystring.stringify(query)
}
const getAuthor = (item) => {
return { name: item.user.name, url: item.user.links.html }
}
const adaptData = (body, currentQuery) => {
const { total_pages: pagesCount } = body
const { cursor, q } = currentQuery
const currentPage = Number(cursor || 1)
const hasNextPage = currentPage < pagesCount
const subList = getItemSubList(body) || []
return {
searchedFor: q,
username: null,
items: subList.map((item) => ({
isFolder: isFolder(item),
icon: getItemIcon(item),
name: getItemName(item),
mimeType: getMimeType(item),
id: getItemId(item),
thumbnail: getItemThumbnailUrl(item),
requestPath: getItemRequestPath(item),
modifiedDate: getItemModifiedDate(item),
author: getAuthor(item),
size: null,
})),
nextPageQuery: hasNextPage ? getNextPageQuery(currentQuery) : null,
}
}
export default adaptData