]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/helpers/requests.ts
emit more specific status codes on video upload (#3423)
[github/Chocobozzz/PeerTube.git] / server / helpers / requests.ts
index 2e30c94a1e8ed2e53846bebb0e92c2fad9fc976f..b556c392e262b321075afaa5c73d6dd79c9a7ea0 100644 (file)
@@ -1,7 +1,7 @@
 import * as Bluebird from 'bluebird'
 import { createWriteStream, remove } from 'fs-extra'
 import * as request from 'request'
-import { ACTIVITY_PUB } from '../initializers/constants'
+import { ACTIVITY_PUB, PEERTUBE_VERSION, WEBSERVER } from '../initializers/constants'
 import { processImage } from './image-utils'
 import { join } from 'path'
 import { logger } from './logger'
@@ -11,8 +11,10 @@ function doRequest <T> (
   requestOptions: request.CoreOptions & request.UriOptions & { activityPub?: boolean },
   bodyKBLimit = 1000 // 1MB
 ): Bluebird<{ response: request.RequestResponse, body: T }> {
+  if (!(requestOptions.headers)) requestOptions.headers = {}
+  requestOptions.headers['User-Agent'] = getUserAgent()
+
   if (requestOptions.activityPub === true) {
-    if (!Array.isArray(requestOptions.headers)) requestOptions.headers = {}
     requestOptions.headers['accept'] = ACTIVITY_PUB.ACCEPT_HEADER
   }
 
@@ -27,6 +29,9 @@ function doRequestAndSaveToFile (
   destPath: string,
   bodyKBLimit = 10000 // 10MB
 ) {
+  if (!requestOptions.headers) requestOptions.headers = {}
+  requestOptions.headers['User-Agent'] = getUserAgent()
+
   return new Bluebird<void>((res, rej) => {
     const file = createWriteStream(destPath)
     file.on('finish', () => res())
@@ -60,6 +65,10 @@ async function downloadImage (url: string, destDir: string, destName: string, si
   }
 }
 
+function getUserAgent () {
+  return `PeerTube/${PEERTUBE_VERSION} (+${WEBSERVER.URL})`
+}
+
 // ---------------------------------------------------------------------------
 
 export {