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()); });
        }
Beispiel #2
0
        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);
        }