aboutsummaryrefslogtreecommitdiffhomepage
path: root/shared/extra-utils
diff options
context:
space:
mode:
authorChocobozzz <me@florianbigard.com>2021-07-08 16:21:42 +0200
committerChocobozzz <me@florianbigard.com>2021-07-20 15:27:18 +0200
commit313228e9c3b5bcef5391228c9b949d05d32ad7bb (patch)
treed2f39a2bd32ef093224c594d72219809504321b7 /shared/extra-utils
parente6346d59e63135cf012ed18c102d3b0179ef565f (diff)
downloadPeerTube-313228e9c3b5bcef5391228c9b949d05d32ad7bb.tar.gz
PeerTube-313228e9c3b5bcef5391228c9b949d05d32ad7bb.tar.zst
PeerTube-313228e9c3b5bcef5391228c9b949d05d32ad7bb.zip
Introduce history command
Diffstat (limited to 'shared/extra-utils')
-rw-r--r--shared/extra-utils/server/servers.ts4
-rw-r--r--shared/extra-utils/videos/history-command.ts59
-rw-r--r--shared/extra-utils/videos/index.ts2
-rw-r--r--shared/extra-utils/videos/video-history.ts49
4 files changed, 63 insertions, 51 deletions
diff --git a/shared/extra-utils/server/servers.ts b/shared/extra-utils/server/servers.ts
index 78b3be9c7..bd5c29e51 100644
--- a/shared/extra-utils/server/servers.ts
+++ b/shared/extra-utils/server/servers.ts
@@ -18,7 +18,7 @@ import { makeGetRequest } from '../requests/requests'
18import { SearchCommand } from '../search' 18import { SearchCommand } from '../search'
19import { SocketIOCommand } from '../socket' 19import { SocketIOCommand } from '../socket'
20import { AccountsCommand, BlocklistCommand, SubscriptionsCommand } from '../users' 20import { AccountsCommand, BlocklistCommand, SubscriptionsCommand } from '../users'
21import { BlacklistCommand, CaptionsCommand, ChangeOwnershipCommand, LiveCommand, PlaylistsCommand, ServicesCommand } from '../videos' 21import { BlacklistCommand, CaptionsCommand, ChangeOwnershipCommand, HistoryCommand, LiveCommand, PlaylistsCommand, ServicesCommand } from '../videos'
22import { ConfigCommand } from './config-command' 22import { ConfigCommand } from './config-command'
23import { ContactFormCommand } from './contact-form-command' 23import { ContactFormCommand } from './contact-form-command'
24import { DebugCommand } from './debug-command' 24import { DebugCommand } from './debug-command'
@@ -106,6 +106,7 @@ interface ServerInfo {
106 captionsCommand?: CaptionsCommand 106 captionsCommand?: CaptionsCommand
107 changeOwnershipCommand?: ChangeOwnershipCommand 107 changeOwnershipCommand?: ChangeOwnershipCommand
108 playlistsCommand?: PlaylistsCommand 108 playlistsCommand?: PlaylistsCommand
109 historyCommand?: HistoryCommand
109} 110}
110 111
111function parallelTests () { 112function parallelTests () {
@@ -337,6 +338,7 @@ async function runServer (server: ServerInfo, configOverrideArg?: any, args = []
337 server.captionsCommand = new CaptionsCommand(server) 338 server.captionsCommand = new CaptionsCommand(server)
338 server.changeOwnershipCommand = new ChangeOwnershipCommand(server) 339 server.changeOwnershipCommand = new ChangeOwnershipCommand(server)
339 server.playlistsCommand = new PlaylistsCommand(server) 340 server.playlistsCommand = new PlaylistsCommand(server)
341 server.historyCommand = new HistoryCommand(server)
340 342
341 res(server) 343 res(server)
342 }) 344 })
diff --git a/shared/extra-utils/videos/history-command.ts b/shared/extra-utils/videos/history-command.ts
new file mode 100644
index 000000000..8a144a312
--- /dev/null
+++ b/shared/extra-utils/videos/history-command.ts
@@ -0,0 +1,59 @@
1import { ResultList, Video } from '@shared/models'
2import { HttpStatusCode } from '../../core-utils/miscs/http-error-codes'
3import { AbstractCommand, OverrideCommandOptions } from '../shared'
4
5export class HistoryCommand extends AbstractCommand {
6
7 wathVideo (options: OverrideCommandOptions & {
8 videoId: number | string
9 currentTime: number
10 }) {
11 const { videoId, currentTime } = options
12
13 const path = '/api/v1/videos/' + videoId + '/watching'
14 const fields = { currentTime }
15
16 return this.putBodyRequest({
17 ...options,
18
19 path,
20 fields,
21 implicitToken: true,
22 defaultExpectedStatus: HttpStatusCode.NO_CONTENT_204
23 })
24 }
25
26 list (options: OverrideCommandOptions & {
27 search?: string
28 } = {}) {
29 const { search } = options
30 const path = '/api/v1/users/me/history/videos'
31
32 return this.getRequestBody<ResultList<Video>>({
33 ...options,
34
35 path,
36 query: {
37 search
38 },
39 implicitToken: true,
40 defaultExpectedStatus: HttpStatusCode.OK_200
41 })
42 }
43
44 remove (options: OverrideCommandOptions & {
45 beforeDate?: string
46 } = {}) {
47 const { beforeDate } = options
48 const path = '/api/v1/users/me/history/videos/remove'
49
50 return this.postBodyRequest({
51 ...options,
52
53 path,
54 fields: { beforeDate },
55 implicitToken: true,
56 defaultExpectedStatus: HttpStatusCode.NO_CONTENT_204
57 })
58 }
59}
diff --git a/shared/extra-utils/videos/index.ts b/shared/extra-utils/videos/index.ts
index 1f6241d7e..74667fc06 100644
--- a/shared/extra-utils/videos/index.ts
+++ b/shared/extra-utils/videos/index.ts
@@ -2,6 +2,7 @@ export * from './blacklist-command'
2export * from './captions' 2export * from './captions'
3export * from './captions-command' 3export * from './captions-command'
4export * from './change-ownership-command' 4export * from './change-ownership-command'
5export * from './history-command'
5export * from './live-command' 6export * from './live-command'
6export * from './live' 7export * from './live'
7export * from './playlists-command' 8export * from './playlists-command'
@@ -9,7 +10,6 @@ export * from './playlists'
9export * from './services-command' 10export * from './services-command'
10export * from './video-channels' 11export * from './video-channels'
11export * from './video-comments' 12export * from './video-comments'
12export * from './video-history'
13export * from './video-imports' 13export * from './video-imports'
14export * from './video-streaming-playlists' 14export * from './video-streaming-playlists'
15export * from './videos' 15export * from './videos'
diff --git a/shared/extra-utils/videos/video-history.ts b/shared/extra-utils/videos/video-history.ts
deleted file mode 100644
index b989e14dc..000000000
--- a/shared/extra-utils/videos/video-history.ts
+++ /dev/null
@@ -1,49 +0,0 @@
1import { makeGetRequest, makePostBodyRequest, makePutBodyRequest } from '../requests/requests'
2import { HttpStatusCode } from '../../../shared/core-utils/miscs/http-error-codes'
3
4function userWatchVideo (
5 url: string,
6 token: string,
7 videoId: number | string,
8 currentTime: number,
9 statusCodeExpected = HttpStatusCode.NO_CONTENT_204
10) {
11 const path = '/api/v1/videos/' + videoId + '/watching'
12 const fields = { currentTime }
13
14 return makePutBodyRequest({ url, path, token, fields, statusCodeExpected })
15}
16
17function listMyVideosHistory (url: string, token: string, search?: string) {
18 const path = '/api/v1/users/me/history/videos'
19
20 return makeGetRequest({
21 url,
22 path,
23 token,
24 query: {
25 search
26 },
27 statusCodeExpected: HttpStatusCode.OK_200
28 })
29}
30
31function removeMyVideosHistory (url: string, token: string, beforeDate?: string) {
32 const path = '/api/v1/users/me/history/videos/remove'
33
34 return makePostBodyRequest({
35 url,
36 path,
37 token,
38 fields: beforeDate ? { beforeDate } : {},
39 statusCodeExpected: HttpStatusCode.NO_CONTENT_204
40 })
41}
42
43// ---------------------------------------------------------------------------
44
45export {
46 userWatchVideo,
47 listMyVideosHistory,
48 removeMyVideosHistory
49}