protected override async Task Process() { var e = DeserializeTyped(); if (e is OrganizationEventBase organizationEvent) { Logger.LogInformation("Event {@eventGroup} {@eventName} {@organizationKey} {@initiatorOrganizationKey}/{@initiatorUserKey} {@initiatorUserAgent}", "Organization", organizationEvent.Name, organizationEvent.OrganizationIdentifier?.OrganizationKey, organizationEvent.UserIdentifier?.OrganizationKey, organizationEvent.UserIdentifier?.UserKey, organizationEvent.UserAgent ); } else if (e is UserEventBase userEvent) { Logger.LogInformation("Event {@eventGroup} {@eventName} {@organizationKey}/{@userKey} {@initiatorOrganizationKey}/{@initiatorUserKey} {@initiatorUserAgent}", "User", userEvent.Name, userEvent.UserIdentifierTopic?.OrganizationKey, userEvent.UserIdentifierTopic?.UserKey, userEvent.UserIdentifier?.OrganizationKey, userEvent.UserIdentifier?.UserKey, userEvent.UserAgent ); } else if (e is FolderEventBase folderEvent) { Logger.LogInformation("Event {@eventGroup} {@eventName} {@organizationKey}/{@folderKey} {@initiatorOrganizationKey}/{@initiatorUserKey} {@initiatorUserAgent}", "Folder", folderEvent.Name, folderEvent.FolderIdentifier?.OrganizationKey, folderEvent.FolderIdentifier?.FolderKey, folderEvent.UserIdentifier?.OrganizationKey, folderEvent.UserIdentifier?.UserKey, folderEvent.UserAgent ); if (e is FolderPutEvent || e is FolderPostEvent) { await EnqueueAsync("Index", new IndexMessage { Action = IndexMessage.IndexActions.IndexFolder, Identifier = new FileIdentifier(folderEvent.FolderIdentifier, null) }); } } else if (e is FileEventBase fileEvent) { Logger.LogInformation("Event {@eventGroup} {@eventName} {@organizationKey}/{@folderKey}/{@fileKey} {@initiatorOrganizationKey}/{@initiatorUserKey} {@initiatorUserAgent}", "File", fileEvent.Name, fileEvent.FileIdentifier?.OrganizationKey, fileEvent.FileIdentifier?.FolderKey, fileEvent.FileIdentifier?.FileKey, fileEvent.UserIdentifier?.OrganizationKey, fileEvent.UserIdentifier?.UserKey, fileEvent.UserAgent ); if ( e is FilePostEvent || e is FilePostEvent || e is FilePutEvent || e is FileContentsUploadCompleteEvent || e is FileTextContentChangeEvent) { await EnqueueAsync("Index", new IndexMessage { Action = IndexMessage.IndexActions.IndexFile, Identifier = fileEvent.FileIdentifier }); } else if (e is FileDeleteEvent) { await EnqueueAsync("Index", new IndexMessage { Action = IndexMessage.IndexActions.DeleteFile, Identifier = fileEvent.FileIdentifier }); } var eventHandler = new EventQueueManager() as EventQueueMapBase; await eventHandler.HandleEventAsync(e, async (queue, message) => { Logger.LogDebug($" -> Queueing {queue} {message}"); await API.Queue.EnqueueAsync(queue, message); }, API); } else { Logger.LogInformation("Event {@eventGroup} {@eventName} {@initiatorOrganizationKey}/{@initiatorUserKey} {@initiatorUserAgent}", null, e.Name, e.UserIdentifier?.OrganizationKey, e.UserIdentifier?.UserKey, e.UserAgent ); } }