-import * as validator from 'validator'
+import validator from 'validator'
import { CONSTRAINTS_FIELDS } from '../../../initializers/constants'
import { exists, isArray } from '../misc'
-import { truncate } from 'lodash'
import { isActivityPubUrlValid, isBaseActivityValid, setValidAttributedTo } from './misc'
import { isHostValid } from '../servers'
+import { peertubeTruncate } from '@server/helpers/core-utils'
function isActorEndpointsObjectValid (endpointObject: any) {
- return isActivityPubUrlValid(endpointObject.sharedInbox)
+ if (endpointObject?.sharedInbox) {
+ return isActivityPubUrlValid(endpointObject.sharedInbox)
+ }
+
+ // Shared inbox is optional
+ return true
}
function isActorPublicKeyObjectValid (publicKeyObject: any) {
}
function isActorTypeValid (type: string) {
- return type === 'Person' || type === 'Application' || type === 'Group'
+ return type === 'Person' || type === 'Application' || type === 'Group' || type === 'Service' || type === 'Organization'
}
function isActorPublicKeyValid (publicKey: string) {
return exists(publicKey) &&
typeof publicKey === 'string' &&
publicKey.startsWith('-----BEGIN PUBLIC KEY-----') &&
- publicKey.indexOf('-----END PUBLIC KEY-----') !== -1 &&
+ publicKey.includes('-----END PUBLIC KEY-----') &&
validator.isLength(publicKey, CONSTRAINTS_FIELDS.ACTORS.PUBLIC_KEY)
}
typeof privateKey === 'string' &&
privateKey.startsWith('-----BEGIN RSA PRIVATE KEY-----') &&
// Sometimes there is a \n at the end, so just assert the string contains the end mark
- privateKey.indexOf('-----END RSA PRIVATE KEY-----') !== -1 &&
+ privateKey.includes('-----END RSA PRIVATE KEY-----') &&
validator.isLength(privateKey, CONSTRAINTS_FIELDS.ACTORS.PRIVATE_KEY)
}
}
function normalizeActor (actor: any) {
- if (!actor || !actor.url) return
+ if (!actor) return
- if (typeof actor.url !== 'string') {
+ if (!actor.url) {
+ actor.url = actor.id
+ } else if (typeof actor.url !== 'string') {
actor.url = actor.url.href || actor.url.url
}
if (actor.summary && typeof actor.summary === 'string') {
- actor.summary = truncate(actor.summary, { length: CONSTRAINTS_FIELDS.USERS.DESCRIPTION.max })
+ actor.summary = peertubeTruncate(actor.summary, { length: CONSTRAINTS_FIELDS.USERS.DESCRIPTION.max })
if (actor.summary.length < CONSTRAINTS_FIELDS.USERS.DESCRIPTION.min) {
actor.summary = null
}
}
-
- return
}
function isValidActorHandle (handle: string) {