iWOWS/WolfOfWallStreet/Services/EasyTraderService.cs

83 lines
3.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using RestSharp;
using WolfOfWallStreet.Extensions;
using WolfOfWallStreet.Models;
using WolfOfWallStreet.Models.EasyTrader;
using WolfOfWallStreet.Services.Contracts;
namespace WolfOfWallStreet.Services
{
public class EasyTraderService : IEasyTraderService
{
private int server = 11;
public async Task<EasyTraderOrderResult> SendOrder(string auth, EasyTraderDraft draft)
{
RestClient loginClient = new RestClient();
RestRequest draftRequest =
new RestRequest(new Uri($"https://api.cl3.mofid.dev/easy/api/OmsOrder"), Method.POST);
draftRequest.AddHeader("Accept", "application/json, text/plain, */*");
draftRequest.AddHeader("Authorization", auth);
draftRequest.AddHeader("User-Agent",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36 OPR/68.0.3618.173");
draftRequest.AddHeader("Referer", "https://d.easytrader.emofid.com/");
draftRequest.AddHeader("Content-Type", "application/json");
draftRequest.AddJsonBody(new EasyTraderDraft
{
cautionAgreementSelected = false,
easySource = 1,
easyState = 7,
financeId = 1,
isin = draft.isin,
price = draft.price,
quantity = draft.quantity,
referenceKey = $"{StringExtensions.GenerateGuid(8)}-3ff5-{StringExtensions.GenerateGuid(4)}-99f4-{StringExtensions.GenerateGuid(8)}",
side = 0,
stockSymbol = draft.stockSymbol,
validityDateJalali = null,
validityType = 74
});
var res = loginClient.Execute<EasyTraderOrderResult>(draftRequest,Method.POST);
if (res.IsSuccessful)
{
return res.Data;
}
return null;
}
public async Task<EasyTraderDraft> GetSymbolInfo(string auth, string isin)
{
throw new NotImplementedException();
}
public async Task<EasyTraderDraft> GetSymbolOrderBase(string auth, Symbol symbol, long stockPrice)
{
RestClient loginClient = new RestClient();
RestRequest draftRequest =
new RestRequest(new Uri($"https://d{server}.emofid.com/easy/api/MarketData/GetSymbolDetailsData/{symbol.symbolISIN}/StockOrderData"), Method.GET);
draftRequest.AddHeader("Accept", "application/json, text/plain, */*");
draftRequest.AddHeader("Authorization", auth);
draftRequest.AddHeader("User-Agent",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36 OPR/68.0.3618.173");
draftRequest.AddHeader("Referer", "https://d.easytrader.emofid.com/");
draftRequest.AddHeader("Content-Type", "application/json");
var res = await loginClient.ExecuteGetAsync<EasyTraderSymbol>(draftRequest);
if (res.IsSuccessful)
{
return new EasyTraderDraft
{
price = (int)res.Data.highAllowedPrice,
stockSymbol = symbol.SymbolName,
quantity = (int)(stockPrice / res.Data.highAllowedPrice) + 2,
isin = symbol.symbolISIN
};
}
return null;
}
}
}