]>
Commit | Line | Data |
---|---|---|
1 | import { ResultList } from '../../shared' | |
2 | import { CONFIG } from '../initializers' | |
3 | import { ApplicationModel } from '../models/application/application' | |
4 | import { pseudoRandomBytesPromise, sha256 } from './core-utils' | |
5 | import { logger } from './logger' | |
6 | import { join } from 'path' | |
7 | import { Instance as ParseTorrent } from 'parse-torrent' | |
8 | import { remove } from 'fs-extra' | |
9 | import * as memoizee from 'memoizee' | |
10 | ||
11 | function deleteFileAsync (path: string) { | |
12 | remove(path) | |
13 | .catch(err => logger.error('Cannot delete the file %s asynchronously.', path, { err })) | |
14 | } | |
15 | ||
16 | async function generateRandomString (size: number) { | |
17 | const raw = await pseudoRandomBytesPromise(size) | |
18 | ||
19 | return raw.toString('hex') | |
20 | } | |
21 | ||
22 | interface FormattableToJSON { | |
23 | toFormattedJSON (args?: any) | |
24 | } | |
25 | ||
26 | function getFormattedObjects<U, T extends FormattableToJSON> (objects: T[], objectsTotal: number, formattedArg?: any) { | |
27 | const formattedObjects: U[] = [] | |
28 | ||
29 | objects.forEach(object => { | |
30 | formattedObjects.push(object.toFormattedJSON(formattedArg)) | |
31 | }) | |
32 | ||
33 | return { | |
34 | total: objectsTotal, | |
35 | data: formattedObjects | |
36 | } as ResultList<U> | |
37 | } | |
38 | ||
39 | const getServerActor = memoizee(async function () { | |
40 | const application = await ApplicationModel.load() | |
41 | if (!application) throw Error('Could not load Application from database.') | |
42 | ||
43 | return application.Account.Actor | |
44 | }) | |
45 | ||
46 | function generateVideoTmpPath (target: string | ParseTorrent) { | |
47 | const id = typeof target === 'string' ? target : target.infoHash | |
48 | ||
49 | const hash = sha256(id) | |
50 | return join(CONFIG.STORAGE.VIDEOS_DIR, hash + '-import.mp4') | |
51 | } | |
52 | ||
53 | function getSecureTorrentName (originalName: string) { | |
54 | return sha256(originalName) + '.torrent' | |
55 | } | |
56 | ||
57 | // --------------------------------------------------------------------------- | |
58 | ||
59 | export { | |
60 | deleteFileAsync, | |
61 | generateRandomString, | |
62 | getFormattedObjects, | |
63 | getSecureTorrentName, | |
64 | getServerActor, | |
65 | generateVideoTmpPath | |
66 | } |