public int AddTrialServiceSubscription(string ChargifyID, string CustomerId, int idLead)
        {
            var response = new BaseResponse();

            try
            {
                var serviceSubscriptionRepository = new ServiceSubscriptionRepository();
                var serviceSubscription           = new ServiceSubscription()
                {
                    SubscriptionName      = "TrialSuscription",
                    StartDate             = DateTime.Now,
                    EndDate               = DateTime.Now.AddMonths(1),
                    IsActive              = true,
                    idChargifyCustomer    = CustomerId,
                    idChargifySuscription = ChargifyID,
                    idLead = idLead
                };
                serviceSubscriptionRepository.Add(serviceSubscription);
                serviceSubscriptionRepository.SaveChanges();
                return(serviceSubscription.idServiceSubscription);
            }
            catch (Exception ex)
            {
                response.Acknowledgment = false;
                response.Message        = ex.Message;
            }
            return(0);
        }
Ejemplo n.º 2
0
        public async void RegisterService()
        {
            HttpClient httpClient = new HttpClient();

            // For the amount of storage services which should be deployed, register an instance for the discovery
            for (int i = 1; i < 3; i++)
            {
                ServiceSubscription subscription = new ServiceSubscription
                {
                    BaseUrl          = $"http://iwi17-storageservice{i}.azurewebsites.net",
                    HealthCheckRoute = "/swagger",
                    ServiceName      = "StorageService"
                };

                string jsonSubscription = JsonConvert.SerializeObject(subscription);

                try
                {
                    HttpContent         content  = new StringContent(jsonSubscription, Encoding.UTF8, "application/json");
                    HttpResponseMessage response = await httpClient.PostAsync("http://iwi17-configurationservice.azurewebsites.net/api/Discovery", content);
                }
                catch (Exception ex)
                {
                    // TODO Add Logging
                }
            }
        }
        public async Task Heartbeat_UpdateServiceSubscription()
        {
            // Arrange
            const uint ttl = 10000;

            A.CallTo(() => _compassEnvironment.GetSubscriptionTtl()).Returns(ttl);

            var serviceSubscription = new ServiceSubscription
            {
                ApplicationToken = Guid.NewGuid()
            };

            var registeredApplication = new RegisteredApplication();

            A.CallTo(() => _validateApplicationTokenService.ValidateApplicationTokenAsync(serviceSubscription.ApplicationToken))
            .Returns(Task.FromResult(registeredApplication));

            A.CallTo(() => _dataStore.GetServiceSubscriptionAsync(serviceSubscription.ApplicationToken))
            .Returns(Task.FromResult(serviceSubscription));

            // Act
            await _sut.Thump(serviceSubscription);

            // Assert
            A.CallTo(() => _dataStore.UpsertAsync(serviceSubscription, ttl))
            .MustHaveHappened(Repeated.Exactly.Once);
        }
        public async Task Subscription_OverwriteExistingSubscription()
        {
            // Arrange
            var appToken            = Guid.NewGuid();
            var serviceSubscription = new ServiceSubscription()
            {
                ApplicationToken = appToken
            };

            A.CallTo(() => _validateApplicationTokenService.ValidateApplicationTokenAsync(appToken))
            .Returns(new RegisteredApplication());
            var ttl = (uint)10000;

            A.CallTo(() => _compassEnvironment.GetSubscriptionTtl())
            .Returns(ttl);

            var serviceSubscriptionIdentifier = Guid.NewGuid();

            A.CallTo(() => _dataStore.GetServiceSubscriptionAsync(appToken))
            .Returns(new ServiceSubscription()
            {
                Identifier       = serviceSubscriptionIdentifier,
                ApplicationToken = appToken
            });

            // Act
            await _sut.SubscribeAsync(serviceSubscription);

            // Assert
            A.CallTo(() => _dataStore.UpsertAsync(A <ServiceSubscription> .That.Matches(arg => arg.Identifier == serviceSubscriptionIdentifier), ttl))
            .MustHaveHappened(Repeated.Exactly.Once);
            A.CallTo(() => _dataStore.UpsertAsync(serviceSubscription, ttl))
            .MustHaveHappened(Repeated.Exactly.Once);
        }
