/// <summary>
        /// Handles object messages sent by bitmex.
        /// </summary>
        /// <param name="msg">The MSG.</param>
        /// <param name="streams">The streams.</param>
        /// <returns></returns>
        public static bool HandleObjectMessage(string msg, BitmexClientStreams streams)
        {
            var response = BitmexJsonSerializer.Deserialize <JObject>(msg);

            // ********************
            // ADD OBJECT HANDLERS BELOW
            // ********************

            return
                (TradeResponse.TryHandle(response, streams.TradesSubject) ||
                 TradeBinResponse.TryHandle(response, streams.TradeBinSubject) ||
                 BookResponse.TryHandle(response, streams.BookSubject) ||
                 QuoteResponse.TryHandle(response, streams.QuoteSubject) ||
                 LiquidationResponse.TryHandle(response, streams.LiquidationSubject) ||
                 PositionResponse.TryHandle(response, streams.PositionSubject) ||
                 MarginResponse.TryHandle(response, streams.MarginSubject) ||
                 OrderResponse.TryHandle(response, streams.OrderSubject) ||
                 WalletResponse.TryHandle(response, streams.WalletSubject) ||
                 InstrumentResponse.TryHandle(response, streams.InstrumentSubject) ||
                 ExecutionResponse.TryHandle(response, streams.ExecutionSubject) ||
                 FundingResponse.TryHandle(response, streams.FundingsSubject) ||


                 ErrorResponse.TryHandle(response, streams.ErrorSubject) ||
                 SubscribeResponse.TryHandle(response, streams.SubscribeSubject) ||
                 InfoResponse.TryHandle(response, streams.InfoSubject) ||
                 AuthenticationResponse.TryHandle(response, streams.AuthenticationSubject));
        }
        public QuoteResponse ProcessQuote(QuoteRequest request)
        {
            Console.WriteLine(string.Format("Processing quote for: {0}, product: {1}", request.Name, request.Product));

            var response = new QuoteResponse()
            {
                Company = "Application 1",
                Request = request
            };

            switch (request.Product)
            {
            case 2:
                throw new ApplicationException("We do not support product 2");

            case 4:
                Thread.Sleep(new TimeSpan(0, 0, 0, 30));
                response.Price = decimal.Zero;
                break;

            default:
                response.Price = decimal.MaxValue;
                break;
            }
            return(response);
        }
示例#3
0
		public async Task<QuoteResponse> GetQuote(QuoteRequest request)
		{
			var client = this.ApiClient();
			client.QueryString.Add ("pair", request.ExchangeMarketRef);

			string rawData = await client.DownloadStringTaskAsync (this.QuoteApiUri);
			var jsonData = JToken.Parse (rawData);
			var quoteData = jsonData["result"][request.ExchangeMarketRef];

			rawData = await client.DownloadStringTaskAsync (this.QuoteApiUri_OHLC);
			jsonData = JToken.Parse (rawData);
			var ohlcData = jsonData["result"][request.ExchangeMarketRef];

			var quote = new QuoteResponse () {
				ExchangeMarketCD = request.ExchangeMarketCD,
				DailyOpen = Decimal.Parse(ohlcData[1].Value<string>()),
				DailyHigh = Decimal.Parse(ohlcData[2].Value<string>()),
				DailyLow = Decimal.Parse(ohlcData[3].Value<string>()),
				DailyClose = Decimal.Parse(ohlcData[4].Value<string>()),
				DailyVolume = Decimal.Parse(ohlcData[6].Value<string>()),
				LastBid = Decimal.Parse(quoteData["b"][0].Value<string>()),
				LastAsk = Decimal.Parse(quoteData["a"][0].Value<string>()),
				LastTrade = Decimal.Parse(quoteData["c"][0].Value<string>()),
				RawData = Encoding.ASCII.GetBytes (jsonData.ToString())
			};

			return quote;
		}
