diff --git a/modules/hudozka-api/src/controllers/file.ts b/modules/hudozka-api/src/controllers/file.ts index 5122eb4a..03928524 100644 --- a/modules/hudozka-api/src/controllers/file.ts +++ b/modules/hudozka-api/src/controllers/file.ts @@ -1,6 +1,6 @@ import { Request, Response } from 'express' import Document from '../core/Document' -import { encodeFile } from '../api/files' +import { encodeFile } from '../factory/files' export async function getItem(req: Request, res: Response) { const id = req.params.slug diff --git a/modules/hudozka-api/src/controllers/image.ts b/modules/hudozka-api/src/controllers/image.ts index bd4bc5ca..a35b756c 100644 --- a/modules/hudozka-api/src/controllers/image.ts +++ b/modules/hudozka-api/src/controllers/image.ts @@ -1,5 +1,5 @@ import Image from '../core/Image' -import { encodeImage } from '../api/image' +import { encodeImage } from '../factory/image' import { Request, Response } from 'express' export async function getItem(req: Request, res: Response) { diff --git a/modules/hudozka-api/src/controllers/page.ts b/modules/hudozka-api/src/controllers/page.ts index ed857ea7..e3c835db 100644 --- a/modules/hudozka-api/src/controllers/page.ts +++ b/modules/hudozka-api/src/controllers/page.ts @@ -1,7 +1,7 @@ import { Request, Response } from 'express' import Page from '../core/Page' import { getPathWithNoTrailingSlash } from '../lib/url' -import { encodePage } from '../api/page' +import { encodePage } from '../factory/page' export async function getItem(req: Request, res: Response) { const id = req.params.slug diff --git a/modules/hudozka-api/src/controllers/person.ts b/modules/hudozka-api/src/controllers/person.ts index e195e94f..e3dd429a 100644 --- a/modules/hudozka-api/src/controllers/person.ts +++ b/modules/hudozka-api/src/controllers/person.ts @@ -1,5 +1,5 @@ import Teacher from '../core/Teacher' -import { encodePerson } from '../api/persons' +import { encodePerson } from '../factory/persons' import { Request, Response } from 'express' import { prioritySort } from '../lib/sort' diff --git a/modules/hudozka-api/src/factory/files.js b/modules/hudozka-api/src/factory/files.js new file mode 100644 index 00000000..1866de43 --- /dev/null +++ b/modules/hudozka-api/src/factory/files.js @@ -0,0 +1,36 @@ +import ImageArtifactType from '../core/ImageArtifactType' + +const sizes = [ + ImageArtifactType.MEDIUM, + ImageArtifactType.BIG, + ImageArtifactType.ORIGIN, +] + +export function encodeFilePreview(file, sizes) { + const preview = file.preview + if (!preview) return null + + const image = preview.findArtifact(sizes) + if (!image) return null + + return image.url +} + +export function encodeFile(file) { + const imageUrl = encodeFilePreview(file, sizes) + const category = (file.category || '') + .replace('Documents/', '') + .replace('Pages/', '') + .replace('Albums/', '') + .replace('Articles /', '') + + return { + imageUrl, + category, + title: file.title, + fileName: file.fileInfo.name, + fileSize: file.fileInfo.size, + fileUrl: file.url, + url: file.viewUrl, + } +} diff --git a/modules/hudozka-api/src/factory/image.js b/modules/hudozka-api/src/factory/image.js new file mode 100644 index 00000000..717ec47b --- /dev/null +++ b/modules/hudozka-api/src/factory/image.js @@ -0,0 +1,24 @@ +import ImageArtifactType from '../core/ImageArtifactType' + +export function encodeImage(image) { + const artifacts = [ + ImageArtifactType.SMALL, + ImageArtifactType.MEDIUM, + ImageArtifactType.BIG, + ImageArtifactType.LARGE, + ImageArtifactType.ORIGIN, + ImageArtifactType.ORIGINAL, + ImageArtifactType.FACEBOOK = 'fb' + ].reduce((acc, size) => { + return { + ...acc, + [size]: image.getPicture(size), + } + }, {}) + + return { + artifacts, + hash: image.hash, + file: image.file, + } +} diff --git a/modules/hudozka-api/src/factory/page.js b/modules/hudozka-api/src/factory/page.js new file mode 100644 index 00000000..ef6bb38d --- /dev/null +++ b/modules/hudozka-api/src/factory/page.js @@ -0,0 +1,12 @@ +import { encodeImage } from './image' + +export function encodePage(page) { + return { + id: page.id, + title: page.title, + url: page.url, + data: page.data, + preview: encodeImage(page.preview), + tokens: page.tokens, + } +} diff --git a/modules/hudozka-api/src/factory/persons.js b/modules/hudozka-api/src/factory/persons.js new file mode 100644 index 00000000..21d6f410 --- /dev/null +++ b/modules/hudozka-api/src/factory/persons.js @@ -0,0 +1,13 @@ +import ImageArtifactType from '../core/ImageArtifactType' +import { encodeImage } from './image' +const profilePicture = profile => profile.picture.getPicture(ImageArtifactType.BIG) + +export function encodePerson(person) { + return { + ...person, + shortName: person.shortName(), + name: person.splitName(), + picture: profilePicture(person), + preview: encodeImage(person.picture), + } +} \ No newline at end of file