public JobFactory(IHistoricalDataBroker hdb, ISettings settings, QDMS.IDataStorage localStorage, IEconomicReleaseBroker erb, IDividendsBroker divb, IEarningsAnnouncementBroker eab) : base() { _hdb = hdb; _host = settings.updateJobEmailHost; _port = settings.updateJobEmailPort; _username = settings.updateJobEmailUsername; _password = settings.updateJobEmailPassword; _sender = settings.updateJobEmailSender; _email = settings.updateJobEmail; _updateJobSettings = new UpdateJobSettings( noDataReceived: settings.updateJobReportNoData, errors: settings.updateJobReportErrors, outliers: settings.updateJobReportOutliers, requestTimeouts: settings.updateJobTimeouts, timeout: settings.updateJobTimeout, toEmail: settings.updateJobEmail, fromEmail: settings.updateJobEmailSender); _localStorage = localStorage; _erb = erb; _divb = divb; _eab = eab; }
public JobFactory(IHistoricalDataBroker hdb, string host, int port, string username, string password, string sender, string email, UpdateJobSettings updateJobSettings, QDMS.IDataStorage localStorage, IEconomicReleaseBroker erb, IDividendsBroker divb, IEarningsAnnouncementBroker eab) : base() { _hdb = hdb; _host = host; _port = port; _username = username; _password = password; _sender = sender; _email = email; _updateJobSettings = updateJobSettings; _localStorage = localStorage; _erb = erb; _divb = divb; _eab = eab; }
public DividendUpdateJob(IDividendsBroker broker, IEmailService emailService, UpdateJobSettings settings, IInstrumentSource instrumentManager) { _broker = broker; _emailService = emailService; _settings = settings; _instrumentManager = instrumentManager; }
public CustomBootstrapper( IDataStorage storage, IEconomicReleaseBroker erb, IHistoricalDataBroker hdb, IRealTimeDataBroker rtdb, IDividendsBroker divb, IScheduler scheduler, string apiKey) { _storage = storage; _erb = erb; _hdb = hdb; _rtdb = rtdb; _divb = divb; _scheduler = scheduler; _apiKey = apiKey; }
public DividendsModule(IDividendsBroker broker) : base("/dividends") { this.RequiresAuthentication(); Get("/", async(_, token) => { var request = this.Bind <DividendRequest>(); if (request == null) { return(HttpStatusCode.BadRequest); } return(await broker.RequestDividends(request).ConfigureAwait(false)); }); Get("/datasources", _ => broker.DataSources.Keys.ToList()); }
public CustomBootstrapper( IDataStorage storage, IEconomicReleaseBroker erb, IHistoricalDataBroker hdb, IRealTimeDataBroker rtdb, IDividendsBroker divb, IEarningsAnnouncementBroker eab, IScheduler scheduler, ISettings settings) { _storage = storage; _erb = erb; _hdb = hdb; _rtdb = rtdb; _divb = divb; _eab = eab; _scheduler = scheduler; _apiKey = settings.apiKey; }
public void Initialisize() { _log.Info($"Server is initialisizing ..."); //create data db if it doesn't exist DataDBContext dataContext; try { dataContext = new DataDBContext(_config.LocalStorage.ConnectionString); dataContext.Database.Initialize(false); } catch (System.Data.Entity.Core.ProviderIncompatibleException ex) { throw new NotSupportedException("Could not connect to context DataDB!", ex); } dataContext.Dispose(); MyDBContext entityContext; try { entityContext = new MyDBContext(_config.DataStorage.ConnectionString); entityContext.Database.Initialize(false); } catch (System.Data.Entity.Core.ProviderIncompatibleException ex) { throw new NotSupportedException("Could not connect to context MyDB!", ex); } // initialisize helper classes var cfRealtimeBroker = new ContinuousFuturesBroker(GetClient("RTDBCFClient"), false); var cfHistoricalBroker = new ContinuousFuturesBroker(GetClient("HDBCFClient"), false); IDataStorage localStorage; switch (_config.LocalStorage.Type) { case LocalStorageType.MySql: localStorage = new QDMSServer.DataSources.MySQLStorage(_config.LocalStorage.ConnectionString); break; case LocalStorageType.SqlServer: localStorage = new QDMSServer.DataSources.SqlServerStorage(_config.LocalStorage.ConnectionString); break; default: throw new NotSupportedException("Not supported local storage type: " + _config.LocalStorage.Type); } // create brokers _historicalDataBroker = new HistoricalDataBroker(cfHistoricalBroker, localStorage, new IHistoricalDataSource[] { // @todo please add here some historical data sources the service should provide }); _realTimeDataBroker = new RealTimeDataBroker(cfRealtimeBroker, localStorage, new IRealTimeDataSource[] { // @todo please add here some real time data sources the service should provide }); _economicReleaseBroker = new EconomicReleaseBroker("FXStreet", new[] { new fx.FXStreet(new CountryCodeHelper(entityContext.Countries.ToList())) }); _dividendBroker = new DividendsBroker("Nasdaq", new[] { new NasdaqDs.Nasdaq() }); // create servers _historicalDataServer = new HistoricalDataServer(_config.HistoricalDataService.Port, _historicalDataBroker); _realTimeDataServer = new RealTimeDataServer(_config.RealtimeDataService.PublisherPort, _config.RealtimeDataService.RequestPort, _realTimeDataBroker); // create scheduler ISchedulerFactory schedulerFactory = new StdSchedulerFactory(); //todo need settings for scheduler + jobfactory _scheduler = schedulerFactory.GetScheduler(); var bootstrapper = new CustomBootstrapper( localStorage, _economicReleaseBroker, _historicalDataBroker, _realTimeDataBroker, _dividendBroker, _scheduler, _config.WebService.ApiKey); var uri = new Uri((_config.WebService.UseSsl ? "https" : "http") + "://localhost:" + _config.WebService.Port); _httpServer = new NancyHost(bootstrapper, uri); // ... start the servers _historicalDataServer.StartServer(); _realTimeDataServer.StartServer(); _httpServer.Start(); _scheduler.Start(); _log.Info($"Server is ready."); }