UNPKG

metadata-based-explorer1

Version:
76 lines (63 loc) 2.02 kB
/** * @flow * @file File for some simple dom utilities * @author Box */ import omit from 'lodash/omit'; import { getFileExtension } from './file'; type ConvertMetadataParams = { item: Object, metadata: Object, }; const convertISODateToSeconds = (dateString: string) => { return dateString ? new Date(dateString).getTime() / 1000 : null; }; const convertMetadata = (metadata: ConvertMetadataParams) => { let md = {}; Object.keys(metadata).forEach(scope => { Object.keys(metadata[scope]).forEach(templateKey => { const nonconformingInstance = metadata[scope][templateKey]; const data = omit(nonconformingInstance, [ '$id', '$parent', '$type', '$typeScope', '$typeVersion', '$version', ]); md = { data, id: nonconformingInstance.$id, metadataTemplate: { type: 'metadata-template', templateKey, }, }; }); }); return md; }; const convertEntry = (entry: Object) => { const { item, metadata } = entry; return { contentUpdated: convertISODateToSeconds(item.content_modified_at), contentCreated: convertISODateToSeconds(item.content_created_at), date: convertISODateToSeconds(item.content_modified_at), extension: getFileExtension(item.name), id: item.id, lastUpdatedByName: item.modified_by.name, metadata: convertMetadata(metadata), name: item.name, itemSize: item.size, type: item.type, }; }; const convertEntries = entries => entries.map(entry => convertEntry(entry)); const flattenResponse = (response: Object) => { return { items: convertEntries(response.entries), nextMarker: response.next_marker, previousMarker: response.prev_marker, }; }; export default flattenResponse;