示例#4
0
 public IEnumerable <dynamic> Return(QuoteResponse quote_response)
 {
     return
         (csv_response_parser.ParseToLines(quote_response.WebResponse)
          .Select(yahoo_quote => yahoo_quote_parser.Parse(yahoo_quote, quote_response.QuoteRequest.ReturnParameters))
          .ToList());
 }
        public JsonResult SaveInstallments(QuoteResponse quoteResponse)
        {
            DateTime indianTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, INDIAN_ZONE);

            quoteResponse.UpdatedDate = indianTime;
            quoteResponse.Status      = "Active";
            if (quoteResponse.SecondInstallment == ",")
            {
                quoteResponse.SecondInstallment = "0,0";
            }
            if (quoteResponse.ThirdInstallment == ",")
            {
                quoteResponse.ThirdInstallment = "0,0";
            }
            if (quoteResponse.FourthInstallment == ",")
            {
                quoteResponse.FourthInstallment = "0,0";
            }
            if (quoteResponse.FifthInstallment == ",")
            {
                quoteResponse.FifthInstallment = "0,0";
            }
            int count = quotationListsService.AddInstallments(quoteResponse);

            if (count > 0)
            {
                return(Json("Success"));
            }
            else
            {
                return(Json("Failed"));
            }
        }
 public IEnumerable<dynamic> Return(QuoteResponse quote_response)
 {
     return
         csv_response_parser.ParseToLines(quote_response.WebResponse)
                            .Select(yahoo_quote => yahoo_quote_parser.Parse(yahoo_quote, quote_response.QuoteRequest.ReturnParameters))
                            .ToList();
 }
示例#7
0
        public static string showQuote(List <QuoteResponse> quoteList)
        {
            QuoteResponse quote = QuoteGenerate.QuotePickRand(quoteList);

            Console.WriteLine(quote.Text);
            return(quote.Text);
        }
示例#8
0
        private bool HandleObjectMessage(string msg)
        {
            // ********************
            // ADD OBJECT HANDLERS BELOW
            // ********************

            return

                (ErrorResponse.TryHandle(msg, Streams.ErrorSubject) ||
                 SubscribeResponse.TryHandle(msg, Streams.SubscribeSubject) ||

                 BookResponse.TryHandle(msg, Streams.BookSubject) ||
                 TradeResponse.TryHandle(msg, Streams.TradesSubject) ||
                 QuoteResponse.TryHandle(msg, Streams.QuoteSubject) ||
                 LiquidationResponse.TryHandle(msg, Streams.LiquidationSubject) ||
                 PositionResponse.TryHandle(msg, Streams.PositionSubject) ||
                 MarginResponse.TryHandle(msg, Streams.MarginSubject) ||
                 OrderResponse.TryHandle(msg, Streams.OrderSubject) ||
                 WalletResponse.TryHandle(msg, Streams.WalletSubject) ||
                 ExecutionResponse.TryHandle(msg, Streams.ExecutionSubject) ||
                 FundingResponse.TryHandle(msg, Streams.FundingsSubject) ||
                 InstrumentResponse.TryHandle(msg, Streams.InstrumentSubject) ||
                 TradeBinResponse.TryHandle(msg, Streams.TradeBinSubject) ||


                 InfoResponse.TryHandle(msg, Streams.InfoSubject) ||
                 AuthenticationResponse.TryHandle(msg, Streams.AuthenticationSubject));
        }
示例#9
0
        private bool HandleObjectMessage(string msg)
        {
            var response = BitmexJsonSerializer.Deserialize <JObject>(msg);

            // ********************
            // ADD OBJECT HANDLERS BELOW
            // ********************

            return

                (TradeResponse.TryHandle(response, Streams.TradesSubject) ||
                 TradeBinResponse.TryHandle(response, Streams.TradeBinSubject) ||
                 BookResponse.TryHandle(response, Streams.BookSubject) ||
                 QuoteResponse.TryHandle(response, Streams.QuoteSubject) ||
                 LiquidationResponse.TryHandle(response, Streams.LiquidationSubject) ||
                 PositionResponse.TryHandle(response, Streams.PositionSubject) ||
                 OrderResponse.TryHandle(response, Streams.OrderSubject) ||
                 WalletResponse.TryHandle(response, Streams.WalletSubject) ||


                 ErrorResponse.TryHandle(response, Streams.ErrorSubject) ||
                 SubscribeResponse.TryHandle(response, Streams.SubscribeSubject) ||
                 InfoResponse.TryHandle(response, Streams.InfoSubject) ||
                 AuthenticationResponse.TryHandle(response, Streams.AuthenticationSubject));
        }
