mirror of
https://github.com/Chocobozzz/PeerTube.git
synced 2025-10-05 02:39:33 +02:00
Begin moving video channel to actor
This commit is contained in:
parent
fadf619ad6
commit
50d6de9c28
100 changed files with 1761 additions and 2041 deletions
|
@ -1,10 +1,9 @@
|
|||
import * as Sequelize from 'sequelize'
|
||||
import { createPrivateAndPublicKeys, logger } from '../helpers'
|
||||
import { CONFIG, sequelizeTypescript } from '../initializers'
|
||||
import { ActivityPubActorType } from '../../shared/models/activitypub'
|
||||
import { sequelizeTypescript, SERVER_ACTOR_NAME } from '../initializers'
|
||||
import { AccountModel } from '../models/account/account'
|
||||
import { UserModel } from '../models/account/user'
|
||||
import { ActorModel } from '../models/activitypub/actor'
|
||||
import { getAccountActivityPubUrl } from './activitypub'
|
||||
import { buildActorInstance, getAccountActivityPubUrl, setAsyncActorKeys } from './activitypub'
|
||||
import { createVideoChannel } from './video-channel'
|
||||
|
||||
async function createUserAccountAndChannel (user: UserModel, validateUser = true) {
|
||||
|
@ -26,31 +25,22 @@ async function createUserAccountAndChannel (user: UserModel, validateUser = true
|
|||
return { account: accountCreated, videoChannel }
|
||||
})
|
||||
|
||||
// Set account keys, this could be long so process after the account creation and do not block the client
|
||||
const { publicKey, privateKey } = await createPrivateAndPublicKeys()
|
||||
const actor = account.Actor
|
||||
actor.set('publicKey', publicKey)
|
||||
actor.set('privateKey', privateKey)
|
||||
actor.save().catch(err => logger.error('Cannot set public/private keys of actor %d.', actor.uuid, err))
|
||||
account.Actor = await setAsyncActorKeys(account.Actor)
|
||||
videoChannel.Actor = await setAsyncActorKeys(videoChannel.Actor)
|
||||
|
||||
return { account, videoChannel }
|
||||
}
|
||||
|
||||
async function createLocalAccountWithoutKeys (name: string, userId: number, applicationId: number, t: Sequelize.Transaction) {
|
||||
async function createLocalAccountWithoutKeys (
|
||||
name: string,
|
||||
userId: number,
|
||||
applicationId: number,
|
||||
t: Sequelize.Transaction,
|
||||
type: ActivityPubActorType= 'Person'
|
||||
) {
|
||||
const url = getAccountActivityPubUrl(name)
|
||||
|
||||
const actorInstance = new ActorModel({
|
||||
url,
|
||||
publicKey: null,
|
||||
privateKey: null,
|
||||
followersCount: 0,
|
||||
followingCount: 0,
|
||||
inboxUrl: url + '/inbox',
|
||||
outboxUrl: url + '/outbox',
|
||||
sharedInboxUrl: CONFIG.WEBSERVER.URL + '/inbox',
|
||||
followersUrl: url + '/followers',
|
||||
followingUrl: url + '/following'
|
||||
})
|
||||
const actorInstance = buildActorInstance(type, url, name)
|
||||
const actorInstanceCreated = await actorInstance.save({ transaction: t })
|
||||
|
||||
const accountInstance = new AccountModel({
|
||||
|
@ -67,9 +57,18 @@ async function createLocalAccountWithoutKeys (name: string, userId: number, appl
|
|||
return accountInstanceCreated
|
||||
}
|
||||
|
||||
async function createApplicationActor (applicationId: number) {
|
||||
const accountCreated = await createLocalAccountWithoutKeys(SERVER_ACTOR_NAME, null, applicationId, undefined, 'Application')
|
||||
|
||||
accountCreated.Actor = await setAsyncActorKeys(accountCreated.Actor)
|
||||
|
||||
return accountCreated
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
export {
|
||||
createApplicationActor,
|
||||
createUserAccountAndChannel,
|
||||
createLocalAccountWithoutKeys
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue