From 1fd61899eaea245a5844e33e21f04b2562f16e5e Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 3 May 2021 11:06:19 +0200 Subject: Add ability to filter my videos by live --- shared/extra-utils/videos/videos.ts | 16 ++++++++++++- shared/models/search/boolean-both-query.model.ts | 1 + shared/models/search/index.ts | 3 ++- shared/models/search/nsfw-query.model.ts | 1 - shared/models/search/videos-common-query.model.ts | 28 +++++++++++++++++++++++ shared/models/search/videos-search-query.model.ts | 22 ++---------------- 6 files changed, 48 insertions(+), 23 deletions(-) create mode 100644 shared/models/search/boolean-both-query.model.ts delete mode 100644 shared/models/search/nsfw-query.model.ts create mode 100644 shared/models/search/videos-common-query.model.ts (limited to 'shared') diff --git a/shared/extra-utils/videos/videos.ts b/shared/extra-utils/videos/videos.ts index 67fe82d41..a0143b0ef 100644 --- a/shared/extra-utils/videos/videos.ts +++ b/shared/extra-utils/videos/videos.ts @@ -8,6 +8,7 @@ import * as request from 'supertest' import { v4 as uuidv4 } from 'uuid' import validator from 'validator' import { HttpStatusCode } from '@shared/core-utils' +import { VideosCommonQuery } from '@shared/models' import { loadLanguages, VIDEO_CATEGORIES, VIDEO_LANGUAGES, VIDEO_LICENCES, VIDEO_PRIVACIES } from '../../../server/initializers/constants' import { VideoDetails, VideoPrivacy } from '../../models/videos' import { @@ -195,6 +196,18 @@ function getMyVideos (url: string, accessToken: string, start: number, count: nu .expect('Content-Type', /json/) } +function getMyVideosWithFilter (url: string, accessToken: string, query: { isLive?: boolean }) { + const path = '/api/v1/users/me/videos' + + return makeGetRequest({ + url, + path, + token: accessToken, + query, + statusCodeExpected: HttpStatusCode.OK_200 + }) +} + function getAccountVideos ( url: string, accessToken: string, @@ -295,7 +308,7 @@ function getVideosListSort (url: string, sort: string) { .expect('Content-Type', /json/) } -function getVideosWithFilters (url: string, query: { tagsAllOf: string[], categoryOneOf: number[] | number }) { +function getVideosWithFilters (url: string, query: VideosCommonQuery) { const path = '/api/v1/videos' return request(url) @@ -751,6 +764,7 @@ export { completeVideoCheck, checkVideoFilesWereRemoved, getPlaylistVideos, + getMyVideosWithFilter, uploadVideoAndGetId, getLocalIdByUUID, getVideoIdFromUUID diff --git a/shared/models/search/boolean-both-query.model.ts b/shared/models/search/boolean-both-query.model.ts new file mode 100644 index 000000000..57b0e8d44 --- /dev/null +++ b/shared/models/search/boolean-both-query.model.ts @@ -0,0 +1 @@ +export type BooleanBothQuery = 'true' | 'false' | 'both' diff --git a/shared/models/search/index.ts b/shared/models/search/index.ts index e2d0ab620..697ceccb1 100644 --- a/shared/models/search/index.ts +++ b/shared/models/search/index.ts @@ -1,4 +1,5 @@ -export * from './nsfw-query.model' +export * from './boolean-both-query.model' export * from './search-target-query.model' +export * from './videos-common-query.model' export * from './videos-search-query.model' export * from './video-channels-search-query.model' diff --git a/shared/models/search/nsfw-query.model.ts b/shared/models/search/nsfw-query.model.ts deleted file mode 100644 index 6b6ad1991..000000000 --- a/shared/models/search/nsfw-query.model.ts +++ /dev/null @@ -1 +0,0 @@ -export type NSFWQuery = 'true' | 'false' | 'both' diff --git a/shared/models/search/videos-common-query.model.ts b/shared/models/search/videos-common-query.model.ts new file mode 100644 index 000000000..bd02489ea --- /dev/null +++ b/shared/models/search/videos-common-query.model.ts @@ -0,0 +1,28 @@ +import { VideoFilter } from '../videos' +import { BooleanBothQuery } from './boolean-both-query.model' + +// These query parameters can be used with any endpoint that list videos +export interface VideosCommonQuery { + start?: number + count?: number + sort?: string + + nsfw?: BooleanBothQuery + + isLive?: boolean + + categoryOneOf?: number[] + + licenceOneOf?: number[] + + languageOneOf?: string[] + + tagsOneOf?: string[] + tagsAllOf?: string[] + + filter?: VideoFilter +} + +export interface VideosWithSearchCommonQuery extends VideosCommonQuery { + search?: string +} diff --git a/shared/models/search/videos-search-query.model.ts b/shared/models/search/videos-search-query.model.ts index 3ce4ff73e..406f6cab2 100644 --- a/shared/models/search/videos-search-query.model.ts +++ b/shared/models/search/videos-search-query.model.ts @@ -1,33 +1,15 @@ -import { VideoFilter } from '../videos' -import { NSFWQuery } from './nsfw-query.model' import { SearchTargetQuery } from './search-target-query.model' +import { VideosCommonQuery } from './videos-common-query.model' -export interface VideosSearchQuery extends SearchTargetQuery { +export interface VideosSearchQuery extends SearchTargetQuery, VideosCommonQuery { search?: string - start?: number - count?: number - sort?: string - startDate?: string // ISO 8601 endDate?: string // ISO 8601 originallyPublishedStartDate?: string // ISO 8601 originallyPublishedEndDate?: string // ISO 8601 - nsfw?: NSFWQuery - - categoryOneOf?: number[] - - licenceOneOf?: number[] - - languageOneOf?: string[] - - tagsOneOf?: string[] - tagsAllOf?: string[] - durationMin?: number // seconds durationMax?: number // seconds - - filter?: VideoFilter } -- cgit v1.2.3