Exemplo n.º 1
0
        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
                                      );
            }
        }