]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - shared/extra-utils/server/jobs.ts
Refactor video views
[github/Chocobozzz/PeerTube.git] / shared / extra-utils / server / jobs.ts
index a3683913a531356e3e9f38d9ea9f3b057dd67f9a..afaaa5cd6097fc3a64525859ac2b1941760d94ed 100644 (file)
@@ -1,69 +1,22 @@
-import * as request from 'supertest'
-import { HttpStatusCode } from '../../../shared/core-utils/miscs/http-error-codes'
-import { makeGetRequest } from '../../../shared/extra-utils'
-import { Job, JobState, JobType } from '../../models'
-import { wait } from '../miscs/miscs'
-import { ServerInfo } from './servers'
 
-function buildJobsUrl (state?: JobState) {
-  let path = '/api/v1/jobs'
+import { JobState, JobType } from '../../models'
+import { wait } from '../miscs'
+import { PeerTubeServer } from './server'
 
-  if (state) path += '/' + state
-
-  return path
-}
-
-function getJobsList (url: string, accessToken: string, state?: JobState) {
-  const path = buildJobsUrl(state)
-
-  return request(url)
-    .get(path)
-    .set('Accept', 'application/json')
-    .set('Authorization', 'Bearer ' + accessToken)
-    .expect(HttpStatusCode.OK_200)
-    .expect('Content-Type', /json/)
-}
-
-function getJobsListPaginationAndSort (options: {
-  url: string
-  accessToken: string
-  start: number
-  count: number
-  sort: string
-  state?: JobState
-  jobType?: JobType
-}) {
-  const { url, accessToken, state, start, count, sort, jobType } = options
-  const path = buildJobsUrl(state)
-
-  const query = {
-    start,
-    count,
-    sort,
-    jobType
-  }
-
-  return makeGetRequest({
-    url,
-    path,
-    token: accessToken,
-    statusCodeExpected: HttpStatusCode.OK_200,
-    query
-  })
-}
-
-async function waitJobs (serversArg: ServerInfo[] | ServerInfo) {
+async function waitJobs (serversArg: PeerTubeServer[] | PeerTubeServer, skipDelayed = false) {
   const pendingJobWait = process.env.NODE_PENDING_JOB_WAIT
     ? parseInt(process.env.NODE_PENDING_JOB_WAIT, 10)
     : 250
 
-  let servers: ServerInfo[]
+  let servers: PeerTubeServer[]
+
+  if (Array.isArray(serversArg) === false) servers = [ serversArg as PeerTubeServer ]
+  else servers = serversArg as PeerTubeServer[]
 
-  if (Array.isArray(serversArg) === false) servers = [ serversArg as ServerInfo ]
-  else servers = serversArg as ServerInfo[]
+  const states: JobState[] = [ 'waiting', 'active' ]
+  if (!skipDelayed) states.push('delayed')
 
-  const states: JobState[] = [ 'waiting', 'active', 'delayed' ]
-  const repeatableJobs = [ 'videos-views', 'activitypub-cleaner' ]
+  const repeatableJobs: JobType[] = [ 'videos-views-stats', 'activitypub-cleaner' ]
   let pendingRequests: boolean
 
   function tasksBuilder () {
@@ -72,15 +25,13 @@ async function waitJobs (serversArg: ServerInfo[] | ServerInfo) {
     // Check if each server has pending request
     for (const server of servers) {
       for (const state of states) {
-        const p = getJobsListPaginationAndSort({
-          url: server.url,
-          accessToken: server.accessToken,
-          state: state,
+        const p = server.jobs.list({
+          state,
           start: 0,
           count: 10,
           sort: '-createdAt'
-        }).then(res => res.body.data)
-          .then((jobs: Job[]) => jobs.filter(j => !repeatableJobs.includes(j.type)))
+        }).then(body => body.data)
+          .then(jobs => jobs.filter(j => !repeatableJobs.includes(j.type)))
           .then(jobs => {
             if (jobs.length !== 0) {
               pendingRequests = true
@@ -90,7 +41,7 @@ async function waitJobs (serversArg: ServerInfo[] | ServerInfo) {
         tasks.push(p)
       }
 
-      const p = server.debugCommand.getDebug()
+      const p = server.debug.getDebug()
         .then(obj => {
           if (obj.activityPubMessagesWaiting !== 0) {
             pendingRequests = true
@@ -122,7 +73,5 @@ async function waitJobs (serversArg: ServerInfo[] | ServerInfo) {
 // ---------------------------------------------------------------------------
 
 export {
-  getJobsList,
-  waitJobs,
-  getJobsListPaginationAndSort
+  waitJobs
 }