// Order of the tests we want to execute
import './reset-password'
+import './update-host'
+++ /dev/null
-'use strict'
-
-const program = require('commander')
-
-const utilsClient = require('../../utils/clients')
-const utilsLogin = require('../../utils/login')
-
-program
- .option('-u, --url <url>', 'Server url')
- .option('-n, --username <username>', 'Username')
- .option('-p, --password <token>', 'Password')
- .parse(process.argv)
-
-if (
- !program.url ||
- !program.username ||
- !program.password
-) {
- throw new Error('All arguments are required.')
-}
-
-const server = {
- url: program.url,
- user: {
- username: program.username,
- password: program.password
- },
- client: {
- id: null,
- secret: null
- }
-}
-
-utilsClient.getClient(program.url, function (err, res) {
- if (err) throw err
-
- server.client.id = res.body.client_id
- server.client.secret = res.body.client_secret
-
- utilsLogin.loginAndGetAccessToken(server, function (err, accessToken) {
- if (err) throw err
-
- console.log(accessToken)
- })
-})
--- /dev/null
+import * as program from 'commander'
+import * as Promise from 'bluebird'
+
+import {
+ getClient,
+ loginAndGetAccessToken
+} from '../../utils'
+
+program
+ .option('-u, --url <url>', 'Server url')
+ .option('-n, --username <username>', 'Username')
+ .option('-p, --password <token>', 'Password')
+ .parse(process.argv)
+
+if (
+ !program['url'] ||
+ !program['username'] ||
+ !program['password']
+) {
+ throw new Error('All arguments are required.')
+}
+
+const server = {
+ url: program['url'],
+ user: {
+ username: program['username'],
+ password: program['password']
+ },
+ client: {
+ id: null,
+ secret: null
+ }
+}
+
+getClient(program.url)
+ .then(res => {
+ server.client.id = res.body.client_id
+ server.client.secret = res.body.client_secret
+
+ return loginAndGetAccessToken(server)
+ })
+ .then(accessToken => {
+ console.log(accessToken)
+ process.exit(0)
+ })
+ .catch(err => {
+ console.error(err)
+ process.exit(-1)
+ })
+++ /dev/null
-'use strict'
-
-const program = require('commander')
-const eachSeries = require('async/eachSeries')
-const exec = require('child_process').exec
-const fs = require('fs')
-const path = require('path')
-
-program
- .option('-u, --url <url>', 'Server url')
- .option('-n, --username <username>', 'Username')
- .option('-p, --password <token>', 'Password')
- .option('-i, --directory <directory>', 'Videos directory absolute path')
- .option('-d, --description <description>', 'Video description')
- .option('-t, --tags <tags>', 'Video tags', list)
- .parse(process.argv)
-
-if (
- !program.url ||
- !program.username ||
- !program.password ||
- !program.directory ||
- !program.description ||
- !program.tags
-) {
- throw new Error('All arguments are required.')
-}
-
-exec('node ./get-access-token -u "' + program.url + '" -n "' + program.username + '" -p "' + program.password + '"', function (err, stdout) {
- if (err) throw err
-
- const accessToken = stdout.replace('\n', '')
-
- fs.readdir(program.directory, function (err, files) {
- if (err) throw err
-
- eachSeries(files, function (file, callbackEach) {
- const video = {
- tags: program.tags,
- name: file,
- description: program.description
- }
-
- let command = 'node ./upload'
- command += ' -u "' + program.url + '"'
- command += ' -a "' + accessToken + '"'
- command += ' -n "' + video.name + '"'
- command += ' -d "' + video.description + '"'
- command += ' -t "' + video.tags.join(',') + '"'
- command += ' -f "' + path.join(program.directory, file) + '"'
-
- exec(command, function (err, stdout) {
- if (err) console.log(err)
-
- console.log(stdout)
-
- return callbackEach()
- })
- })
- })
-})
-
-// ----------------------------------------------------------------------------
-
-function list (val) {
- return val.split(',')
-}
--- /dev/null
+import * as program from 'commander'
+import * as Promise from 'bluebird'
+import { isAbsolute } from 'path'
+import { join } from 'path'
+
+import { readdirPromise } from '../../../helpers/core-utils'
+import { execCLI } from '../../utils'
+
+program
+ .option('-u, --url <url>', 'Server url')
+ .option('-U, --username <username>', 'Username')
+ .option('-p, --password <token>', 'Password')
+ .option('-i, --input <directory>', 'Videos directory absolute path')
+ .option('-d, --description <description>', 'Video descriptions')
+ .option('-c, --category <category>', 'Video categories')
+ .option('-l, --licence <licence>', 'Video licences')
+ .option('-t, --tags <tags>', 'Video tags', list)
+ .parse(process.argv)
+
+if (
+ !program['url'] ||
+ !program['username'] ||
+ !program['password'] ||
+ !program['input'] ||
+ !program['description'] ||
+ !program['category'] ||
+ !program['licence'] ||
+ !program['tags']
+) {
+ throw new Error('All arguments are required.')
+}
+
+if (isAbsolute(program['input']) === false) {
+ throw new Error('Input path should be absolute.')
+}
+
+let command = `npm run ts-node -- ${__dirname}/get-access-token.ts`
+command += ` -u "${program['url']}"`
+command += ` -n "${program['username']}"`
+command += ` -p "${program['password']}"`
+
+execCLI(command)
+ .then(stdout => {
+ const accessToken = stdout.replace('\n', '')
+
+ console.log(accessToken)
+
+ return readdirPromise(program['input']).then(files => ({ accessToken, files }))
+ })
+ .then(({ accessToken, files }) => {
+ return Promise.each(files, file => {
+ const video = {
+ tags: program['tags'],
+ name: file,
+ description: program['description'],
+ category: program['category'],
+ licence: program['licence']
+ }
+
+ let command = `npm run ts-node -- ${__dirname}/upload.ts`
+ command += ` -u "${program['url']}"`
+ command += ` -a "${accessToken}"`
+ command += ` -n "${video.name}"`
+ command += ` -d "${video.description}"`
+ command += ` -c "${video.category}"`
+ command += ` -l "${video.licence}"`
+ command += ` -t "${video.tags.join(',')}"`
+ command += ` -f "${join(program['input'], file)}"`
+
+ return execCLI(command).then(stdout => console.log(stdout))
+ })
+ })
+ .then(() => process.exit(0))
+ .catch(err => {
+ console.error(err)
+ process.exit(-1)
+ })
+
+// ----------------------------------------------------------------------------
+
+function list (val) {
+ return val.split(',')
+}
+++ /dev/null
-'use strict'
-
-const program = require('commander')
-const fs = require('fs')
-
-const utils = require('../../utils/videos')
-
-program
- .option('-u, --url <url>', 'Server url')
- .option('-a, --access-token <token>', 'Access token')
- .option('-n, --name <name>', 'Video name')
- .option('-x, --nsfw', 'Video is Not Safe For Work')
- .option('-c, --category <category number>', 'Category number')
- .option('-l, --licence <licence number>', 'Licence number')
- .option('-g, --language <language number>', 'Language number')
- .option('-d, --description <description>', 'Video description')
- .option('-t, --tags <tags>', 'Video tags', list)
- .option('-f, --file <file>', 'Video absolute file path')
- .parse(process.argv)
-
-if (
- !program.url ||
- !program.accessToken ||
- !program.name ||
- !program.category ||
- !program.licence ||
- !program.language ||
- !program.nsfw ||
- !program.description ||
- !program.tags ||
- !Array.isArray(program.tags) ||
- program.tags.length === 0 ||
- !program.file
-) {
- throw new Error('All arguments are required.')
-}
-
-fs.access(program.file, fs.F_OK, function (err) {
- if (err) throw err
-
- upload(
- program.url,
- program.accessToken,
- program.name,
- program.category,
- program.licence,
- program.language,
- program.nsfw,
- program.description,
- program.tags,
- program.file
- )
-})
-
-// ----------------------------------------------------------------------------
-
-function list (val) {
- return val.split(',')
-}
-
-function upload (url, accessToken, name, category, licence, language, nsfw, description, tags, fixture) {
- console.log('Uploading %s video...', program.name)
-
- const videoAttributes = {
- name,
- category,
- licence,
- language,
- nsfw,
- description,
- tags,
- fixture
- }
- utils.uploadVideo(url, accessToken, videoAttributes, function (err) {
- if (err) throw err
-
- console.log('Video uploaded.')
- })
-}
--- /dev/null
+import * as program from 'commander'
+import { access, constants } from 'fs'
+import { isAbsolute } from 'path'
+import { promisify } from 'util'
+
+const accessPromise = promisify(access)
+
+import { uploadVideo } from '../../utils'
+
+program
+ .option('-u, --url <url>', 'Server url')
+ .option('-a, --access-token <token>', 'Access token')
+ .option('-n, --name <name>', 'Video name')
+ .option('-N, --nsfw', 'Video is Not Safe For Work')
+ .option('-c, --category <category number>', 'Category number')
+ .option('-l, --licence <licence number>', 'Licence number')
+ .option('-L, --language <language number>', 'Language number')
+ .option('-d, --description <description>', 'Video description')
+ .option('-t, --tags <tags>', 'Video tags', list)
+ .option('-f, --file <file>', 'Video absolute file path')
+ .parse(process.argv)
+
+if (!program['tags']) program['tags'] = []
+if (!program['nsfw']) program['nsfw'] = false
+
+if (
+ !program['url'] ||
+ !program['accessToken'] ||
+ !program['name'] ||
+ !program['category'] ||
+ !program['licence'] ||
+ !program['description'] ||
+ !program['file']
+) {
+ throw new Error('All arguments but tags, language and nsfw are required.')
+}
+
+if (isAbsolute(program['file']) === false) {
+ throw new Error('File path should be absolute.')
+}
+
+accessPromise(program['file'], constants.F_OK)
+ .then(() => {
+ return upload(
+ program['url'],
+ program['accessToken'],
+ program['name'],
+ program['category'],
+ program['licence'],
+ program['language'],
+ program['nsfw'],
+ program['description'],
+ program['tags'],
+ program['file']
+ )
+ })
+ .then(() => process.exit(0))
+ .catch(err => {
+ console.error(err)
+ process.exit(-1)
+ })
+
+// ----------------------------------------------------------------------------
+
+function list (val) {
+ return val.split(',')
+}
+
+function upload (url, accessToken, name, category, licence, language, nsfw, description, tags, fixture) {
+ console.log('Uploading %s video...', program['name'])
+
+ const videoAttributes = {
+ name,
+ category,
+ licence,
+ language,
+ nsfw,
+ description,
+ tags,
+ fixture
+ }
+ return uploadVideo(url, accessToken, videoAttributes).then(() => {
+ console.log(`Video ${name} uploaded.`)
+ })
+}
}
async function execCLI (command: string) {
- return new Promise((res, rej) => {
+ return new Promise<string>((res, rej) => {
exec(command, (err, stdout, stderr) => {
if (err) return rej(err)
import * as request from 'supertest'
function getClient (url: string) {
- const path = '/api/v1/clients/local'
+ const path = '/api/v1/oauth-clients/local'
return request(url)
.get(path)
.field('name', attributes.name)
.field('category', attributes.category.toString())
.field('licence', attributes.licence.toString())
- .field('language', attributes.language.toString())
.field('nsfw', JSON.stringify(attributes.nsfw))
.field('description', attributes.description)
+ if (attributes.language !== undefined) {
+ req.field('language', attributes.language.toString())
+ }
+
for (let i = 0; i < attributes.tags.length; i++) {
req.field('tags[' + i + ']', attributes.tags[i])
}