Ejemplo n.º 5
0
        private void btnSave_Click(object sender, EventArgs e)
        {
            //declare SQL DB context var
            SmartSocialdbDataContext smartsocialDB = new SmartSocialdbDataContext();
            ServiceSubscription      newServiceSubscriptionsRow = new ServiceSubscription();

            try
            {
                //update selected record in ServiceSubscription table
                var subscriptionRow = smartsocialDB.ServiceSubscription.GetByKey(int.Parse(txtID.Text));
                subscriptionRow.SubscriptionName = txtName.Text;
                subscriptionRow.StartDate        = startDate.Value;
                subscriptionRow.EndDate          = endDate.Value;
                subscriptionRow.IsActive         = isActive.Checked;
                smartsocialDB.SubmitChanges();
                smartsocialDB.Connection.Close();
                //close this window
                this.Close();
            }

            catch (Exception ex)
            {
                //show any error message returned by the database
                MessageBox.Show(ex.Message);
            }
        }
Ejemplo n.º 6
0
        private void GenerateTimer(ServiceSubscription sub)
        {
            var interval = TimeSpan.FromMilliseconds(_options.HeartbeatInterval);

            _timer = new Timer(async state => await RunHeartbeatAsync((ServiceSubscription)state), sub, interval,
                               interval);
        }
Ejemplo n.º 7
0
        private async Task <Guid> GetIdentifierAsync(ServiceSubscription serviceSubscription)
        {
            // When saving a service subscription, we must first check to see if one exists already.
            // If it does, we need to use the existing documents identifier in order to overwrite it.
            var existingSubscription = await _dataStore.GetServiceSubscriptionAsync(serviceSubscription.ApplicationToken);

            return(existingSubscription?.Identifier ?? Guid.NewGuid());
        }
Ejemplo n.º 8
0
        private async Task <ServiceSubscription> SaveSubscriptionAsync(ServiceSubscription serviceSubscription)
        {
            serviceSubscription.Identifier = await GetIdentifierAsync(serviceSubscription);

            uint subscriptionTtl = _compassEnvironment.GetSubscriptionTtl();
            await _dataStore.UpsertAsync(serviceSubscription, subscriptionTtl);

            return(serviceSubscription);
        }
Ejemplo n.º 9
0
        private async Task SendEvent(ServiceSubscription serviceSubscription, CompassEvent compassEvent)
        {
            await _sendToEndpointService.SendToEndpointAsync(new List <ServiceSubscription> {
                serviceSubscription
            },
                                                             compassEvent);

            await _queueEventService.DeQueueEventAsync(compassEvent);
        }
 public UR_CB2_SoftGripper(string robot_url, ToolInfo tool_info)
 {
     _robot_sub     = RobotRaconteurNode.s.SubscribeService(robot_url);
     _tool_info     = tool_info;
     this.tool_info = tool_info;
     if (tool_info != null)
     {
         this.device_info = tool_info.device_info;
     }
 }
Ejemplo n.º 11
0
        public async Task ReplayQueuedEvents(ServiceSubscription serviceSubscription)
        {
            var queuedEvents = await _dataStore.GetQueuedEventsAsync();

            if (ThereAreNoEvents(queuedEvents))
            {
                return;
            }

            await ProcessQueuedEvents(serviceSubscription, queuedEvents);
        }
Ejemplo n.º 12
0
 private async Task RunHeartbeatAsync(ServiceSubscription sub)
 {
     try
     {
         await Shared.CompassRestClient.SendRequestAsync <ServiceSubscription>(new Uri(_options.CompassUri, "heartbeat"), sub);
     }
     catch (Exception e)
     {
         Console.WriteLine(e);
     }
 }
