iWOWS/WolfOfWallStreet/Services/MofidOnlineService.cs

129 lines
5.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
using RestSharp;
using WolfOfWallStreet.Extensions;
using WolfOfWallStreet.Models;
using WolfOfWallStreet.Models.MofidOnline;
using WolfOfWallStreet.Models.OnlinePlus;
using WolfOfWallStreet.Services.Contracts;
namespace WolfOfWallStreet.Services
{
public class MofidOnlineService : IMofidOnlineService
{
public async Task<MofidOnlineOrderResult> SendOrder(MofidOnlineOrder draft)
{
RestClient client = new RestClient();
RestRequest request = new RestRequest(new Uri($"https://mofidonline.com/9/0/SiteCustomerHandler.ashx?lan=fa&.rand=2c70981681bb45138629b0f1b82be55d"), Method.POST);
request.AddHeader("authority", "mofidonline.com");
request.AddHeader("method", "POST");
request.AddHeader("path", $"/9/0/SiteCustomerHandler.ashx?lan=fa&.rand={StringExtensions.GenerateGuid(32)}");
request.AddHeader("scheme", "https");
request.AddHeader("Accept", "*/*");
request.AddHeader("accept-encoding", "gzip, deflate, br");
request.AddHeader("accept-language", "en-US,en;q=0.9");
request.AddHeader("content-length", "170");
request.AddHeader("origin", "https://mofidonline.com");
request.AddHeader("referer", "https://mofidonline.com/Customer/AddOrder?cr=fbff775e469a4e4d8922e6cc0fe80215&lan=fa");
request.AddHeader("sec-fetch-dest", "empty");
request.AddHeader("sec-fetch-mode", "cors");
request.AddHeader("content-type", "application/x-www-form-urlencoded; charset=UTF-8");
request.AddHeader("sec-fetch-site", "same-origin");
request.AddHeader("user-agent",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36 OPR/69.0.3686.95");
request.AddHeader("x-requested-with", "XMLHttpRequest");
foreach (var str in draft.Cookies.Split(' '))
{
var value = str.Split('=').Last();
request.AddCookie(str.Split('=').First(), value.Substring(0, value.Length - 1));
}
request.AddJsonBody(new MofidOnlineOrder
{
Mode = "buysell",
SymbolId = draft.SymbolId,
OrderPrice = draft.OrderPrice,
OrderType = "76",
OrderSide = "65",
OrderValidity = "74",
OrderValiditydate = "",
OrderTotalQuantity = draft.OrderTotalQuantity,
TriggerPrice = "",
MinimumQuantity = "",
MaxShown = "",
BourseCode = "",
isin = "",
pk = "TBRFinancialDataProvider",
OrderMode = "add",
orderid = "0",
OrderExpectedQuantity = "0",
ts = null,
cs = "",
ss = null,
SymbolNsc = draft.SymbolNsc,
SendSMS = false,
browserTime = DateTime.Now.ToString("T"),
IsSymbolInAgreement = "false",
AcceptedAgreement = false
});
var rest = client.Execute<MofidOnlineOrderResult>(request, Method.POST);
if (rest.StatusCode == HttpStatusCode.OK)
{
if (rest.Data != null)
return rest.Data;
else
{
var data = JsonConvert.DeserializeObject<MofidOnlineOrderResult>(rest.Content);
data.GetDateTime = DateTime.Now;
return data;
}
}
return null;
}
public async Task<MofidOnlineSymbol> GetSymbolOrderBase(Symbol symbol, long stockPrice)
{
RestClient client = new RestClient();
RestRequest request = new RestRequest(new Uri($"https://core.tadbirrlc.com//StockFutureInfoHandler.ashx?%7B%22Type%22:%22getSymbolFullInfo%22,%22la%22:%22fa%22,%22nscCode%22:%22{symbol.symbolISIN}%22%7D&"), Method.GET);
request.AddHeader("authority", "core.tadbirrlc.com");
request.AddHeader("method", "POST");
request.AddHeader("path", $"//StockFutureInfoHandler.ashx");
request.AddHeader("scheme", "https");
request.AddHeader("Accept", "*/*");
request.AddHeader("accept-encoding", "gzip, deflate, br");
request.AddHeader("accept-language", "en-US,en;q=0.9");
request.AddHeader("content-length", "170");
request.AddHeader("origin", "https://mofidonline.com");
request.AddHeader("referer", " https://mofidonline.com/Customer/AddOrder?cr=fbff775e469a4e4d8922e6cc0fe80215&lan=fa");
request.AddHeader("sec-fetch-dest", "empty");
request.AddHeader("sec-fetch-mode", "cors");
request.AddHeader("content-type", "application/x-www-form-urlencoded; charset=UTF-8");
request.AddHeader("sec-fetch-site", "same-origin");
request.AddHeader("user-agent",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36 OPR/69.0.3686.95");
request.AddHeader("x-requested-with", "XMLHttpRequest");
var rest = client.Execute<MofidOnlineSymbol>(request, Method.GET);
if (rest.StatusCode == HttpStatusCode.OK)
{
MofidOnlineSymbol data;
if (rest.Data != null)
data = rest.Data;
else
data = Newtonsoft.Json.JsonConvert.DeserializeObject<MofidOnlineSymbol>(rest.Content);
data.Quantity = (int)(stockPrice / data.ht)+2;
return data;
}
return null;
}
}
}