]>
Commit | Line | Data |
---|---|---|
6fcd19ba | 1 | import { ResultList } from '../../shared' |
0626e7af | 2 | import { CONFIG } from '../initializers' |
50d6de9c | 3 | import { ApplicationModel } from '../models/application/application' |
62689b94 | 4 | import { pseudoRandomBytesPromise, sha256 } from './core-utils' |
efc32059 | 5 | import { logger } from './logger' |
3e17515e | 6 | import { join } from 'path' |
990b6a0b | 7 | import { Instance as ParseTorrent } from 'parse-torrent' |
62689b94 | 8 | import { remove } from 'fs-extra' |
7348b1fd | 9 | import * as memoizee from 'memoizee' |
cbe2f7c3 | 10 | |
cf7a61b5 | 11 | function deleteFileAsync (path: string) { |
62689b94 | 12 | remove(path) |
cf7a61b5 C |
13 | .catch(err => logger.error('Cannot delete the file %s asynchronously.', path, { err })) |
14 | } | |
15 | ||
f5028693 C |
16 | async function generateRandomString (size: number) { |
17 | const raw = await pseudoRandomBytesPromise(size) | |
18 | ||
19 | return raw.toString('hex') | |
e4c87ec2 C |
20 | } |
21 | ||
40298b02 | 22 | interface FormattableToJSON { |
2186386c | 23 | toFormattedJSON (args?: any) |
154898b0 C |
24 | } |
25 | ||
2186386c | 26 | function getFormattedObjects<U, T extends FormattableToJSON> (objects: T[], objectsTotal: number, formattedArg?: any) { |
0aef76c4 | 27 | const formattedObjects: U[] = [] |
55fa55a9 | 28 | |
075f16ca | 29 | objects.forEach(object => { |
2186386c | 30 | formattedObjects.push(object.toFormattedJSON(formattedArg)) |
55fa55a9 C |
31 | }) |
32 | ||
2186386c | 33 | return { |
55fa55a9 | 34 | total: objectsTotal, |
0aef76c4 | 35 | data: formattedObjects |
2186386c | 36 | } as ResultList<U> |
55fa55a9 C |
37 | } |
38 | ||
7348b1fd C |
39 | const getServerActor = memoizee(async function () { |
40 | const application = await ApplicationModel.load() | |
41 | if (!application) throw Error('Could not load Application from database.') | |
2cebd797 | 42 | |
7348b1fd C |
43 | return application.Account.Actor |
44 | }) | |
7a7724e6 | 45 | |
990b6a0b C |
46 | function generateVideoTmpPath (target: string | ParseTorrent) { |
47 | const id = typeof target === 'string' ? target : target.infoHash | |
48 | ||
49 | const hash = sha256(id) | |
ce33919c C |
50 | return join(CONFIG.STORAGE.VIDEOS_DIR, hash + '-import.mp4') |
51 | } | |
52 | ||
990b6a0b C |
53 | function getSecureTorrentName (originalName: string) { |
54 | return sha256(originalName) + '.torrent' | |
55 | } | |
792dbaf0 | 56 | |
abb2c792 RK |
57 | function getVersion () { |
58 | const tag = require('child_process') | |
59 | .execSync('[[ ! -d .git ]] || git name-rev --name-only --tags --no-undefined HEAD 2>/dev/null || true', { stdio: [0,1,2] }) | |
60 | if (tag) return tag.replace(/^v/, '') | |
61 | ||
62 | const version = require('child_process') | |
63 | .execSync('[[ ! -d .git ]] || git rev-parse --short HEAD').toString().trim() | |
64 | if (version) return version | |
65 | ||
66 | return require('../../../package.json').version | |
67 | } | |
68 | ||
9f10b292 | 69 | // --------------------------------------------------------------------------- |
c45f7f84 | 70 | |
65fcc311 | 71 | export { |
cf7a61b5 | 72 | deleteFileAsync, |
65fcc311 | 73 | generateRandomString, |
0aef76c4 | 74 | getFormattedObjects, |
990b6a0b | 75 | getSecureTorrentName, |
50d6de9c | 76 | getServerActor, |
abb2c792 | 77 | getVersion, |
ce33919c | 78 | generateVideoTmpPath |
65fcc311 | 79 | } |