142 lines
6.7 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|