コード例 #1
0
        public virtual IHttpActionResult BroadcastEvents(string zoneId = null, string contextId = null)
        {
            var  eventService    = Service as IEventService <TMultiple>;
            bool eventsSupported = (eventService != null);

            if (!eventsSupported)
            {
                return(BadRequest("Support for SIF Events has not been implemented."));
            }

            IHttpActionResult result;

            try
            {
                IRegistrationService registrationService = RegistrationManager.GetProviderRegistrationService(
                    ProviderSettings,
                    sessionService);

                if (registrationService is NoRegistrationService)
                {
                    result = BadRequest("SIF Events are only supported in a BROKERED environment.");
                }
                else
                {
                    IEventIterator <TMultiple> eventIterator = eventService.GetEventIterator(zoneId, contextId);

                    if (eventIterator == null)
                    {
                        result = BadRequest("SIF Events implementation is not valid.");
                    }
                    else
                    {
                        Model.Infrastructure.Environment environment = registrationService.Register();

                        // Retrieve the current Authorisation Token.
                        AuthorisationToken token = registrationService.AuthorisationToken;

                        // Retrieve the EventsConnector endpoint URL.
                        string url = EnvironmentUtils.ParseServiceUrl(
                            environment,
                            ServiceType.UTILITY,
                            InfrastructureServiceNames.eventsConnector);

                        while (eventIterator.HasNext())
                        {
                            SifEvent <TMultiple> sifEvent = eventIterator.GetNext();

                            var requestHeaders = new NameValueCollection()
                            {
                                { EventParameterType.eventAction.ToDescription(), sifEvent.EventAction.ToDescription() },
                                { EventParameterType.messageId.ToDescription(), sifEvent.Id.ToString() },
                                { EventParameterType.messageType.ToDescription(), "EVENT" },
                                { EventParameterType.serviceName.ToDescription(), $"{TypeName}s" }
                            };

                            switch (sifEvent.EventAction)
                            {
                            case EventAction.UPDATE_FULL:
                                requestHeaders.Add(EventParameterType.Replacement.ToDescription(), "FULL");
                                break;

                            case EventAction.UPDATE_PARTIAL:
                                requestHeaders.Add(EventParameterType.Replacement.ToDescription(), "PARTIAL");
                                break;
                            }

                            string requestBody = SerialiseEvents(sifEvent.SifObjects);
                            HttpUtils.PostRequest(
                                url,
                                token,
                                requestBody,
                                ProviderSettings.CompressPayload,
                                contentTypeOverride: ContentType.ToDescription(),
                                acceptOverride: Accept.ToDescription(),
                                requestHeaders: requestHeaders);
                        }

                        result = Ok();
                    }
                }
            }
            catch (Exception e)
            {
                result = InternalServerError(e);
            }

            return(result);
        }
コード例 #2
0
 /// <summary>
 /// Create a Consumer instance based upon the Environment passed.
 /// </summary>
 /// <param name="environment">Environment object.</param>
 public Consumer(Model.Infrastructure.Environment environment)
 {
     environmentTemplate = EnvironmentUtils.MergeWithSettings(environment, SettingsManager.ConsumerSettings);
     RegistrationService = new RegistrationService(SettingsManager.ConsumerSettings, SessionsManager.ConsumerSessionService);
 }
コード例 #3
0
 /// <summary>
 /// <see cref="EventConsumer{TSingle,TMultiple,TPrimaryKey}">EventConsumer</see>
 /// </summary>
 protected BasicEventConsumer(Model.Infrastructure.Environment environment, IFrameworkSettings settings = null)
     : base(environment, settings)
 {
 }
 public StudentSchoolEnrollmentConsumer(
     Model.Infrastructure.Environment environment,
     IFrameworkSettings settings = null)
     : base(environment, settings)
 {
 }
コード例 #5
0
 /// <summary>
 /// Create a Consumer instance identified by the parameters passed.
 /// </summary>
 /// <param name="applicationKey">Application key.</param>
 /// <param name="instanceId">Instance ID.</param>
 /// <param name="userToken">User token.</param>
 /// <param name="solutionId">Solution ID.</param>
 public Consumer(string applicationKey, string instanceId = null, string userToken = null, string solutionId = null)
 {
     Model.Infrastructure.Environment environment = new Model.Infrastructure.Environment(applicationKey, instanceId, userToken, solutionId);
     environmentTemplate = EnvironmentUtils.MergeWithSettings(environment, SettingsManager.ConsumerSettings);
     RegistrationService = new RegistrationService(SettingsManager.ConsumerSettings, SessionsManager.ConsumerSessionService);
 }
コード例 #6
0
 /// <summary>
 /// <see cref="Consumer{TSingle,TMultiple,TPrimaryKey}.Consumer(Model.Infrastructure.Environment)">Consumer</see>
 /// </summary>
 public BasicConsumer(Model.Infrastructure.Environment environment) : base(environment)
 {
 }
コード例 #7
0
 public StudentPersonalEventConsumer(Model.Infrastructure.Environment environment)
     : base(environment)
 {
 }
コード例 #8
0
 public StudentPersonalConsumer(
     Model.Infrastructure.Environment environment,
     IFrameworkSettings settings = null)
     : base(environment, settings)
 {
 }
 public StudentSchoolEnrollmentConsumer(Model.Infrastructure.Environment environment)
     : base(environment)
 {
 }
コード例 #10
0
 /// <summary>
 /// Create a Consumer instance based upon the Environment passed.
 /// </summary>
 /// <param name="environment">Environment object.</param>
 protected EventConsumer(Model.Infrastructure.Environment environment)
 {
     Environment         = EnvironmentUtils.MergeWithSettings(environment, SettingsManager.ConsumerSettings);
     RegistrationService = new RegistrationService(SettingsManager.ConsumerSettings, SessionsManager.ConsumerSessionService);
 }