mirror of https://github.com/Chocobozzz/PeerTube
				
				
				
			
		
			
				
	
	
		
			229 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			229 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
| import { pick } from '@shared/core-utils'
 | |
| import {
 | |
|   AbuseFilter,
 | |
|   AbuseMessage,
 | |
|   AbusePredefinedReasonsString,
 | |
|   AbuseState,
 | |
|   AbuseUpdate,
 | |
|   AbuseVideoIs,
 | |
|   AdminAbuse,
 | |
|   HttpStatusCode,
 | |
|   ResultList,
 | |
|   UserAbuse
 | |
| } from '@shared/models'
 | |
| import { unwrapBody } from '../requests/requests'
 | |
| import { AbstractCommand, OverrideCommandOptions } from '../shared'
 | |
| 
 | |
| export class AbusesCommand extends AbstractCommand {
 | |
| 
 | |
|   report (options: OverrideCommandOptions & {
 | |
|     reason: string
 | |
| 
 | |
|     accountId?: number
 | |
|     videoId?: number
 | |
|     commentId?: number
 | |
| 
 | |
|     predefinedReasons?: AbusePredefinedReasonsString[]
 | |
| 
 | |
|     startAt?: number
 | |
|     endAt?: number
 | |
|   }) {
 | |
|     const path = '/api/v1/abuses'
 | |
| 
 | |
|     const video = options.videoId
 | |
|       ? {
 | |
|         id: options.videoId,
 | |
|         startAt: options.startAt,
 | |
|         endAt: options.endAt
 | |
|       }
 | |
|       : undefined
 | |
| 
 | |
|     const comment = options.commentId
 | |
|       ? { id: options.commentId }
 | |
|       : undefined
 | |
| 
 | |
|     const account = options.accountId
 | |
|       ? { id: options.accountId }
 | |
|       : undefined
 | |
| 
 | |
|     const body = {
 | |
|       account,
 | |
|       video,
 | |
|       comment,
 | |
| 
 | |
|       reason: options.reason,
 | |
|       predefinedReasons: options.predefinedReasons
 | |
|     }
 | |
| 
 | |
|     return unwrapBody<{ abuse: { id: number } }>(this.postBodyRequest({
 | |
|       ...options,
 | |
| 
 | |
|       path,
 | |
|       fields: body,
 | |
|       implicitToken: true,
 | |
|       defaultExpectedStatus: HttpStatusCode.OK_200
 | |
|     }))
 | |
|   }
 | |
| 
 | |
|   getAdminList (options: OverrideCommandOptions & {
 | |
|     start?: number
 | |
|     count?: number
 | |
|     sort?: string
 | |
| 
 | |
|     id?: number
 | |
|     predefinedReason?: AbusePredefinedReasonsString
 | |
|     search?: string
 | |
|     filter?: AbuseFilter
 | |
|     state?: AbuseState
 | |
|     videoIs?: AbuseVideoIs
 | |
|     searchReporter?: string
 | |
|     searchReportee?: string
 | |
|     searchVideo?: string
 | |
|     searchVideoChannel?: string
 | |
|   } = {}) {
 | |
|     const toPick: (keyof typeof options)[] = [
 | |
|       'count',
 | |
|       'filter',
 | |
|       'id',
 | |
|       'predefinedReason',
 | |
|       'search',
 | |
|       'searchReportee',
 | |
|       'searchReporter',
 | |
|       'searchVideo',
 | |
|       'searchVideoChannel',
 | |
|       'sort',
 | |
|       'start',
 | |
|       'state',
 | |
|       'videoIs'
 | |
|     ]
 | |
| 
 | |
|     const path = '/api/v1/abuses'
 | |
| 
 | |
|     const defaultQuery = { sort: 'createdAt' }
 | |
|     const query = { ...defaultQuery, ...pick(options, toPick) }
 | |
| 
 | |
|     return this.getRequestBody<ResultList<AdminAbuse>>({
 | |
|       ...options,
 | |
| 
 | |
|       path,
 | |
|       query,
 | |
|       implicitToken: true,
 | |
|       defaultExpectedStatus: HttpStatusCode.OK_200
 | |
|     })
 | |
|   }
 | |
| 
 | |
|   getUserList (options: OverrideCommandOptions & {
 | |
|     start?: number
 | |
|     count?: number
 | |
|     sort?: string
 | |
| 
 | |
|     id?: number
 | |
|     search?: string
 | |
|     state?: AbuseState
 | |
|   }) {
 | |
|     const toPick: (keyof typeof options)[] = [
 | |
|       'id',
 | |
|       'search',
 | |
|       'state',
 | |
|       'start',
 | |
|       'count',
 | |
|       'sort'
 | |
|     ]
 | |
| 
 | |
|     const path = '/api/v1/users/me/abuses'
 | |
| 
 | |
|     const defaultQuery = { sort: 'createdAt' }
 | |
|     const query = { ...defaultQuery, ...pick(options, toPick) }
 | |
| 
 | |
|     return this.getRequestBody<ResultList<UserAbuse>>({
 | |
|       ...options,
 | |
| 
 | |
|       path,
 | |
|       query,
 | |
|       implicitToken: true,
 | |
|       defaultExpectedStatus: HttpStatusCode.OK_200
 | |
|     })
 | |
|   }
 | |
| 
 | |
|   update (options: OverrideCommandOptions & {
 | |
|     abuseId: number
 | |
|     body: AbuseUpdate
 | |
|   }) {
 | |
|     const { abuseId, body } = options
 | |
|     const path = '/api/v1/abuses/' + abuseId
 | |
| 
 | |
|     return this.putBodyRequest({
 | |
|       ...options,
 | |
| 
 | |
|       path,
 | |
|       fields: body,
 | |
|       implicitToken: true,
 | |
|       defaultExpectedStatus: HttpStatusCode.NO_CONTENT_204
 | |
|     })
 | |
|   }
 | |
| 
 | |
|   delete (options: OverrideCommandOptions & {
 | |
|     abuseId: number
 | |
|   }) {
 | |
|     const { abuseId } = options
 | |
|     const path = '/api/v1/abuses/' + abuseId
 | |
| 
 | |
|     return this.deleteRequest({
 | |
|       ...options,
 | |
| 
 | |
|       path,
 | |
|       implicitToken: true,
 | |
|       defaultExpectedStatus: HttpStatusCode.NO_CONTENT_204
 | |
|     })
 | |
|   }
 | |
| 
 | |
|   listMessages (options: OverrideCommandOptions & {
 | |
|     abuseId: number
 | |
|   }) {
 | |
|     const { abuseId } = options
 | |
|     const path = '/api/v1/abuses/' + abuseId + '/messages'
 | |
| 
 | |
|     return this.getRequestBody<ResultList<AbuseMessage>>({
 | |
|       ...options,
 | |
| 
 | |
|       path,
 | |
|       implicitToken: true,
 | |
|       defaultExpectedStatus: HttpStatusCode.OK_200
 | |
|     })
 | |
|   }
 | |
| 
 | |
|   deleteMessage (options: OverrideCommandOptions & {
 | |
|     abuseId: number
 | |
|     messageId: number
 | |
|   }) {
 | |
|     const { abuseId, messageId } = options
 | |
|     const path = '/api/v1/abuses/' + abuseId + '/messages/' + messageId
 | |
| 
 | |
|     return this.deleteRequest({
 | |
|       ...options,
 | |
| 
 | |
|       path,
 | |
|       implicitToken: true,
 | |
|       defaultExpectedStatus: HttpStatusCode.NO_CONTENT_204
 | |
|     })
 | |
|   }
 | |
| 
 | |
|   addMessage (options: OverrideCommandOptions & {
 | |
|     abuseId: number
 | |
|     message: string
 | |
|   }) {
 | |
|     const { abuseId, message } = options
 | |
|     const path = '/api/v1/abuses/' + abuseId + '/messages'
 | |
| 
 | |
|     return this.postBodyRequest({
 | |
|       ...options,
 | |
| 
 | |
|       path,
 | |
|       fields: { message },
 | |
|       implicitToken: true,
 | |
|       defaultExpectedStatus: HttpStatusCode.OK_200
 | |
|     })
 | |
|   }
 | |
| 
 | |
| }
 |