示例#10
0
        private QuoteResponse CalculateOffer(GetQuoteRequest request)
        {
            var response = new QuoteResponse();

            if (request.PropertyDetails.Cost / request.AccountDetails.AUM > 5)
            {
                response.DownPayment    = 50000;
                response.RateofInterest = "5.0%";
                response.IsPreApproved  = true;
            }
            else if (request.PropertyDetails.Cost / request.AccountDetails.AUM > 8)
            {
                response.DownPayment    = 40000;
                response.RateofInterest = "4.0%";
                response.IsPreApproved  = true;
            }
            else if (request.PropertyDetails.Cost / request.AccountDetails.AUM > 10)
            {
                response.DownPayment    = 10000;
                response.RateofInterest = "2.5%";
                response.IsPreApproved  = true;
            }
            else
            {
                response.IsPreApproved = false;
            }
            response.PropertyId    = request.PropertyDetails.PropertyId;
            response.UserId        = request.AccountDetails.UserId;
            response.AccountNumber = request.AccountDetails.AccountNumber;
            response.MonthlyEMI    = (request.PropertyDetails.Cost - response.DownPayment) / 240;
            return(response);
        }
示例#11
0
 public StockQuote(int stockId)
 {
     Quote                           = new QuoteResponse();
     Quote.QuoteData                 = new QuoteData();
     Quote.QuoteData.All             = new All();
     Quote.QuoteData.Product         = new Product();
     Quote.QuoteData.Product.StockId = stockId;
 }
        public ActionResult DeleteConfirmed(int id)
        {
            QuoteResponse quoteResponse = db.QuoteResponses.Find(id);

            db.QuoteResponses.Remove(quoteResponse);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
示例#13
0
        public static void Main(string[] args)
        {
            var port    = 3000;
            var address = "127.0.0.1";

            var    requestSerializer  = new XmlSerializer(typeof(QuoteRequest));
            var    responseSerializer = new XmlSerializer(typeof(QuoteResponse));
            string directoryPath      = @"C:\Users\ftd-04\source\repos\dotnet-rest-controller-assignment-LucasJenkins\dotnet-io-concurrency-assignment-LucasJenkins\Files";

            // Example QuoteRequest containing symbols and fields client wishes to fetch data about
            var request = new QuoteRequest();

            Console.WriteLine("Please specify interval between 1-10, followed by 3 request, followed by 3 companies");


            foreach (var x in args)
            {
                switch (args)
                {
                case:
                    request.
                case:
                    break;

                case:
                    break;

                case:
                    break
                }
            }



            try
            {
                // Initialize connection to server
                var client = new TcpClient(address, port);

                using (var stream = client.GetStream())
                {
                    // Serialize request to server
                    requestSerializer.Serialize(stream, request);

                    // Temporary hacky fix for data preventing read blocking
                    client.Client.Shutdown(SocketShutdown.Send);

                    // Receive QuoteResponse from server
                    QuoteResponse response = (QuoteResponse)responseSerializer.Deserialize(stream);
                    File.WriteAllText(directoryPath, response.QuoteString);
                }
            }
            catch (IOException e)
            {
                Console.WriteLine(e.Message);
            }
        }
        public string Get()
        {
            QuoteResponse response = new QuoteResponse()
            {
                HouseCost = 25000000, IsPreapproved = true, RateofInterest = "2.40"
            };
            var jsonresponse = Newtonsoft.Json.JsonConvert.SerializeObject(response);

            return(jsonresponse);
        }
 public ActionResult Edit([Bind(Include = "QuoteReposonseId,QuoteCostPerItem,QuoteCostTotal,Notes,QuoteRequestId")] QuoteResponse quoteResponse)
 {
     if (ModelState.IsValid)
     {
         db.Entry(quoteResponse).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.QuoteReposonseId = new SelectList(db.QuoteRequests, "QuoteRequestId", "SpecificationDetails", quoteResponse.QuoteReposonseId);
     return(View(quoteResponse));
 }
        // GET: QuoteResponses/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            QuoteResponse quoteResponse = db.QuoteResponses.Find(id);

            if (quoteResponse == null)
            {
                return(HttpNotFound());
            }
            return(View(quoteResponse));
        }
示例#17
0
        public static void Main(string[] args)
        {
            var port    = 3000;
            var address = "127.0.0.1";

            var requestSerializer  = new XmlSerializer(typeof(QuoteRequest));
            var responseSerializer = new XmlSerializer(typeof(QuoteResponse));

            //string filename = "C:\\Users\ftd-09\\Desktop\\Ticker.xml";

            // Example QuoteRequest containing symbols and fields client wishes to fetch data about
            var request = new QuoteRequest
            {
                Fields = new List <QuoteField> {
                    QuoteField.High, QuoteField.Low, QuoteField.Close
                },
                Symbols = new List <string> {
                    "AAPL", "TSLA", "TWTR", "SNAP", "GOOGL", "AMZN"
                },
                Interval = 10000
            };

            try
            {
                while (true)
                {
                    // Initialize connection to server
                    var client = new TcpClient(address, port);

                    using (var stream = client.GetStream())
                    {
                        // Serialize request to server
                        requestSerializer.Serialize(stream, request);

                        // Temporary hacky fix for data preventing read blocking
                        client.Client.Shutdown(SocketShutdown.Send);

                        // Receive QuoteResponse from server
                        QuoteResponse response = (QuoteResponse)responseSerializer.Deserialize(stream);

                        stream.CopyTo(Console.OpenStandardOutput());
                    }
                }
            }
            catch (IOException e)
            {
                Console.WriteLine(e.Message);
            }
        }
示例#18
0
        public string Post(GetQuoteRequest request)
        {
            var response            = new QuoteResponse();
            var IseverythingAlright = Validate(request);

            if (!IseverythingAlright)
            {
                return("Please check input parameters, Something is not right!");
            }

            response = CalculateOffer(request);
            var jsonresponse = Newtonsoft.Json.JsonConvert.SerializeObject(response);

            return(jsonresponse);
        }
        // GET: QuoteResponses/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            QuoteResponse quoteResponse = db.QuoteResponses.Find(id);

            if (quoteResponse == null)
            {
                return(HttpNotFound());
            }
            ViewBag.QuoteReposonseId = new SelectList(db.QuoteRequests, "QuoteRequestId", "SpecificationDetails", quoteResponse.QuoteReposonseId);
            return(View(quoteResponse));
        }
        public static OrderTotals GetQuote(Order order, OrderTotals total, bool calcFreight)
        {
            var order_V01 = order as Order_V01;
            var request   = new QuoteRequest_V02 {
                Order = order_V01, CalcFreight = calcFreight, Donation = (total as OrderTotals_V02) == null ? decimal.Zero : (total as OrderTotals_V02).Donation
            };
            var session = SessionInfo.GetSessionInfo(order.DistributorID, CultureInfo.CurrentCulture.Name);

            if (null != session)
            {
                SessionInfo.GetSessionInfo(order.DistributorID, CultureInfo.CurrentCulture.Name).HmsPricing = HLConfigManager.Configurations.CheckoutConfiguration.UseHMSCalc;
            }
            order.DistributorID = order.DistributorID.ToUpper();
            if (Settings.GetRequiredAppSetting("LogCatalogCN", "false").ToLower() == "true")
            {
                LogRequest(OrderCreationHelper.Serialize(request));
            }
            QuoteResponse result = null;
            var           proxy  = ServiceClientProvider.GetOrderServiceProxy();

            try
            {
                result = proxy.Quote(new QuoteRequest1(request)).QuoteResult;
                if (result.Status == ServiceResponseStatusType.Success && result.Totals != null)
                {
                    if (Settings.GetRequiredAppSetting("LogCatalogCN", "false").ToLower() == "true")
                    {
                        LogRequest(OrderCreationHelper.Serialize(result));
                    }
                    return(result.Totals);
                }
                else
                {
                    LoggerHelper.Error(
                        string.Format(
                            "Order Total error, distributor:{0} receive date:{1}, Calc Freight :{3},  error message:{2}",
                            order.DistributorID, order_V01.ReceivedDate.ToString(), order_V01.Messages, calcFreight));
                }
            }
            catch (Exception ex)
            {
                LoggerHelper.Error(
                    string.Format(
                        "Order Total error, distributor:{0} receive date:{1}, Calc Freight:{3},  error message:{2}",
                        order.DistributorID, order_V01.ReceivedDate.ToString(), ex, calcFreight));
            }
            return(null);
        }