Ejemplo n.º 13
0
        private async Task <IEnumerable <CompassEvent> > GetEventsToReplay(ServiceSubscription serviceSubscription, QueuedEvents queuedEvents)
        {
            var registeredApplication =
                await _dataStore.GetRegisteredApplicationAsync(serviceSubscription.ApplicationToken);

            var eventsToReplay = queuedEvents.Events.Where(
                queuedEvent => serviceSubscription.SubscribedEvents.Contains(queuedEvent.EventName) ||
                registeredApplication.LastEventsSubscribed.Contains(queuedEvent.EventName));

            return(eventsToReplay);
        }
Ejemplo n.º 14
0
        private async Task <ServiceSubscription> GetServiceSubscription(ServiceSubscription serviceSubscription)
        {
            var subscription = await _dataStore.GetServiceSubscriptionAsync(serviceSubscription.ApplicationToken);

            if (subscription == null)
            {
                subscription            = serviceSubscription;
                subscription.Identifier = Guid.NewGuid();
            }

            return(subscription);
        }
Ejemplo n.º 15
0
        public async Task Thump(ServiceSubscription serviceSubscription)
        {
            var registeredApplication = await _validateApplicationTokenService.ValidateApplicationTokenAsync(serviceSubscription.ApplicationToken);

            registeredApplication.LastSeen = DateTime.UtcNow;
            await _dataStore.UpsertAsync(registeredApplication);

            var subscription = await GetServiceSubscription(serviceSubscription);

            var subscriptionTtl = _compassEnvironment.GetSubscriptionTtl();
            await _dataStore.UpsertAsync(subscription, subscriptionTtl);
        }
Ejemplo n.º 16
0
        private async Task ProcessQueuedEvents(ServiceSubscription serviceSubscription, QueuedEvents queuedEvents)
        {
            var eventsToReplay = await GetEventsToReplay(serviceSubscription, queuedEvents);

            var parallelRequests = new List <Task>();

            foreach (var compassEvent in eventsToReplay)
            {
                parallelRequests.Add(SendEvent(serviceSubscription, compassEvent));
            }

            await Task.WhenAll(parallelRequests);
        }
Ejemplo n.º 17
0
        public async Task <IActionResult> Post([FromBody] ServiceSubscription value)
        {
            Service service = new Service
            {
                ServiceName      = value.ServiceName,
                BaseUrl          = value.BaseUrl,
                HealthCheckRoute = value.HealthCheckRoute,
                Healthy          = false
            };

            HealthChecker.Instance.Services.Add(service);
            return(Ok());
        }
        public string SubscribeService(ServiceSubscription Subscription)
        {
            Application[] applications = this.serviceManager.GetApplications();

            if (applications.First((a) => a.ID == Subscription.Application.ID) == null)
            {
                return("0");
            }

            Subscription.CreationTime = DateTime.Now;

            return(this.serviceManager.AddServiceSubscription(Subscription));
        }
Ejemplo n.º 19
0
        static void Main(string[] args)
        {
            var subscription = new ServiceSubscription
            {
                ApplicationToken = new Guid("e6e749e1-ced6-485d-b359-c58900f5becf"),
                ApplicationUri   = new Uri("http://loadbalancer:8080/"),
                SubscribedEvents = new List <string> {
                    "AddAccount"
                }
            };
            var compass = new Client(new ConfigOptions(new Uri("http://localhost:5000/")));
            var task    = compass.SubscribeAsync(subscription).Result;

            Thread.Sleep(900000);
        }
Ejemplo n.º 20
0
        // Initially subscribe to new service - also calls heartbeat endpoint
        public async Task <ServiceSubscription> SubscribeAsync(ServiceSubscription subscription)
        {
            try
            {
                return(await _compassSubscribe.ClientSubscribe(subscription));
            }
            catch (Exception e)
            {
                Console.WriteLine(e);

                // Try to re-subscribe after 30 seconds.
                await Task.Delay(30000);

                return(await SubscribeAsync(subscription));
            }
        }
