From: Chocobozzz Date: Thu, 18 Oct 2018 06:48:24 +0000 (+0200) Subject: AP mimeType -> mediaType X-Git-Tag: v1.1.0-alpha.2~21 X-Git-Url: https://git.immae.eu/?a=commitdiff_plain;h=e27ff5da6ed7bc1f56f50f862b80fb0c7d8a6d98;p=github%2FChocobozzz%2FPeerTube.git AP mimeType -> mediaType --- diff --git a/server/helpers/custom-validators/activitypub/videos.ts b/server/helpers/custom-validators/activitypub/videos.ts index f88d26561..95fe824b9 100644 --- a/server/helpers/custom-validators/activitypub/videos.ts +++ b/server/helpers/custom-validators/activitypub/videos.ts @@ -81,19 +81,20 @@ function isRemoteVideoUrlValid (url: any) { return url.type === 'Link' && ( - ACTIVITY_PUB.URL_MIME_TYPES.VIDEO.indexOf(url.mimeType) !== -1 && + // TODO: remove mimeType (backward compatibility, introduced in v1.1.0) + ACTIVITY_PUB.URL_MIME_TYPES.VIDEO.indexOf(url.mediaType || url.mimeType) !== -1 && isActivityPubUrlValid(url.href) && validator.isInt(url.height + '', { min: 0 }) && validator.isInt(url.size + '', { min: 0 }) && (!url.fps || validator.isInt(url.fps + '', { min: -1 })) ) || ( - ACTIVITY_PUB.URL_MIME_TYPES.TORRENT.indexOf(url.mimeType) !== -1 && + ACTIVITY_PUB.URL_MIME_TYPES.TORRENT.indexOf(url.mediaType || url.mimeType) !== -1 && isActivityPubUrlValid(url.href) && validator.isInt(url.height + '', { min: 0 }) ) || ( - ACTIVITY_PUB.URL_MIME_TYPES.MAGNET.indexOf(url.mimeType) !== -1 && + ACTIVITY_PUB.URL_MIME_TYPES.MAGNET.indexOf(url.mediaType || url.mimeType) !== -1 && validator.isLength(url.href, { min: 5 }) && validator.isInt(url.height + '', { min: 0 }) ) diff --git a/server/lib/activitypub/videos.ts b/server/lib/activitypub/videos.ts index 54cea542f..3da363c0a 100644 --- a/server/lib/activitypub/videos.ts +++ b/server/lib/activitypub/videos.ts @@ -310,7 +310,8 @@ export { function isActivityVideoUrlObject (url: ActivityUrlObject): url is ActivityVideoUrlObject { const mimeTypes = Object.keys(VIDEO_MIMETYPE_EXT) - return mimeTypes.indexOf(url.mimeType) !== -1 && url.mimeType.startsWith('video/') + const urlMediaType = url.mediaType || url.mimeType + return mimeTypes.indexOf(urlMediaType) !== -1 && urlMediaType.startsWith('video/') } async function createVideo (videoObject: VideoTorrentObject, channelActor: ActorModel, waitThumbnail = false) { @@ -468,7 +469,8 @@ function videoFileActivityUrlToDBAttributes (video: VideoModel, videoObject: Vid for (const fileUrl of fileUrls) { // Fetch associated magnet uri const magnet = videoObject.url.find(u => { - return u.mimeType === 'application/x-bittorrent;x-scheme-handler/magnet' && u.height === fileUrl.height + const mediaType = u.mediaType || u.mimeType + return mediaType === 'application/x-bittorrent;x-scheme-handler/magnet' && (u as any).height === fileUrl.height }) if (!magnet) throw new Error('Cannot find associated magnet uri for file ' + fileUrl.href) @@ -478,8 +480,9 @@ function videoFileActivityUrlToDBAttributes (video: VideoModel, videoObject: Vid throw new Error('Cannot parse magnet URI ' + magnet.href) } + const mediaType = fileUrl.mediaType || fileUrl.mimeType const attribute = { - extname: VIDEO_MIMETYPE_EXT[ fileUrl.mimeType ], + extname: VIDEO_MIMETYPE_EXT[ mediaType ], infoHash: parsed.infoHash, resolution: fileUrl.height, size: fileUrl.size, diff --git a/server/models/redundancy/video-redundancy.ts b/server/models/redundancy/video-redundancy.ts index 2ebe23ef1..cbfc7f7fa 100644 --- a/server/models/redundancy/video-redundancy.ts +++ b/server/models/redundancy/video-redundancy.ts @@ -408,6 +408,7 @@ export class VideoRedundancyModel extends Model { url: { type: 'Link', mimeType: VIDEO_EXT_MIMETYPE[ this.VideoFile.extname ] as any, + mediaType: VIDEO_EXT_MIMETYPE[ this.VideoFile.extname ] as any, href: this.fileUrl, height: this.VideoFile.resolution, size: this.VideoFile.size, diff --git a/server/models/video/video-format-utils.ts b/server/models/video/video-format-utils.ts index 905e84449..e3f8d525b 100644 --- a/server/models/video/video-format-utils.ts +++ b/server/models/video/video-format-utils.ts @@ -208,6 +208,7 @@ function videoModelToActivityPubObject (video: VideoModel): VideoTorrentObject { url.push({ type: 'Link', mimeType: VIDEO_EXT_MIMETYPE[ file.extname ] as any, + mediaType: VIDEO_EXT_MIMETYPE[ file.extname ] as any, href: video.getVideoFileUrl(file, baseUrlHttp), height: file.resolution, size: file.size, @@ -217,6 +218,7 @@ function videoModelToActivityPubObject (video: VideoModel): VideoTorrentObject { url.push({ type: 'Link', mimeType: 'application/x-bittorrent' as 'application/x-bittorrent', + mediaType: 'application/x-bittorrent' as 'application/x-bittorrent', href: video.getTorrentUrl(file, baseUrlHttp), height: file.resolution }) @@ -224,6 +226,7 @@ function videoModelToActivityPubObject (video: VideoModel): VideoTorrentObject { url.push({ type: 'Link', mimeType: 'application/x-bittorrent;x-scheme-handler/magnet' as 'application/x-bittorrent;x-scheme-handler/magnet', + mediaType: 'application/x-bittorrent;x-scheme-handler/magnet' as 'application/x-bittorrent;x-scheme-handler/magnet', href: video.generateMagnetUri(file, baseUrlHttp, baseUrlWs), height: file.resolution }) @@ -233,6 +236,7 @@ function videoModelToActivityPubObject (video: VideoModel): VideoTorrentObject { url.push({ type: 'Link', mimeType: 'text/html', + mediaType: 'text/html', href: CONFIG.WEBSERVER.URL + '/videos/watch/' + video.uuid }) diff --git a/shared/models/activitypub/objects/common-objects.ts b/shared/models/activitypub/objects/common-objects.ts index 1de60da94..118a4f43d 100644 --- a/shared/models/activitypub/objects/common-objects.ts +++ b/shared/models/activitypub/objects/common-objects.ts @@ -19,7 +19,9 @@ export interface ActivityIconObject { export type ActivityVideoUrlObject = { type: 'Link' - mimeType: 'video/mp4' | 'video/webm' | 'video/ogg' + // TODO: remove mimeType (backward compatibility, introduced in v1.1.0) + mimeType?: 'video/mp4' | 'video/webm' | 'video/ogg' + mediaType: 'video/mp4' | 'video/webm' | 'video/ogg' href: string height: number size: number @@ -31,14 +33,18 @@ export type ActivityUrlObject = | { type: 'Link' - mimeType: 'application/x-bittorrent' | 'application/x-bittorrent;x-scheme-handler/magnet' + // TODO: remove mimeType (backward compatibility, introduced in v1.1.0) + mimeType?: 'application/x-bittorrent' | 'application/x-bittorrent;x-scheme-handler/magnet' + mediaType: 'application/x-bittorrent' | 'application/x-bittorrent;x-scheme-handler/magnet' href: string height: number } | { type: 'Link' - mimeType: 'text/html' + // TODO: remove mimeType (backward compatibility, introduced in v1.1.0) + mimeType?: 'text/html' + mediaType: 'text/html' href: string }