示例#21
0
		public async Task<QuoteResponse> GetQuote(QuoteRequest request)
		{
			var client = this.ApiClient();
			string rawData = await client.DownloadStringTaskAsync (this.QuoteApiUri);
			var jsonData = JToken.Parse (rawData);

			var quote = new QuoteResponse () {
				ExchangeMarketCD = request.ExchangeMarketCD,
				LastBid = Decimal.Parse(jsonData["buy_price"].Value<string>()),
				LastAsk = Decimal.Parse(jsonData["sell_price"].Value<string>()),
				LastTrade = Decimal.Parse(jsonData["remit_partner_price"].Value<string>()),
				RawData = Encoding.ASCII.GetBytes (jsonData.ToString())
			};

			return quote;
		}
示例#22
0
		public async Task<QuoteResponse> GetQuote(QuoteRequest request)
		{
			var client = this.ApiClient();
			string rawData = await client.DownloadStringTaskAsync (this.QuoteApiUri);
			var jsonData = JToken.Parse (rawData);

			var quote = new QuoteResponse () {
				ExchangeMarketCD = request.ExchangeMarketCD,
				LastTrade = Decimal.Parse(jsonData["last"]["value"].Value<string>()),
				ReportedTime = DateTimeOffset.Parse(jsonData["last"]["timestamp"].Value<string>(),
													CultureInfo.InvariantCulture.DateTimeFormat,
													DateTimeStyles.AssumeUniversal),
				RawData = Encoding.ASCII.GetBytes (jsonData.ToString())
			};

			return quote;
		}
