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 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(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 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(request, Method.GET); if (res.StatusCode == HttpStatusCode.OK) { var data = Newtonsoft.Json.JsonConvert.DeserializeObject(res.Content); data.Quantity = (int)(stockPrice / data.symbolinfo.ht); return data; } return null; } public async Task 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>(request, Method.POST); if (rest.IsSuccessful) { var date = rest.Data.Data; return date; } return null; } } }