30 #include "../utils.hpp"
31 #include "rapidjson/include/rapidjson/document.h"
32 #include "rapidjson/include/rapidjson/rapidjson.h"
34 namespace kiteconnect {
37 namespace rj = rapidjson;
38 namespace kc = kiteconnect;
39 namespace utils = kc::internal::utils;
44 explicit userProfile(
const rj::Value::Object& val) { parse(val); };
46 void parse(
const rj::Value::Object& val) {
47 userID = utils::json::get<string>(val,
"user_id");
48 userName = utils::json::get<string>(val,
"user_name");
49 userShortName = utils::json::get<string>(val,
"user_shortname");
50 avatarURL = utils::json::get<string>(val,
"avatar_url");
51 userType = utils::json::get<string>(val,
"user_type");
52 email = utils::json::get<string>(val,
"email");
53 broker = utils::json::get<string>(val,
"broker");
54 products = utils::json::get<std::vector<string>>(val,
"products");
55 orderTypes = utils::json::get<std::vector<string>>(val,
"order_types");
56 exchanges = utils::json::get<std::vector<string>>(val,
"exchanges");
58 meta = utils::json::get<utils::json::JsonObject, Meta>(val,
"meta");
68 std::vector<string> products;
69 std::vector<string> orderTypes;
70 std::vector<string> exchanges;
73 explicit Meta(
const rj::Value::Object& val) { parse(val); };
75 void parse(
const rj::Value::Object& val) {
76 dematConsent = utils::json::get<string>(val,
"demat_consent");
86 explicit userTokens(
const rj::Value::Object& val) { parse(val); };
88 void parse(
const rj::Value::Object& val) {
89 userID = utils::json::get<string>(val,
"user_id");
90 accessToken = utils::json::get<string>(val,
"access_token");
91 refreshToken = utils::json::get<string>(val,
"refresh_token");
102 explicit userSession(
const rj::Value::Object& val) { parse(val); };
104 void parse(
const rj::Value::Object& val) {
107 apiKey = utils::json::get<string>(val,
"api_key");
108 publicToken = utils::json::get<string>(val,
"public_token");
109 loginTime = utils::json::get<string>(val,
"login_time");
124 void parse(
const rj::Value::Object& val) {
125 adHocMargin = utils::json::get<double>(val,
"adhoc_margin");
126 cash = utils::json::get<double>(val,
"cash");
127 collateral = utils::json::get<double>(val,
"collateral");
128 intradayPayin = utils::json::get<double>(val,
"intraday_payin");
131 double adHocMargin = -1;
133 double collateral = -1;
134 double intradayPayin = -1;
140 explicit usedMargins(
const rj::Value::Object& val) { parse(val); };
142 void parse(
const rj::Value::Object& val) {
143 debits = utils::json::get<double>(val,
"debits");
144 exposure = utils::json::get<double>(val,
"exposure");
145 M2MRealised = utils::json::get<double>(val,
"m2m_realised");
146 M2MUnrealised = utils::json::get<double>(val,
"m2m_unrealised");
147 optionPremium = utils::json::get<double>(val,
"option_premium");
148 payout = utils::json::get<double>(val,
"payout");
149 span = utils::json::get<double>(val,
"span");
150 holdingSales = utils::json::get<double>(val,
"holding_sales");
151 turnover = utils::json::get<double>(val,
"turnover");
155 double exposure = -1;
156 double M2MRealised = -1;
157 double M2MUnrealised = -1;
158 double optionPremium = -1;
161 double holdingSales = -1;
162 double turnover = -1;
168 explicit margins(
const rj::Value::Object& val) { parse(val); };
170 void parse(
const rj::Value::Object& val) {
171 enabled = utils::json::get<bool>(val,
"enabled");
172 net = utils::json::get<double>(val,
"net");
173 available = utils::json::get<utils::json::JsonObject, availableMargins>(
175 used = utils::json::get<utils::json::JsonObject, usedMargins>(
180 bool enabled =
false;
188 explicit allMargins(
const rj::Value::Object& val) { parse(val); };
190 void parse(
const rj::Value::Object& val) {
192 utils::json::get<utils::json::JsonObject, margins>(val,
"equity");
193 commodity = utils::json::get<utils::json::JsonObject, margins>(