129 lines
5.9 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|