示例#23
0
		public async Task<QuoteResponse> GetQuote(QuoteRequest request)
		{
			var client = this.ApiClient();
			client.QueryString.Add ("token", request.ApiToken);

			string rawData = await client.DownloadStringTaskAsync (this.QuoteApiUri);
			var jsonData = JToken.Parse (rawData);

			var quote = new QuoteResponse () {
				ExchangeMarketCD = request.ExchangeMarketCD,
				LastBid = Decimal.Parse(jsonData["PHP"].Value<string>()),
				LastAsk = Decimal.Parse(jsonData["PHP-ASK"].Value<string>()),
				RawData = Encoding.ASCII.GetBytes (jsonData.ToString())
			};

			return quote;
		}
示例#24
0
		public async Task<QuoteResponse> GetQuote(QuoteRequest request)
		{
			var client = this.ApiClient();
			client.QueryString.Add ("amount", "1");
			client.QueryString.Add ("curr", request.ExchangeMarketRef.Substring(0, 3));
			client.QueryString.Add ("refCurr", request.ExchangeMarketRef.Substring(3, 3));

			string rawData = await client.DownloadStringTaskAsync (this.QuoteApiUri);
			var jsonData = JToken.Parse (rawData);

			var quote = new QuoteResponse () {
				ExchangeMarketCD = request.ExchangeMarketCD,
				LastTrade = Decimal.Parse(jsonData["rate"].Value<string>()),
				RawData = Encoding.ASCII.GetBytes (jsonData.ToString())
			};

			return quote;
		}
示例#25
0
        public QuoteResponse ProcessQuote(QuoteRequest request)
        {
            Console.WriteLine(string.Format("Processing quote for: {0}, product: {1}", request.Name, request.Product));

            var response = new QuoteResponse()
            {
                Company = "Application 4",
                Request = request
            };

            switch (request.Product)
            {
            default:
                response.Price = decimal.MaxValue;
                break;
            }

            return(response);
        }
