import { URL } from 'url'
import { truncate } from 'lodash'
import { exec } from 'child_process'
+import { isArray } from './custom-validators/misc'
+
+const objectConverter = (oldObject: any, keyConverter: (e: string) => string, valueConverter: (e: any) => any) => {
+ if (!oldObject || typeof oldObject !== 'object') {
+ return valueConverter(oldObject)
+ }
+
+ if (isArray(oldObject)) {
+ return oldObject.map(e => objectConverter(e, keyConverter, valueConverter))
+ }
+
+ const newObject = {}
+ Object.keys(oldObject).forEach(oldKey => {
+ const newKey = keyConverter(oldKey)
+ newObject[ newKey ] = objectConverter(oldObject[ oldKey ], keyConverter, valueConverter)
+ })
+
+ return newObject
+}
const timeTable = {
ms: 1,
return truncate(str, options)
}
-function sha256 (str: string, encoding: HexBase64Latin1Encoding = 'hex') {
+function sha256 (str: string | Buffer, encoding: HexBase64Latin1Encoding = 'hex') {
return createHash('sha256').update(str).digest(encoding)
}
+function sha1 (str: string | Buffer, encoding: HexBase64Latin1Encoding = 'hex') {
+ return createHash('sha1').update(str).digest(encoding)
+}
+
function promisify0<A> (func: (cb: (err: any, result: A) => void) => void): () => Promise<A> {
return function promisified (): Promise<A> {
return new Promise<A>((resolve: (arg: A) => void, reject: (err: any) => void) => {
isTestInstance,
isProdInstance,
+ objectConverter,
root,
escapeHTML,
pageToStartAndCount,
sanitizeHost,
buildPath,
peertubeTruncate,
+
sha256,
+ sha1,
promisify0,
promisify1,