public QuoteServiceAPIModule(IFCMAPIConnection fcmAPI) { Get("/", _ => "Quote Service"); Get("/Connect/Status", _ => fcmAPI.APIStatus.ToString()); Post("/Connect", parameters => { return(fcmAPI.Connect().Result ? HttpStatusCode.Accepted : HttpStatusCode.BadRequest); }); Post("/Reconnect", parameters => { return(fcmAPI.Reconnect().Result ? HttpStatusCode.Accepted : HttpStatusCode.BadRequest); }); Post("/Disconnect", _ => { return(fcmAPI.Disconnect()); }); Get("/Quote", _ => String.Join(",", fcmAPI.QuotesList.Select(x => x.Exchange + "," + x.Symbol).ToArray())); Post("/Quote/{exchange}/{symbol}", parameters => { var exchange = (string)parameters.exchange; var symbol = (string)parameters.symbol; return(fcmAPI.AddQuote(new Quote() { Exchange = exchange, Symbol = symbol }).Result ? HttpStatusCode.Accepted : HttpStatusCode.BadRequest); }); Delete("/Quote/{exchange}/{symbol}", parameters => { var exchange = (string)parameters.exchange; var symbol = (string)parameters.symbol; return(fcmAPI.RemoveQuote(new Quote() { Exchange = exchange, Symbol = symbol }).Result ? HttpStatusCode.Accepted : HttpStatusCode.BadRequest); }); Delete("/Quote", parameters => { return(fcmAPI.RemoveAllQuotes()); }); }
private void AddQuoteSchedule(QuoteSchedule quoteSchedule) { var start = quoteSchedule.StartTime.ToDateTimeOffset().ToLocalTime(); var end = quoteSchedule.EndTime.ToDateTimeOffset().ToLocalTime(); if (DateTimeOffset.Now > end) { return; } start = start.AddMinutes(-10.0); end = end.AddMinutes(5.0); // Schedule the start of the quote. BackgroundJob.Schedule(() => _conn.AddQuote(null), start); // Schedule the end of the quote. BackgroundJob.Schedule(() => _conn.RemoveQuote(quoteSchedule.Quote), end); }