public override CoreServiceResponse <ApplicationRegistration.Application> LimitNotReachedAction() { string ApplicationName = ProcessDescriptor.Application.Name; Organization org = User.Organizations.Where(o => o.Name.Equals(OrganizationName)).FirstOrDefault(); ApplicationRegistration.Application app = CoreRegistryRepository.OneApplicationWhere(c => c.Name == ApplicationName && c.OrganizationId == org.Id); if (app == null) { app = new ApplicationRegistration.Application { Name = ApplicationName, OrganizationId = org.Id }; app = CoreRegistryRepository.Save(app); ProcessDescriptor instance = new ProcessDescriptor { InstanceIdentifier = $"{ClientIpAddress}-{app.Name}-{app.Cuid}" }; app.Instances.Add(instance); app.Machines.Add(new Machine { Name = HostName }); app = CoreApplicationRegistryService.AddApiKey(CoreRegistryRepository, app); return(new CoreServiceResponse <ApplicationRegistration.Application>(app) { Success = true, Message = $"Application {ApplicationName} created" }); } else { return(new CoreServiceResponse <ApplicationRegistration.Application>(app) { Success = true, Message = $"Application {ApplicationName} already registered for the organization {OrganizationName}" }); } }
public virtual CoreServiceResponse RegisterApplication(ProcessDescriptor descriptor) { try { Args.ThrowIfNull(descriptor?.Application?.Name, "descriptor.Application.Name"); Args.ThrowIfNull(descriptor?.Application?.Organization?.Name, "descriptor.Application.Organization.Name"); string organizationName = descriptor.Application.Organization.Name; if (CurrentUser.Equals(UserAccounts.Data.User.Anonymous)) { return(new CoreServiceResponse <ApplicationRegistrationResult> { Success = false, Message = "You must be logged in to do that", Data = new ApplicationRegistrationResult { Status = ApplicationRegistrationStatus.Unauthorized } }); } User user = CoreRegistryRepository.OneUserWhere(c => c.UserName == CurrentUser.UserName); if (user == null) { user = new User() { UserName = CurrentUser.UserName, Email = CurrentUser.Email }; user = CoreRegistryRepository.Save(user); } OrganizationFactory orgEnforcer = new OrganizationFactory(CoreRegistryRepository, user, organizationName); CoreServiceResponse <Organization> response = orgEnforcer.Execute(); if (!response.Success) { return(response); } Organization org = response.TypedData(); ClientApplicationFactory appEnforcer = new ClientApplicationFactory(this, user, organizationName, descriptor); CoreServiceResponse <ApplicationRegistration.Application> appResponse = appEnforcer.Execute(); if (appResponse.Success) { ApplicationRegistration.Application app = appResponse.TypedData(); return(new CoreServiceResponse <ApplicationRegistrationResult>( new ApplicationRegistrationResult { Status = ApplicationRegistrationStatus.Success, ClientId = app.Cuid, ApiKey = app.ApiKeys.First().SharedSecret }) { Success = true }); } return(appResponse); } catch (Exception ex) { Logger.AddEntry("Exception occurred in {0}", ex, nameof(CoreApplicationRegistrationService.RegisterApplication)); return(new CoreServiceResponse { Success = false, Message = ex.Message }); } }
public virtual void SetCommonConfiguration(Dictionary <string, string> settings) { lock (_commonLock) { Configuration config = CoreRegistryRepository.GetOneConfigurationWhere(c => c.Name == CommonConfigName && c.ApplicationId == Application.Unknown.Id); config.Settings.Each(s => CoreRegistryRepository.Delete(s)); config.Settings = DictionaryToSettings(settings, config).ToList(); CoreRegistryRepository.Save(config); } }
public virtual void SetMachineConfiguration(string machineName, Dictionary <string, string> settings, string configurationName = null) { configurationName = configurationName ?? CommonConfigName; Machine machine = CoreRegistryRepository.GetOneMachineWhere(c => c.Name == machineName); lock (Machine.ConfigurationLock) { Configuration config = machine.Configurations.FirstOrDefault(c => c.Name.Equals(configurationName)); if (config == null) { config = new Configuration { Name = configurationName }; config.MachineId = machine.Id; config = CoreRegistryRepository.Save(config); } config.Settings = DictionaryToSettings(settings, config).ToList(); CoreRegistryRepository.Save(config); } }
public virtual void SetApplicationConfiguration(Dictionary <string, string> settings, string applicationName = null, string configurationName = null) { applicationName = applicationName ?? ApplicationName; ValidAppOrDie(applicationName); configurationName = configurationName ?? CommonConfigName; Application application = CoreRegistryRepository.GetOneApplicationWhere(c => c.Name == applicationName); lock (Application.ConfigurationLock) { Configuration config = application.Configurations.FirstOrDefault(c => c.Name.Equals(configurationName)); if (config == null) { config = new Configuration { Name = configurationName }; config.ApplicationId = application.Id; config = CoreRegistryRepository.Save(config); } config.Settings = DictionaryToSettings(settings, config).ToList(); CoreRegistryRepository.Save(config); } }
public virtual ApiKeyInfo SetActiveApiKeyIndex(IApplicationNameProvider nameProvider, int index) { string clientId = GetApplicationClientId(nameProvider); ActiveApiKeyIndex apiKeyIndex = CoreRegistryRepository.OneActiveApiKeyIndexWhere(c => c.ApplicationCuid == clientId); if (apiKeyIndex == null) { apiKeyIndex = new ActiveApiKeyIndex { ApplicationCuid = clientId }; } if (Application?.ApiKeys.Count - 1 > index || index < 0) { throw new IndexOutOfRangeException($"Specified ApiKeyIndex index is invalid: {index}"); } apiKeyIndex.Value = index; CoreRegistryRepository.Save(apiKeyIndex); return(new ApiKeyInfo() { ApiKey = GetApplicationApiKey(clientId, index), ApplicationClientId = clientId }); }