-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathfileTransformers.ts
More file actions
113 lines (107 loc) · 4.68 KB
/
fileTransformers.ts
File metadata and controls
113 lines (107 loc) · 4.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
import { FileModel, FileEmbargo, FileChecksum } from '../../../domain/models/FileModel'
import { AxiosResponse } from 'axios'
import { FilesSubset } from '../../../domain/models/FilesSubset'
import { Dataset } from '../../../../datasets'
import { transformVersionPayloadToDataset } from '../../../../datasets/infra/repositories/transformers/datasetTransformers'
import { ChecksumPayload, EmbargoPayload, FilePayload } from './FilePayload'
import { transformPayloadToOwnerNode } from '../../../../core/infra/repositories/transformers/dvObjectOwnerNodeTransformer'
export const transformFilesResponseToFilesSubset = (response: AxiosResponse): FilesSubset => {
const filesPayload = response.data.data
const files: FileModel[] = []
filesPayload.forEach(function (filePayload: FilePayload) {
files.push(transformFilePayloadToFile(filePayload))
})
return {
files: files,
totalFilesCount: response.data.totalCount
}
}
export const transformFileResponseToFile = (
response: AxiosResponse,
returnDatasetVersion: boolean
): FileModel | [FileModel, Dataset] => {
const filePayload = response.data.data
if (returnDatasetVersion) {
return [
transformFilePayloadToFile(filePayload),
transformVersionPayloadToDataset(filePayload.datasetVersion, false)
]
}
return transformFilePayloadToFile(filePayload)
}
const transformFilePayloadToFile = (filePayload: FilePayload): FileModel => {
return {
id: filePayload.dataFile.id,
persistentId: filePayload.dataFile.persistentId,
name: filePayload.dataFile.filename,
...(filePayload.dataFile.pidURL && { pidURL: filePayload.dataFile.pidURL }),
sizeBytes: filePayload.dataFile.filesize,
version: filePayload.version,
...(filePayload.dataFile.description && { description: filePayload.dataFile.description }),
restricted: filePayload.restricted,
latestRestricted: filePayload.dataFile.restricted,
...(filePayload.directoryLabel && {
directoryLabel: filePayload.directoryLabel
}),
...(filePayload.dataFile.datasetVersionId && {
datasetVersionId: filePayload.dataFile.datasetVersionId
}),
...(filePayload.dataFile.categories && { categories: filePayload.dataFile.categories }),
contentType: filePayload.dataFile.contentType,
friendlyType: filePayload.dataFile.friendlyType,
...(filePayload.dataFile.embargo && {
embargo: transformEmbargoPayloadToEmbargo(filePayload.dataFile.embargo)
}),
...(filePayload.dataFile.storageIdentifier && {
storageIdentifier: filePayload.dataFile.storageIdentifier
}),
...(filePayload.dataFile.originalFormat && {
originalFormat: filePayload.dataFile.originalFormat
}),
...(filePayload.dataFile.originalFormatLabel && {
originalFormatLabel: filePayload.dataFile.originalFormatLabel
}),
...(filePayload.dataFile.originalSize && { originalSize: filePayload.dataFile.originalSize }),
...(filePayload.dataFile.originalName && { originalName: filePayload.dataFile.originalName }),
...(filePayload.dataFile.UNF && { UNF: filePayload.dataFile.UNF }),
...(filePayload.dataFile.rootDataFileId && {
rootDataFileId: filePayload.dataFile.rootDataFileId
}),
...(filePayload.dataFile.previousDataFileId && {
previousDataFileId: filePayload.dataFile.previousDataFileId
}),
...(filePayload.dataFile.md5 && { md5: filePayload.dataFile.md5 }),
...(filePayload.dataFile.checksum && {
checksum: transformChecksumPayloadToChecksum(filePayload.dataFile.checksum)
}),
...(filePayload.dataFile.fileMetadataId && { metadataId: filePayload.dataFile.fileMetadataId }),
...(filePayload.dataFile.tabularTags && { tabularTags: filePayload.dataFile.tabularTags }),
...(filePayload.dataFile.creationDate && {
creationDate: filePayload.dataFile.creationDate
}),
...(filePayload.dataFile.publicationDate && {
publicationDate: filePayload.dataFile.publicationDate
}),
deleted: filePayload.dataFile.deleted,
tabularData: filePayload.dataFile.tabularData,
...(filePayload.dataFile.fileAccessRequest && {
fileAccessRequest: filePayload.dataFile.fileAccessRequest
}),
...(filePayload.dataFile.isPartOf && {
isPartOf: transformPayloadToOwnerNode(filePayload.dataFile.isPartOf)
}),
lastUpdateTime: filePayload.dataFile.lastUpdateTime
}
}
const transformEmbargoPayloadToEmbargo = (embargoPayload: EmbargoPayload): FileEmbargo => {
return {
dateAvailable: new Date(embargoPayload.dateAvailable),
...(embargoPayload.reason && { reason: embargoPayload.reason })
}
}
const transformChecksumPayloadToChecksum = (checksumPayload: ChecksumPayload): FileChecksum => {
return {
type: checksumPayload.type,
value: checksumPayload.value
}
}