示例#26
0
        public static async Task <List <StockModel> > GetStockDetails(List <string> symbolStringList)
        {
            var           client     = new HttpClient();
            StringBuilder sb         = new StringBuilder();
            string        baseUri    = @"https://yahoo-finance-low-latency.p.rapidapi.com/v6/finance/quote?symbols=";
            string        symbolsUri = String.Join("%2C", symbolStringList);

            sb.Append(baseUri);
            sb.Append(symbolsUri);

            string uri    = sb.ToString();
            var    apiKey = ConfigurationManager.AppSettings["x-rapidapi-key"];

            var request = new HttpRequestMessage
            {
                Method     = HttpMethod.Get,
                RequestUri = new Uri(uri),
                Headers    =
                {
                    { "x-rapidapi-key",  apiKey                                     },
                    { "x-rapidapi-host", "yahoo-finance-low-latency.p.rapidapi.com" },
                },
            };

            using (HttpResponseMessage response = client.SendAsync(request).Result)
            {
                QuoteResponse stocks = new QuoteResponse();
                if (response.IsSuccessStatusCode)
                {
                    StockApiResponse result = await response.Content.ReadAsAsync <StockApiResponse>();

                    stocks = result.QuoteResponse;
                }
                else
                {
                    throw new HttpRequestException(response.ReasonPhrase);
                }

                return(stocks.Result.ToList());
            }
        }
示例#27
0
		public async Task<QuoteResponse> GetQuote(QuoteRequest request)
		{
			var client = this.ApiClient();
			client.QueryString.Add ("currencypair", request.ExchangeMarketRef);

			string rawData = await client.DownloadStringTaskAsync (this.QuoteApiUri);
			var jsonData = JToken.Parse (rawData);

			this.CheckResponse (jsonData);

			var quoteData = jsonData["quote"];

			var quote = new QuoteResponse () {
				ExchangeMarketCD = request.ExchangeMarketCD,
				LastBid = Decimal.Parse(quoteData["bid"].Value<string>()),
				LastAsk = Decimal.Parse(quoteData["ask"].Value<string>()),
				RawData = Encoding.ASCII.GetBytes (jsonData.ToString())
			};

			return quote;
		}
示例#28
0
 /// <summary>
 /// Events
 /// </summary>
 private void OnQuoteResponse(QuoteResponse cmd)
 {
     ThreadPool.QueueUserWorkItem(o =>
     {
         try
         {
             if (TickArrived == null)
             {
                 return;
             }
             TickArrived(new Tick(cmd.quote.symbol, DateTime.Now, (decimal)cmd.quote.last));
         }
         catch (Exception e)
         {
             if (InfoChanged != null)
             {
                 InfoChanged(e.Message + Environment.NewLine + e.StackTrace);
             }
         }
     });
 }
        public IActionResult Post([FromBody] Quote quote)
        {
            if (
                quote.Country != "FR" ||
                (quote.ReturnDate - quote.DepartureDate).Days < 7 ||
                (quote.Options != null && quote.Options.Any()) ||
                quote.Cover != "BASIC" ||
                (quote.TravellerAges != null && quote.TravellerAges.Any(a => a < 66))
                )

            {
                return(this.BadRequest());
            }
            var quoteResponse = new QuoteResponse();

            quoteResponse.Quote =
                1.8m *
                1m *
                quote.TravellerAges.Sum() * 1.5m *
                (quote.ReturnDate - quote.DepartureDate).Days;
            return(this.Ok(quoteResponse));
        }
示例#30
0
        private static async Task ClientHandlerAsync(TcpClient client, XmlSerializer requestSerializer, XmlSerializer responseSerializer)
        {
            using (NetworkStream stream = client.GetStream())
            {
                // Deserialize QuoteRequest
                var request = (QuoteRequest)requestSerializer.Deserialize(stream);

                // Fetch quotes from stock API
                Console.WriteLine("Fetching quotes");
                var quotes = await Stocks.Api.FetchQuotes(request);

                // Convert response into formatted string
                var quoteString = new QuoteResponse
                {
                    QuoteString = Stocks.Utils.QuotesToString(quotes, request.Fields)
                };

                // Serialize response back to client
                Console.WriteLine("Sending quote");
                responseSerializer.Serialize(stream, quoteString);
            }
        }