Ejemplo n.º 21
0
        public string UpdateServiceSubscription(ServiceSubscription Subscription)
        {
            int result = -9;

            using (DataModel.DataModelContainer container = new DataModel.DataModelContainer())
            {
                var model = container.ServiceSubscriptions.FirstOrDefault(ss => ss.ID.ToLower() == Subscription.ID.ToLower());

                model.ServiceID  = Subscription.Service.ID;
                model.Status     = Subscription.Status;
                model.Subscriber = Subscription.Subscriber;

                container.SaveChanges();
            }

            return(result.ToString());
        }
Ejemplo n.º 22
0
        public async Task Heartbeat_ValidateAppToken()
        {
            // Arrange
            var serviceSubscription = new ServiceSubscription
            {
                ApplicationToken = Guid.NewGuid()
            };

            A.CallTo(() => _validateApplicationTokenService.ValidateApplicationTokenAsync(serviceSubscription.ApplicationToken))
            .Returns(Task.FromResult(new RegisteredApplication()));

            // Act
            await _sut.Thump(serviceSubscription);

            // Assert
            A.CallTo(() => _validateApplicationTokenService.ValidateApplicationTokenAsync(serviceSubscription.ApplicationToken))
            .MustHaveHappened(Repeated.Exactly.Once);
        }
Ejemplo n.º 23
0
        public async Task AddSubscription(string email, string host, int port, int pollingFreaquency, int gracePeriod)
        {
            ServiceProvider serviceProvider = await serviceProviderRepository.GetByHostAndPort(host, port);

            TimeSpan requestedPollingFrequency = GetTimeSpan(pollingFreaquency);

            // If service provider is not found add new one
            serviceProvider = serviceProvider == null ? new ServiceProvider()
            {
                Host = host, Port = port, PollingFrequency = requestedPollingFrequency
            } : serviceProvider;

            // If service provider is existing always update the service provider with the maximum polling freaquency
            serviceProvider.PollingFrequency = serviceProvider.PollingFrequency > requestedPollingFrequency? requestedPollingFrequency : serviceProvider.PollingFrequency;

            List <ServiceProvider> serviceProvidersToUpdate = new List <ServiceProvider>();

            serviceProvidersToUpdate.Add(serviceProvider);

            // Update database with service provider details
            await serviceProviderRepository.Upsert(serviceProvidersToUpdate);

            // Refreash service provider after inserting to map the subscription for user
            if (serviceProvider.Id == 0)
            {
                serviceProvider = await serviceProviderRepository.GetByHostAndPort(host, port);
            }

            // if service provider not found in the user, update the subscription
            User user = await userRepository.GetUserByEmail(email);

            if (user.Subscriptions.Where(s => s.Service.Id == serviceProvider.Id).Count() == 0)
            {
                ServiceSubscription serviceSubscription = new ServiceSubscription()
                {
                    Service = serviceProvider, PollingFrequency = requestedPollingFrequency, GracePeriod = GetTimeSpan(gracePeriod)
                };
                user.Subscriptions.Add(serviceSubscription);
                List <User> usersToUpdate = new List <User>();
                usersToUpdate.Add(user);

                await userRepository.Upsert(usersToUpdate);
            }
        }
