iWOWS/WolfOfWallStreet/Services/OnlinePlusService.cs

142 lines
6.7 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using RestSharp;
using WolfOfWallStreet.Models;
using WolfOfWallStreet.Models.OnlinePlus;
using WolfOfWallStreet.Services.Contracts;
namespace WolfOfWallStreet.Services
{
public class OnlinePlusService : IOnlinePlusService
{
public async Task<OnlinePlusOrderResult> SendOrder(OnlinePlusOrder draft)
{
RestClient client = new RestClient();
RestRequest request = new RestRequest(new Uri($"https://api2.mofidonline.com/Web/V1/Order/Post"), Method.POST);
request.AddHeader("authority", "api2.mofidonline.com");
request.AddHeader("method", "POST");
request.AddHeader("path", "/Web/V1/Order/Post");
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("authorization", "BasicAuthentication 2cc57a2a-a099-4ce5-8cb8-ef139fabe973");
request.AddHeader("origin", "https://onlineplus.mofidonline.com");
request.AddHeader("referer", "https://onlineplus.mofidonline.com/Home/Default/page-1");
request.AddHeader("sec-fetch-dest", "empty");
request.AddHeader("sec-fetch-mode", "cors");
request.AddHeader("content-type", "application/json");
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");
request.AddJsonBody(new OnlinePlusOrder
{
CautionAgreementSelected = false,
FinancialProviderId = 1,
IsSymbolCautionAgreement = false,
IsSymbolSepahAgreement = false,
SepahAgreementSelected = false,
isin = draft.isin,
maxShow = 0,
minimumQuantity = "",
orderCount = draft.orderCount,
orderId = 0,
orderPrice = draft.orderPrice,
orderSide = 65,
orderValidity = 74,
orderValiditydate = null,
shortSellIncentivePercent = 0,
shortSellIsEnabled = false,
});
var rest = client.Execute<OnlinePlusOrderResult>(request,Method.POST);
if (rest.IsSuccessful)
{
var date = rest.Data;
date.GetDateTime = DateTime.Now;
if (date.MessageDesc!=null&&date.MessageDesc.Contains("محدودیت ارسال سفارش در ثانیه"))
return null;
return date;
}
return null;
}
public async Task<OnlinePlusSymbol> GetSymbolOrderBase(Symbol symbol, long stockPrice)
{
RestClient client = new RestClient();
RestRequest request = new RestRequest(new Uri($"https://core.tadbirrlc.com//StockFutureInfoHandler.ashx?%7B%22Type%22:%22getLightSymbolInfoAndQueue%22,%22la%22:%22Fa%22,%22nscCode%22:%22{symbol.symbolISIN}%22%7D&jsoncallback="), Method.GET);
request.AddHeader("authority", "onlineplus.mofidonline.com");
request.AddHeader("method", "POST");
request.AddHeader("path", "/Customer/SendOrder");
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://onlineplus.mofidonline.com");
request.AddHeader("referer", "https://onlineplus.mofidonline.com/Home/Default/page-1");
request.AddHeader("sec-fetch-dest", "empty");
request.AddHeader("sec-fetch-mode", "cors");
request.AddHeader("content-type", "application/json");
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 res = client.Execute<OnlinePlusSymbol>(request, Method.GET);
if (res.StatusCode == HttpStatusCode.OK)
{
var data = Newtonsoft.Json.JsonConvert.DeserializeObject<OnlinePlusSymbol>(res.Content);
data.Quantity = (int)(stockPrice / data.symbolinfo.ht);
return data;
}
return null;
}
public async Task<OnlinePlusAccount> GetAccounTask(string cookiesOrAuth)
{
RestClient client = new RestClient();
RestRequest request = new RestRequest(new Uri($"https://www.mofidonline.com/Handlers/GetAccountRemain.ashx"), Method.POST);
request.AddHeader("authority", "www.mofidonline.com");
request.AddHeader("method", "GET");
request.AddHeader("path", "/Handlers/GetAccountRemain.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("referer", "https://www.mofidonline.com/Home/userprofile");
request.AddHeader("sec-fetch-dest", "empty");
request.AddHeader("sec-fetch-mode", "cors");
request.AddHeader("content-type", "application/json");
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 cookiesOrAuth.Split(' '))
{
var value = str.Split('=').Last();
request.AddCookie(str.Split('=').First(), value.Substring(0, value.Length - 1));
}
var rest = client.Execute<OnlinePlusRoot<OnlinePlusAccount>>(request, Method.POST);
if (rest.IsSuccessful)
{
var date = rest.Data.Data;
return date;
}
return null;
}
}
}