示例#31
0
		public async Task<QuoteResponse> GetQuote(QuoteRequest request)
		{
			var client = this.ApiClient();
			client.QueryString.Add ("book", request.ExchangeMarketRef);

			string rawData = await client.DownloadStringTaskAsync (this.QuoteApiUri);
			var jsonData = JToken.Parse (rawData);

			var quote = new QuoteResponse () {
				ExchangeMarketCD = request.ExchangeMarketCD,
				DailyHigh = Decimal.Parse(jsonData["high"].Value<string>()),
				DailyLow = Decimal.Parse(jsonData["low"].Value<string>()),
				DailyVolume = Decimal.Parse(jsonData["volume"].Value<string>()),
				LastBid = Decimal.Parse(jsonData["bid"].Value<string>()),
				LastAsk = Decimal.Parse(jsonData["ask"].Value<string>()),
				LastTrade = Decimal.Parse(jsonData["last"].Value<string>()),
				ReportedTime = Utilities.GetDateTimeFromUnixTimestamp (jsonData["timestamp"].Value<long> ()),
				RawData = Encoding.ASCII.GetBytes (jsonData.ToString())
			};

			return quote;
		}
示例#32
0
        public QuoteResponse GetQuoteResponse(int?id)
        {
            QuoteResponse response = new QuoteResponse();

            if (id != null)
            {
                response.Quote = quoteRepository.GetQuoteAndQuoteDetail((int)id);
            }
            else
            {
                response.QuoteCount = quoteRepository.GetAll().Count() + 1;
            }

            //BaseData
            response.Contacts      = contactRepository.GetAll().ToList();
            response.Products      = productRepository.GetAll().ToList();
            response.ProductModels = productModelRepository.GetAll().ToList();
            response.Exclusions    = exclusionRepository.GetAll().ToList();


            return(response);
        }
示例#33
0
		public async Task<QuoteResponse> GetQuote(QuoteRequest request)
		{
			var client = this.ApiClient();
			client.QueryString.Add ("currencypair", request.ExchangeMarketRef);

			string rawData = await client.DownloadStringTaskAsync (this.QuoteApiUri);
			var jsonData = JToken.Parse (rawData);

			var quoteData = jsonData["ticker"][request.ExchangeMarketRef];

			var quote = new QuoteResponse () {
				ExchangeMarketCD = request.ExchangeMarketCD,
				DailyVolume = Decimal.Parse(quoteData["volume"].Value<string>()),
				DailyHigh = Decimal.Parse(quoteData["high"].Value<string>()),
				DailyLow = Decimal.Parse(quoteData["low"].Value<string>()),
				LastBid = Decimal.Parse(quoteData["buy"].Value<string>()),
				LastAsk = Decimal.Parse(quoteData["sell"].Value<string>()),
				LastTrade = Decimal.Parse(quoteData["last"].Value<string>()),
				RawData = Encoding.ASCII.GetBytes (jsonData.ToString())
			};

			return quote;
		}
示例#34
0
        public QuoteResponse GetQuote()
        {
            var values     = new List <string>();
            var requestUrl = ConfigurationManager.AppSettings.Get(Constants.QuoteServiceUrl);
            var request    = WebRequest.Create(requestUrl);
            var result     = new QuoteResponse();

            request.Method = "GET";

            var response = request.GetResponse();

            var dataStream = response.GetResponseStream();

            StreamReader reader = new StreamReader(dataStream);

            string responseFromServer = reader.ReadToEnd();
            JavaScriptSerializer javascriptSerializer = new JavaScriptSerializer();

            values = javascriptSerializer.Deserialize <List <string> >(responseFromServer);

            result.Values = values;

            return(result);
        }
示例#35
0
		public async Task<QuoteResponse> GetQuote(QuoteRequest request)
		{
			var client = this.ApiClient();

			var endpointUri = new Uri (
				this.QuoteApiUri, 
				this.QuoteApiUri.AbsolutePath.Replace("$$", request.ExchangeMarketRef)
			);
			string signature = this.GenerateRequestSignature(
				request.ApiSecret,
				endpointUri.AbsolutePath,
				client.QueryString
			);
			
			client.Headers.Add ("Rest-Key", request.ApiToken);
			client.Headers.Add ("Rest-Sign", signature);

			string rawData = await client.DownloadStringTaskAsync (endpointUri);
			var jsonData = JToken.Parse (rawData);
			var quoteData = jsonData["data"];

			var quote = new QuoteResponse () {
				ExchangeMarketCD = request.ExchangeMarketCD,
				DailyAverage = Decimal.Parse(quoteData["avg"]["value"].Value<string>()),
				DailyVolume = Decimal.Parse(quoteData["vol"]["value"].Value<string>()),
				DailyHigh = Decimal.Parse(quoteData["high"]["value"].Value<string>()),
				DailyLow = Decimal.Parse(quoteData["low"]["value"].Value<string>()),
				LastBid = Decimal.Parse(quoteData["buy"]["value"].Value<string>()),
				LastAsk = Decimal.Parse(quoteData["sell"]["value"].Value<string>()),
				LastTrade = Decimal.Parse(quoteData["last"]["value"].Value<string>()),
				RawData = Encoding.ASCII.GetBytes (jsonData.ToString()),
				ReportedTime = Utilities.GetDateTimeFromUnixTimestamp (quoteData ["dataUpdateTime"].Value<long> () / 1000000)
			};

			return quote;
		}