Ejemplo n.º 24
0
        public async Task <ServiceSubscription> ClientSubscribe(ServiceSubscription serviceSubscription)
        {
            // if no compass url is set, then we exit.
            if (_options.CompassUri == null)
            {
                throw new NoCompassEndpointSetException();
            }

            var response =
                await CompassRestClient.SendRequestAsync <ServiceSubscription>(
                    new Uri(_options.CompassUri, "subscribe"), serviceSubscription);

            // default timer of 15 seconds
            var heartbeat = new CompassHeartbeat(_options);

            heartbeat.SendBeatAsync(response);

            return(response);
        }
        public async Task Subscription_ReplayEvents()
        {
            // Arrange
            var serviceSubscription = new ServiceSubscription
            {
                SubscribedEvents = { "test", "test1" },
                ApplicationToken = Guid.NewGuid()
            };

            A.CallTo(() => _validateApplicationTokenService.ValidateApplicationTokenAsync(serviceSubscription.ApplicationToken))
            .Returns(Task.FromResult(new RegisteredApplication()));

            // Act
            await _sut.SubscribeAsync(serviceSubscription);

            // Assert
            A.CallTo(() => _replayQueuedEventsService.ReplayQueuedEvents(serviceSubscription))
            .MustHaveHappened(Repeated.Exactly.Once);
        }
Ejemplo n.º 26
0
        public string AddServiceSubscription(ServiceSubscription Subscription)
        {
            Subscription.ID = Guid.NewGuid().ToString();

            DataModel.ServiceSubscription model = new Model.ServiceSubscription()
            {
                ID           = Subscription.ID,
                ServiceID    = Subscription.Service.ID,
                Subscriber   = Subscription.Subscriber,
                Status       = Subscription.Status,
                CreationTime = DateTime.Now
            };

            using (DataModel.DataModelContainer container = new DataModel.DataModelContainer())
            {
                model = container.ServiceSubscriptions.Add(model);

                container.SaveChanges();
            }

            return(model.ID.ToString());
        }
Ejemplo n.º 27
0
        public async Task <ServiceSubscription> SubscribeAsync(ServiceSubscription serviceSubcription)
        {
            var registeredApplication =
                await _validateApplicationTokenService.ValidateApplicationTokenAsync(
                    serviceSubcription.ApplicationToken);

            var subscription = await SaveSubscriptionAsync(serviceSubcription);

            var updateTask = UpdateLastSeenAsync(registeredApplication);

            // TODO: Determine if we should replay events...
            // TODO: How do we prevent duplicate data while replaying events?
            // This could happen if Service A went down, and Service B, listening
            // to the same event is still up when Service A comes back up. It will
            // receive the the event a second time.
            var replayTask = _replayQueuedEventsService.ReplayQueuedEvents(serviceSubcription);

            await Task.WhenAll(new List <Task> {
                replayTask, updateTask
            });

            return(subscription);
        }
Ejemplo n.º 28
0
        public void loadInitialData(int subscriptionID)
        {
            //declare SQL DB context var
            SmartSocialdbDataContext smartsocialDB = new SmartSocialdbDataContext();
            ServiceSubscription      newServiceSubscriptionsRow = new ServiceSubscription();

            try
            {
                //load data base on ID passed from main form
                txtID.Text       = smartsocialDB.ServiceSubscription.GetByKey(subscriptionID).IdServiceSubscription.ToString();
                txtName.Text     = smartsocialDB.ServiceSubscription.GetByKey(subscriptionID).SubscriptionName;
                startDate.Value  = (DateTime)smartsocialDB.ServiceSubscription.GetByKey(subscriptionID).StartDate;
                endDate.Value    = (DateTime)smartsocialDB.ServiceSubscription.GetByKey(subscriptionID).EndDate;
                isActive.Checked = (bool)smartsocialDB.ServiceSubscription.GetByKey(subscriptionID).IsActive;
                smartsocialDB.Connection.Close();
            }

            catch (Exception ex)
            {
                //show any error message returned by the database
                MessageBox.Show(ex.Message);
            }
        }
Ejemplo n.º 29
0
 public async Task Heartbeat([FromBody] ServiceSubscription serviceSubscription)
 {
     await _heartbeatService.Thump(serviceSubscription);
 }
Ejemplo n.º 30
0
 public SubscriptionController()
 {
     serviceSub = new ServiceSubscription();
 }