X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Flib%2Factivitypub%2Furl.ts;h=2f68f7a17017d8925d7454c47c176835bddb8d4f;hb=d3f4689bded2a6f5b589fe79c3f8b6082d553d9e;hp=7816b0be081a834e4a9ae1deb9f2467cff4ec99e;hpb=55d5fbc583f872b9890698322c5b03c62f371640;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/lib/activitypub/url.ts b/server/lib/activitypub/url.ts index 7816b0be0..2f68f7a17 100644 --- a/server/lib/activitypub/url.ts +++ b/server/lib/activitypub/url.ts @@ -1,15 +1,18 @@ -import { WEBSERVER } from '../../initializers/constants' +import { REMOTE_SCHEME, WEBSERVER } from '../../initializers/constants' import { + MAbuseFull, MAbuseId, MActor, MActorFollowActors, MActorId, MActorUrl, MCommentId, + MLocalVideoViewer, MVideoId, MVideoPlaylistElement, MVideoUrl, - MVideoUUID + MVideoUUID, + MVideoWithHost } from '../../types/models' import { MVideoFileVideoUUID } from '../../types/models/video/video-file' import { MVideoPlaylist, MVideoPlaylistUUID } from '../../types/models/video/video-playlist' @@ -53,8 +56,12 @@ function getLocalAbuseActivityPubUrl (abuse: MAbuseId) { return WEBSERVER.URL + '/admin/abuses/' + abuse.id } -function getLocalVideoViewActivityPubUrl (byActor: MActorUrl, video: MVideoId) { - return byActor.url + '/views/videos/' + video.id + '/' + new Date().toISOString() +function getLocalVideoViewActivityPubUrl (byActor: MActorUrl, video: MVideoId, viewerIdentifier: string) { + return byActor.url + '/views/videos/' + video.id + '/' + viewerIdentifier +} + +function getLocalVideoViewerActivityPubUrl (stats: MLocalVideoViewer) { + return WEBSERVER.URL + '/videos/local-viewer/' + stats.uuid } function getVideoLikeActivityPubUrlByLocalActor (byActor: MActorUrl, video: MVideoId) { @@ -112,6 +119,35 @@ function getUndoActivityPubUrl (originalUrl: string) { return originalUrl + '/undo' } +// --------------------------------------------------------------------------- + +function getAbuseTargetUrl (abuse: MAbuseFull) { + return abuse.VideoAbuse?.Video?.url || + abuse.VideoCommentAbuse?.VideoComment?.url || + abuse.FlaggedAccount.Actor.url +} + +// --------------------------------------------------------------------------- + +function buildRemoteVideoBaseUrl (video: MVideoWithHost, path: string, scheme?: string) { + if (!scheme) scheme = REMOTE_SCHEME.HTTP + + const host = video.VideoChannel.Actor.Server.host + + return scheme + '://' + host + path +} + +// --------------------------------------------------------------------------- + +function checkUrlsSameHost (url1: string, url2: string) { + const idHost = new URL(url1).host + const actorHost = new URL(url2).host + + return idHost && actorHost && idHost.toLowerCase() === actorHost.toLowerCase() +} + +// --------------------------------------------------------------------------- + export { getLocalVideoActivityPubUrl, getLocalVideoPlaylistActivityPubUrl, @@ -135,5 +171,10 @@ export { getLocalVideoSharesActivityPubUrl, getLocalVideoCommentsActivityPubUrl, getLocalVideoLikesActivityPubUrl, - getLocalVideoDislikesActivityPubUrl + getLocalVideoDislikesActivityPubUrl, + getLocalVideoViewerActivityPubUrl, + + getAbuseTargetUrl, + checkUrlsSameHost, + buildRemoteVideoBaseUrl }