138 lines
3.6 KiB
TypeScript
138 lines
3.6 KiB
TypeScript
/* eslint-disable @typescript-eslint/no-floating-promises */
|
|
|
|
import * as request from 'supertest'
|
|
import { makeDeleteRequest, makeGetRequest } from '../requests/requests'
|
|
import { HttpStatusCode } from '../../../shared/core-utils/miscs/http-error-codes'
|
|
|
|
function getAdminVideoComments (options: {
|
|
url: string
|
|
token: string
|
|
start: number
|
|
count: number
|
|
sort?: string
|
|
isLocal?: boolean
|
|
search?: string
|
|
searchAccount?: string
|
|
searchVideo?: string
|
|
}) {
|
|
const { url, token, start, count, sort, isLocal, search, searchAccount, searchVideo } = options
|
|
const path = '/api/v1/videos/comments'
|
|
|
|
const query = {
|
|
start,
|
|
count,
|
|
sort: sort || '-createdAt'
|
|
}
|
|
|
|
if (isLocal !== undefined) Object.assign(query, { isLocal })
|
|
if (search !== undefined) Object.assign(query, { search })
|
|
if (searchAccount !== undefined) Object.assign(query, { searchAccount })
|
|
if (searchVideo !== undefined) Object.assign(query, { searchVideo })
|
|
|
|
return makeGetRequest({
|
|
url,
|
|
path,
|
|
token,
|
|
query,
|
|
statusCodeExpected: HttpStatusCode.OK_200
|
|
})
|
|
}
|
|
|
|
function getVideoCommentThreads (url: string, videoId: number | string, start: number, count: number, sort?: string, token?: string) {
|
|
const path = '/api/v1/videos/' + videoId + '/comment-threads'
|
|
|
|
const req = request(url)
|
|
.get(path)
|
|
.query({ start: start })
|
|
.query({ count: count })
|
|
|
|
if (sort) req.query({ sort })
|
|
if (token) req.set('Authorization', 'Bearer ' + token)
|
|
|
|
return req.set('Accept', 'application/json')
|
|
.expect(HttpStatusCode.OK_200)
|
|
.expect('Content-Type', /json/)
|
|
}
|
|
|
|
function getVideoThreadComments (url: string, videoId: number | string, threadId: number, token?: string) {
|
|
const path = '/api/v1/videos/' + videoId + '/comment-threads/' + threadId
|
|
|
|
const req = request(url)
|
|
.get(path)
|
|
.set('Accept', 'application/json')
|
|
|
|
if (token) req.set('Authorization', 'Bearer ' + token)
|
|
|
|
return req.expect(HttpStatusCode.OK_200)
|
|
.expect('Content-Type', /json/)
|
|
}
|
|
|
|
function addVideoCommentThread (
|
|
url: string,
|
|
token: string,
|
|
videoId: number | string,
|
|
text: string,
|
|
expectedStatus = HttpStatusCode.OK_200
|
|
) {
|
|
const path = '/api/v1/videos/' + videoId + '/comment-threads'
|
|
|
|
return request(url)
|
|
.post(path)
|
|
.send({ text })
|
|
.set('Accept', 'application/json')
|
|
.set('Authorization', 'Bearer ' + token)
|
|
.expect(expectedStatus)
|
|
}
|
|
|
|
function addVideoCommentReply (
|
|
url: string,
|
|
token: string,
|
|
videoId: number | string,
|
|
inReplyToCommentId: number,
|
|
text: string,
|
|
expectedStatus = HttpStatusCode.OK_200
|
|
) {
|
|
const path = '/api/v1/videos/' + videoId + '/comments/' + inReplyToCommentId
|
|
|
|
return request(url)
|
|
.post(path)
|
|
.send({ text })
|
|
.set('Accept', 'application/json')
|
|
.set('Authorization', 'Bearer ' + token)
|
|
.expect(expectedStatus)
|
|
}
|
|
|
|
async function findCommentId (url: string, videoId: number | string, text: string) {
|
|
const res = await getVideoCommentThreads(url, videoId, 0, 25, '-createdAt')
|
|
|
|
return res.body.data.find(c => c.text === text).id as number
|
|
}
|
|
|
|
function deleteVideoComment (
|
|
url: string,
|
|
token: string,
|
|
videoId: number | string,
|
|
commentId: number,
|
|
statusCodeExpected = HttpStatusCode.NO_CONTENT_204
|
|
) {
|
|
const path = '/api/v1/videos/' + videoId + '/comments/' + commentId
|
|
|
|
return makeDeleteRequest({
|
|
url,
|
|
path,
|
|
token,
|
|
statusCodeExpected
|
|
})
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------
|
|
|
|
export {
|
|
getVideoCommentThreads,
|
|
getAdminVideoComments,
|
|
getVideoThreadComments,
|
|
addVideoCommentThread,
|
|
addVideoCommentReply,
|
|
findCommentId,
|
|
deleteVideoComment
|
|
}
|