aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/controllers/api/search
diff options
context:
space:
mode:
authorChocobozzz <me@florianbigard.com>2021-11-05 14:11:19 +0100
committerChocobozzz <me@florianbigard.com>2021-11-05 14:11:19 +0100
commitdedcd583b2461895f816c3dd67d56f05d3274f6b (patch)
tree058880eda468f4282cefce275451aa76567a15b8 /server/controllers/api/search
parent3233acdadf34045b51da91d42bcd6b3cbf3036f4 (diff)
downloadPeerTube-dedcd583b2461895f816c3dd67d56f05d3274f6b.tar.gz
PeerTube-dedcd583b2461895f816c3dd67d56f05d3274f6b.tar.zst
PeerTube-dedcd583b2461895f816c3dd67d56f05d3274f6b.zip
Fix remote interaction
When we fetch a ressource that is a redirection of another ressource
Diffstat (limited to 'server/controllers/api/search')
-rw-r--r--server/controllers/api/search/search-video-channels.ts6
-rw-r--r--server/controllers/api/search/search-video-playlists.ts6
-rw-r--r--server/controllers/api/search/search-videos.ts7
3 files changed, 13 insertions, 6 deletions
diff --git a/server/controllers/api/search/search-video-channels.ts b/server/controllers/api/search/search-video-channels.ts
index c9e81bffa..aa5afb46e 100644
--- a/server/controllers/api/search/search-video-channels.ts
+++ b/server/controllers/api/search/search-video-channels.ts
@@ -1,7 +1,7 @@
1import express from 'express' 1import express from 'express'
2import { sanitizeUrl } from '@server/helpers/core-utils' 2import { sanitizeUrl } from '@server/helpers/core-utils'
3import { pickSearchChannelQuery } from '@server/helpers/query' 3import { pickSearchChannelQuery } from '@server/helpers/query'
4import { doJSONRequest } from '@server/helpers/requests' 4import { doJSONRequest, findLatestRedirection } from '@server/helpers/requests'
5import { CONFIG } from '@server/initializers/config' 5import { CONFIG } from '@server/initializers/config'
6import { WEBSERVER } from '@server/initializers/constants' 6import { WEBSERVER } from '@server/initializers/constants'
7import { Hooks } from '@server/lib/plugins/hooks' 7import { Hooks } from '@server/lib/plugins/hooks'
@@ -126,7 +126,9 @@ async function searchVideoChannelURI (search: string, isWebfingerSearch: boolean
126 126
127 if (isUserAbleToSearchRemoteURI(res)) { 127 if (isUserAbleToSearchRemoteURI(res)) {
128 try { 128 try {
129 const actor = await getOrCreateAPActor(uri, 'all', true, true) 129 const latestUri = await findLatestRedirection(uri, { activityPub: true })
130
131 const actor = await getOrCreateAPActor(latestUri, 'all', true, true)
130 videoChannel = actor.VideoChannel 132 videoChannel = actor.VideoChannel
131 } catch (err) { 133 } catch (err) {
132 logger.info('Cannot search remote video channel %s.', uri, { err }) 134 logger.info('Cannot search remote video channel %s.', uri, { err })
diff --git a/server/controllers/api/search/search-video-playlists.ts b/server/controllers/api/search/search-video-playlists.ts
index 61a11c74a..e76d65fde 100644
--- a/server/controllers/api/search/search-video-playlists.ts
+++ b/server/controllers/api/search/search-video-playlists.ts
@@ -3,7 +3,7 @@ import { sanitizeUrl } from '@server/helpers/core-utils'
3import { isUserAbleToSearchRemoteURI } from '@server/helpers/express-utils' 3import { isUserAbleToSearchRemoteURI } from '@server/helpers/express-utils'
4import { logger } from '@server/helpers/logger' 4import { logger } from '@server/helpers/logger'
5import { pickSearchPlaylistQuery } from '@server/helpers/query' 5import { pickSearchPlaylistQuery } from '@server/helpers/query'
6import { doJSONRequest } from '@server/helpers/requests' 6import { doJSONRequest, findLatestRedirection } from '@server/helpers/requests'
7import { getFormattedObjects } from '@server/helpers/utils' 7import { getFormattedObjects } from '@server/helpers/utils'
8import { CONFIG } from '@server/initializers/config' 8import { CONFIG } from '@server/initializers/config'
9import { WEBSERVER } from '@server/initializers/constants' 9import { WEBSERVER } from '@server/initializers/constants'
@@ -105,7 +105,9 @@ async function searchVideoPlaylistsURI (search: string, res: express.Response) {
105 105
106 if (isUserAbleToSearchRemoteURI(res)) { 106 if (isUserAbleToSearchRemoteURI(res)) {
107 try { 107 try {
108 videoPlaylist = await getOrCreateAPVideoPlaylist(search) 108 const url = await findLatestRedirection(search, { activityPub: true })
109
110 videoPlaylist = await getOrCreateAPVideoPlaylist(url)
109 } catch (err) { 111 } catch (err) {
110 logger.info('Cannot search remote video playlist %s.', search, { err }) 112 logger.info('Cannot search remote video playlist %s.', search, { err })
111 } 113 }
diff --git a/server/controllers/api/search/search-videos.ts b/server/controllers/api/search/search-videos.ts
index 6db70acdf..68428d766 100644
--- a/server/controllers/api/search/search-videos.ts
+++ b/server/controllers/api/search/search-videos.ts
@@ -1,7 +1,7 @@
1import express from 'express' 1import express from 'express'
2import { sanitizeUrl } from '@server/helpers/core-utils' 2import { sanitizeUrl } from '@server/helpers/core-utils'
3import { pickSearchVideoQuery } from '@server/helpers/query' 3import { pickSearchVideoQuery } from '@server/helpers/query'
4import { doJSONRequest } from '@server/helpers/requests' 4import { doJSONRequest, findLatestRedirection } from '@server/helpers/requests'
5import { CONFIG } from '@server/initializers/config' 5import { CONFIG } from '@server/initializers/config'
6import { WEBSERVER } from '@server/initializers/constants' 6import { WEBSERVER } from '@server/initializers/constants'
7import { getOrCreateAPVideo } from '@server/lib/activitypub/videos' 7import { getOrCreateAPVideo } from '@server/lib/activitypub/videos'
@@ -142,7 +142,10 @@ async function searchVideoURI (url: string, res: express.Response) {
142 refreshVideo: false 142 refreshVideo: false
143 } 143 }
144 144
145 const result = await getOrCreateAPVideo({ videoObject: url, syncParam }) 145 const result = await getOrCreateAPVideo({
146 videoObject: await findLatestRedirection(url, { activityPub: true }),
147 syncParam
148 })
146 video = result ? result.video : undefined 149 video = result ? result.video : undefined
147 } catch (err) { 150 } catch (err) {
148 logger.info('Cannot search remote video %s.', url, { err }) 151 logger.info('Cannot search remote video %s.', url, { err })