public override IEnumerable <Clue> DoProcess(ExecutionContext context, WebhookDataCommand command)
        {
            try
            {
                if (ConfigurationManager.AppSettings.GetFlag("Feature.Webhooks.Log.Posts", false))
                {
                    context.Log.LogDebug(command.HttpPostData);
                }

                var configurationDataStore = context.ApplicationContext.Container.Resolve <IConfigurationRepository>();
                if (command.WebhookDefinition.ProviderDefinitionId != null)
                {
                    var providerDefinition = context.Organization.Providers.GetProviderDefinition(context, command.WebhookDefinition.ProviderDefinitionId.Value);
                    var jobDataCheck       = context.ApplicationContext.Container.ResolveAll <IProvider>().FirstOrDefault(providerInstance => providerDefinition != null && providerInstance.Id == providerDefinition.ProviderId);
                    var configStoreData    = configurationDataStore.GetConfigurationById(context, command.WebhookDefinition.ProviderDefinitionId.Value);

                    // If you have stopped the provider then don't process the webhooks
                    if (providerDefinition?.WebHooks != null)
                    {
                        if (providerDefinition.WebHooks == false || providerDefinition.IsEnabled == false)
                        {
                            return(new List <Clue>());
                        }
                    }

                    if (jobDataCheck != null)
                    {
                        var crawlJobData = new SalesforceCrawlJobData();

                        var clues = new List <Clue>();

                        IAgentJobProcessorArguments jobArgs = new QueuedJob(new AgentJob(Guid.NewGuid(), AgentJobPriority.Normal, "CluedIn" + SalesforceConstants.ProviderName, ProcessingRestriction.Any, null, null))
                        {
                            TaskScheduler = TaskScheduler.Default,
                        };

                        var processorState = new AgentJobProcessorState <SalesforceCrawlJobData>(jobArgs, AppContext)
                        {
                            JobData = crawlJobData,
                            Status  = new AgentJobStatus {
                                Statistics = new AgentJobStatusStatistics()
                            }
                        };

                        throw new NotImplementedException($"TODO: Implement this to populate '{clues.GetType()}' with '{processorState}'");
                    }
                }
            }
            catch (Exception exception)
            {
                using (context.Log.BeginScope(new { command.HttpHeaders, command.HttpQueryString, command.HttpPostData, command.WebhookDefinitionId }))
                {
                    context.Log.LogError(exception, "Could not process web hook message");
                }
            }

            return(new List <Clue>());
        }
Exemplo n.º 2
0
        public override IEnumerable <Clue> DoProcess(ExecutionContext context, WebhookDataCommand command)
        {
            try
            {
                if (ConfigurationManager.AppSettings.GetFlag("Feature.Webhooks.Log.Posts", false))
                {
                    context.Log.Debug(() => command.HttpPostData);
                }

                var configurationDataStore = context.ApplicationContext.Container.Resolve <IConfigurationRepository>();
                if (command.WebhookDefinition.ProviderDefinitionId != null)
                {
                    var providerDefinition = context.Organization.Providers.GetProviderDefinition(context, command.WebhookDefinition.ProviderDefinitionId.Value);
                    var jobDataCheck       = context.ApplicationContext.Container.ResolveAll <IProvider>().FirstOrDefault(providerInstance => providerDefinition != null && providerInstance.Id == providerDefinition.ProviderId);
                    var configStoreData    = configurationDataStore.GetConfigurationById(context, command.WebhookDefinition.ProviderDefinitionId.Value);

                    // If you have stopped the provider then don't process the webhooks
                    if (providerDefinition != null && providerDefinition.WebHooks != null)
                    {
                        if (providerDefinition.WebHooks == false || providerDefinition.IsEnabled == false)
                        {
                            return(new List <Clue>());
                        }
                    }

                    if (jobDataCheck != null)
                    {
                        var crawlJobData = new HarvestCrawlerCrawlJobData();

                        var clues = new List <Clue>();

                        IAgentJobProcessorArguments jobArgs = new DebugAgentJobProcessorArguments
                        {
                            TaskScheduler = TaskScheduler.Default,
                            Job           = new AgentJob(Guid.NewGuid(), AgentJobPriority.Normal, "CluedIn" + HarvestCrawlerConstants.ProviderName, ProcessingRestriction.Any, null, null)
                        };

                        throw new NotImplementedException("TODO: Implement this");
                    }
                }
            }
            catch (Exception exception)
            {
                context.Log.Error(new { command.HttpHeaders, command.HttpQueryString, command.HttpPostData, command.WebhookDefinitionId }, () => "Could not process web hook message", exception);
            }

            return(new List <Clue>());
        }
Exemplo n.º 3
0
        public override IEnumerable <Clue> DoProcess(ExecutionContext context, WebhookDataCommand command)
        {
            var clues = new List <Clue>();

            try
            {
                var configurationDataStore = context.ApplicationContext.Container.Resolve <IConfigurationRepository>();
                if (command.WebhookDefinition.ProviderDefinitionId != null)
                {
                    var providerDefinition = context.Organization.Providers.GetProviderDefinition(context, command.WebhookDefinition.ProviderDefinitionId.Value);
                    var jobDataCheck       = context.ApplicationContext.Container.ResolveAll <IProvider>().FirstOrDefault(providerInstance => providerDefinition != null && providerInstance.Id == providerDefinition.ProviderId);
                    var configStoreData    = configurationDataStore.GetConfigurationById(context, command.WebhookDefinition.ProviderDefinitionId.Value);

                    if (providerDefinition?.WebHooks != null)
                    {
                        if (providerDefinition.WebHooks == false || providerDefinition.IsEnabled == false)
                        {
                            return(clues);
                        }
                    }

                    if (jobDataCheck != null)
                    {
                        var raw = command.HttpPostData;
                        //TODO:Typically the provider (Service Now) will send you the "type"of data it is sending so you can put a switch here to handle the different types of records.

                        try
                        {
                            var incident = new IncidentClueProducer(new ServiceNowClueFactory(), _log);
                            clues.Add(incident.MakeClue(JsonUtility.Deserialize <Incident>(raw), command.OrganizationId));
                        }
                        catch
                        {
                            _log.LogError("Could not make Incident clue");
                        }
                    }
                }
            }
            catch (Exception exception)
            {
                _log.LogError("Could not process web hook message", exception);
            }

            return(clues);
        }