From f885266df2a9084ccf456939ac5cb690675614e8 Mon Sep 17 00:00:00 2001 From: rob Date: Thu, 21 Jul 2022 01:14:30 -0400 Subject: [PATCH] change author to emitter and make it optional and able to be many things --- app/models/kaleidoscope-event.js | 9 ++++++--- app/services/hive.js | 17 +++++++++++++---- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/app/models/kaleidoscope-event.js b/app/models/kaleidoscope-event.js index f601386..6d6bd09 100644 --- a/app/models/kaleidoscope-event.js +++ b/app/models/kaleidoscope-event.js @@ -7,6 +7,8 @@ const mongoose = require('mongoose'); const Schema = mongoose.Schema; +const EMITTER_TYPE_LIST = ['User','CoreUser','OAuth2Client']; + const KaleidoscopeEventSchema = new Schema({ created: { type: Date, default: Date.now, required: true, index: -1, expires: '30d' }, action: { type: String, required: true, lowercase: true }, @@ -28,8 +30,9 @@ const KaleidoscopeEventSchema = new Schema({ scopes: { type: [String] }, }, }, - author: { - userId: { type: Schema.ObjectId, required: true }, + emitter: { + emitterType: { type: String, enum: EMITTER_TYPE_LIST }, + emitterId: { type: Schema.ObjectId, refPath: 'source.emitter.emitterType' }, displayName: { type: String }, username: { type: String }, href: { type: String }, @@ -45,7 +48,7 @@ const KaleidoscopeEventSchema = new Schema({ */ KaleidoscopeEventSchema.index({ 'source.site.domainKey': 1, - 'source.author.userId': 1, + 'source.emitter.emitterId': 1, }, { name: 'evtsrc_site_author_index', }); diff --git a/app/services/hive.js b/app/services/hive.js index d4de7e3..9c55f7c 100644 --- a/app/services/hive.js +++ b/app/services/hive.js @@ -208,12 +208,21 @@ class HiveService extends SiteService { scopes: eventDefinition.source.site.coreAuth.scopes.map((scope) => scope.trim().toLowerCase()), }, }, - emitter: { + }; + + if (eventDefinition.source.emitter) { + event.source.emitter = { + emitterType: striptags(eventDefinition.source.emitter.emitterType), emitterId: mongoose.Types.ObjectId(eventDefinition.source.emitter.emitterId), - username: striptags(eventDefinition.source.emitter.username.trim()), href: striptags(eventDefinition.source.emitter.href.trim()), - }, - }; + }; + if (eventDefinition.source.emitter.displayName) { + event.source.emitter.displayName = striptags(eventDefinition.source.emitter.displayName.trim()); + } + if (eventDefinition.source.emitter.username) { + event.source.emitter.username = striptags(eventDefinition.source.emitter.username.trim()); + } + } if (eventDefinition.source.site.company) { event.source.site.company = striptags(eventDefinition.source.site.company.trim());