示例#36
0
 private QuoteResponse ErrorQuoteResponse(string reason)
 {
     _logger.LogInformation($"Invalid quote request: {reason}");
     return(QuoteResponse.Error(reason));
 }
 public int AddInstallments(QuoteResponse quoteResponse)
 {
     return(quotationListsRepository.AddInstallments(quoteResponse));
 }
 public int AddInstallments(QuoteResponse quoteResponse)
 {
     _dbContext.QuoteResponse.Add(quoteResponse);
     _dbContext.SaveChanges();
     return(1);
 }
示例#39
0
 public virtual void onMessage(QuoteResponse message, QuickFix.SessionID session)
 {
     throw new QuickFix.UnsupportedMessageType();
 }
示例#40
0
        private async Task <QuoteResponse> GenerateQuote(GetQuoteRequest requestQuote, string previousOperationId)
        {
            var settings = _liquidityConverterSettingsAccessor.GetLiquidityConverterSettings(requestQuote.BrokerId);

            if (settings == null)
            {
                return(ErrorQuoteResponse("Liquidity Converter is not configured for broker"));
            }

            var processQuoteResult =
                _instrumentEngine.ProcessQuoteRequest(requestQuote, settings.MarkUp);

            if (!string.IsNullOrWhiteSpace(processQuoteResult.ErrorMessage))
            {
                return(ErrorQuoteResponse(processQuoteResult.ErrorMessage));
            }

            // todo: calculate fee
            //var finalPrice = (1 + settings.MarkUp + fee) * price;
            //finalPrice = Math.Round(finalPrice, Mathematics.AccuracyToNormalizeDouble);
            //finalPrice = Math.Round(finalPrice, instrument.Accuracy, MidpointRounding.ToZero);

            var operationId = Guid.NewGuid().ToString("N");

            var quote = new ConvertQuote(requestQuote.FromAsset,
                                         requestQuote.ToAsset,
                                         processQuoteResult.FromAssetVolume,
                                         processQuoteResult.ToAssetVolume,
                                         requestQuote.IsFromFixed,
                                         requestQuote.BrokerId,
                                         requestQuote.AccountId,
                                         requestQuote.WalletId,
                                         previousOperationId
                                         )
            {
                Price       = processQuoteResult.Price,
                OperationId = operationId
            };

            var now = DateTime.UtcNow;

            quote.ExpireDate = now.AddSeconds(settings.ExpirationInSeconds);
            quote.OpenDate   = DateTime.UtcNow;
            quote.ClosedDate = DateTime.MinValue;
            quote.State      = QuoteState.Active;

            // todo: добавить контекст формирования квоты - orderSide, instrumentS, fee
            await _convertQuoteStorage.SaveAsync(quote);

            processQuoteResult.Instruments.ForEach(async instrumentInTrade =>
            {
                await _convertQuoteStorage.SaveAsync(new Trade()
                {
                    TradeId          = Guid.NewGuid().ToString("N"),
                    OperationId      = operationId,
                    Fee              = 0.0, // todo: calculate fee
                    MarkUp           = settings.MarkUp,
                    InstrumentSymbol = instrumentInTrade.Symbol,
                    InstrumentPrice  = instrumentInTrade.Price,
                    State            = TradeState.New
                });
            });

            // we send to client short interval and keep on server long interval
            quote.ExpireDate = now.AddSeconds(settings.ClientExpirationInSeconds);

            return(QuoteResponse.Success(quote));
        }