From 2b4dd7e26d93c2d9bef4f365cb03c511eff4ca8f Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 25 Apr 2019 13:55:28 +0200 Subject: Fix optional privacy in upload endpoint --- server/tools/peertube-upload.ts | 96 ++++++++++++++--------------------------- 1 file changed, 32 insertions(+), 64 deletions(-) (limited to 'server/tools/peertube-upload.ts') diff --git a/server/tools/peertube-upload.ts b/server/tools/peertube-upload.ts index 13ca94e51..687f2e60b 100644 --- a/server/tools/peertube-upload.ts +++ b/server/tools/peertube-upload.ts @@ -4,7 +4,7 @@ import { isAbsolute } from 'path' import { getClient, login } from '../../shared/extra-utils' import { uploadVideo } from '../../shared/extra-utils/' import { VideoPrivacy } from '../../shared/models/videos' -import { netrc, getSettings } from './cli' +import { getRemoteObjectOrDie, getSettings } from './cli' program .name('upload') @@ -26,49 +26,15 @@ program .option('-f, --file ', 'Video absolute file path') .parse(process.argv) -if (!program['tags']) program['tags'] = [] -if (!program['nsfw']) program['nsfw'] = false -if (!program['privacy']) program['privacy'] = VideoPrivacy.PUBLIC -if (!program['commentsEnabled']) program['commentsEnabled'] = false -if (!program['downloadEnabled']) program['downloadEnabled'] = true - getSettings() .then(settings => { - if ( - (!program['url'] || - !program['username'] || - !program['password']) && - (settings.remotes.length === 0) - ) { - if (!program['url']) console.error('--url field is required.') - if (!program['username']) console.error('--username field is required.') - if (!program['password']) console.error('--password field is required.') - if (!program['videoName']) console.error('--video-name field is required.') - if (!program['file']) console.error('--file field is required.') - process.exit(-1) - } + const { url, username, password } = getRemoteObjectOrDie(program, settings) - if ( - (!program['url'] || - !program['username'] || - !program['password']) && - (settings.remotes.length > 0) - ) { - if (!program['url']) { - program['url'] = (settings.default !== -1) ? - settings.remotes[settings.default] : - settings.remotes[0] - } - if (!program['username']) program['username'] = netrc.machines[program['url']].login - if (!program['password']) program['password'] = netrc.machines[program['url']].password - } + if (!program['videoName'] || !program['file'] || !program['channelId']) { + if (!program['videoName']) console.error('--video-name is required.') + if (!program['file']) console.error('--file is required.') + if (!program['channelId']) console.error('--channel-id is required.') - if ( - !program['videoName'] || - !program['file'] - ) { - if (!program['videoName']) console.error('--video-name field is required.') - if (!program['file']) console.error('--file field is required.') process.exit(-1) } @@ -77,28 +43,25 @@ getSettings() process.exit(-1) } - run().catch(err => { + run(url, username, password).catch(err => { console.error(err) process.exit(-1) }) }) -async function run () { - const res = await getClient(program[ 'url' ]) +async function run (url: string, username: string, password: string) { + const resClient = await getClient(program[ 'url' ]) const client = { - id: res.body.client_id, - secret: res.body.client_secret + id: resClient.body.client_id, + secret: resClient.body.client_secret } - const user = { - username: program[ 'username' ], - password: program[ 'password' ] - } + const user = { username, password } let accessToken: string try { - const res2 = await login(program[ 'url' ], client, user) - accessToken = res2.body.access_token + const res = await login(url, client, user) + accessToken = res.body.access_token } catch (err) { throw new Error('Cannot authenticate. Please check your username/password.') } @@ -109,27 +72,32 @@ async function run () { const videoAttributes = { name: program['videoName'], - category: program['category'], + category: program['category'] || undefined, channelId: program['channelId'], - licence: program['licence'], - language: program['language'], - nsfw: program['nsfw'], - description: program['videoDescription'], - tags: program['tags'], - commentsEnabled: program['commentsEnabled'], - downloadEnabled: program['downloadEnabled'], + licence: program['licence'] || undefined, + language: program['language'] || undefined, + nsfw: program['nsfw'] !== undefined ? program['nsfw'] : false, + description: program['videoDescription'] || '', + tags: program['tags'] || [], + commentsEnabled: program['commentsEnabled'] !== undefined ? program['commentsEnabled'] : true, + downloadEnabled: program['downloadEnabled'] !== undefined ? program['downloadEnabled'] : true, fixture: program['file'], thumbnailfile: program['thumbnail'], previewfile: program['preview'], waitTranscoding: true, - privacy: program['privacy'], + privacy: program['privacy'] || VideoPrivacy.PUBLIC, support: undefined } - await uploadVideo(program[ 'url' ], accessToken, videoAttributes) - - console.log(`Video ${program['videoName']} uploaded.`) - process.exit(0) + try { + await uploadVideo(url, accessToken, videoAttributes) + console.log(`Video ${program['videoName']} uploaded.`) + process.exit(0) + } catch (err) { + console.log('coucou') + console.error(require('util').inspect(err)) + process.exit(-1) + } } // ---------------------------------------------------------------------------- -- cgit v1.2.3