diff options
Diffstat (limited to 'server/helpers/custom-validators/videos.ts')
-rw-r--r-- | server/helpers/custom-validators/videos.ts | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/server/helpers/custom-validators/videos.ts b/server/helpers/custom-validators/videos.ts index f3fdcaf2d..83407f17b 100644 --- a/server/helpers/custom-validators/videos.ts +++ b/server/helpers/custom-validators/videos.ts | |||
@@ -73,19 +73,26 @@ function isVideoDescriptionValid (value: string) { | |||
73 | } | 73 | } |
74 | 74 | ||
75 | function isVideoDurationValid (value: string) { | 75 | function isVideoDurationValid (value: string) { |
76 | return exists(value) && validator.isInt(value + '', VIDEOS_CONSTRAINTS_FIELDS.DURATION) | 76 | // https://www.w3.org/TR/activitystreams-vocabulary/#dfn-duration |
77 | return exists(value) && | ||
78 | typeof value === 'string' && | ||
79 | value.startsWith('PT') && | ||
80 | value.endsWith('S') && | ||
81 | validator.isInt(value.replace(/[^0-9]+/, ''), VIDEOS_CONSTRAINTS_FIELDS.DURATION) | ||
77 | } | 82 | } |
78 | 83 | ||
79 | function isVideoNameValid (value: string) { | 84 | function isVideoNameValid (value: string) { |
80 | return exists(value) && validator.isLength(value, VIDEOS_CONSTRAINTS_FIELDS.NAME) | 85 | return exists(value) && validator.isLength(value, VIDEOS_CONSTRAINTS_FIELDS.NAME) |
81 | } | 86 | } |
82 | 87 | ||
88 | function isVideoTagValid (tag: string) { | ||
89 | return exists(tag) && validator.isLength(tag, VIDEOS_CONSTRAINTS_FIELDS.TAG) | ||
90 | } | ||
91 | |||
83 | function isVideoTagsValid (tags: string[]) { | 92 | function isVideoTagsValid (tags: string[]) { |
84 | return isArray(tags) && | 93 | return isArray(tags) && |
85 | validator.isInt(tags.length.toString(), VIDEOS_CONSTRAINTS_FIELDS.TAGS) && | 94 | validator.isInt(tags.length.toString(), VIDEOS_CONSTRAINTS_FIELDS.TAGS) && |
86 | tags.every(tag => { | 95 | tags.every(tag => isVideoTagValid(tag)) |
87 | return exists(tag) && validator.isLength(tag, VIDEOS_CONSTRAINTS_FIELDS.TAG) | ||
88 | }) | ||
89 | } | 96 | } |
90 | 97 | ||
91 | function isVideoThumbnailValid (value: string) { | 98 | function isVideoThumbnailValid (value: string) { |
@@ -209,6 +216,7 @@ export { | |||
209 | isRemoteVideoPrivacyValid, | 216 | isRemoteVideoPrivacyValid, |
210 | isVideoFileResolutionValid, | 217 | isVideoFileResolutionValid, |
211 | checkVideoExists, | 218 | checkVideoExists, |
219 | isVideoTagValid, | ||
212 | isRemoteVideoCategoryValid, | 220 | isRemoteVideoCategoryValid, |
213 | isRemoteVideoLicenceValid, | 221 | isRemoteVideoLicenceValid, |
214 | isRemoteVideoLanguageValid | 222 | isRemoteVideoLanguageValid |