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 holding(
const rj::Value::Object& val) { parse(val); };
46 void parse(
const rj::Value::Object& val) {
47 tradingsymbol = utils::json::get<string>(val,
"tradingsymbol");
48 exchange = utils::json::get<string>(val,
"exchange");
49 instrumentToken = utils::json::get<uint32_t>(val,
"instrument_token");
50 ISIN = utils::json::get<string>(val,
"isin");
51 product = utils::json::get<string>(val,
"product");
52 price = utils::json::get<double>(val,
"price");
53 quantity = utils::json::get<int>(val,
"quantity");
54 t1Quantity = utils::json::get<int>(val,
"t1_quantity");
55 realisedQuantity = utils::json::get<int>(val,
"realised_quantity");
56 collateralQuantity = utils::json::get<int>(val,
"collateral_quantity");
57 collateralType = utils::json::get<string>(val,
"collateral_type");
58 averagePrice = utils::json::get<double>(val,
"average_price");
59 lastPrice = utils::json::get<double>(val,
"last_price");
60 closePrice = utils::json::get<double>(val,
"close_price");
61 PnL = utils::json::get<double>(val,
"pnl");
62 dayChange = utils::json::get<double>(val,
"day_change");
64 utils::json::get<double>(val,
"day_change_percentage");
67 uint32_t instrumentToken = 0;
70 int realisedQuantity = -1;
71 int collateralQuantity = -1;
73 double averagePrice = -1;
74 double lastPrice = -1;
75 double closePrice = -1;
77 double dayChange = -1;
78 double dayChangePercentage = -1;
83 string collateralType;
89 explicit position(
const rj::Value::Object& val) { parse(val); };
91 void parse(
const rj::Value::Object& val) {
92 tradingsymbol = utils::json::get<string>(val,
"tradingsymbol");
93 exchange = utils::json::get<string>(val,
"exchange");
94 instrumentToken = utils::json::get<uint32_t>(val,
"instrument_token");
95 product = utils::json::get<string>(val,
"product");
96 quantity = utils::json::get<int>(val,
"quantity");
97 overnightQuantity = utils::json::get<int>(val,
"overnight_quantity");
98 multiplier = utils::json::get<double>(val,
"multiplier");
99 averagePrice = utils::json::get<double>(val,
"average_price");
100 closePrice = utils::json::get<double>(val,
"close_price");
101 lastPrice = utils::json::get<double>(val,
"last_price");
102 value = utils::json::get<double>(val,
"value");
103 PnL = utils::json::get<double>(val,
"pnl");
104 M2M = utils::json::get<double>(val,
"m2m");
105 unrealised = utils::json::get<double>(val,
"unrealised");
106 realised = utils::json::get<double>(val,
"realised");
107 buyQuantity = utils::json::get<int>(val,
"buy_quantity");
108 buyPrice = utils::json::get<double>(val,
"buy_price");
109 buyValue = utils::json::get<double>(val,
"buy_value");
110 buyM2MValue = utils::json::get<double>(val,
"buy_m2m");
111 sellQuantity = utils::json::get<int>(val,
"sell_quantity");
112 sellPrice = utils::json::get<double>(val,
"sell_price");
113 sellValue = utils::json::get<double>(val,
"sell_value");
114 sellM2MValue = utils::json::get<double>(val,
"sell_m2m");
115 dayBuyQuantity = utils::json::get<int>(val,
"day_buy_quantity");
116 dayBuyPrice = utils::json::get<double>(val,
"day_buy_price");
117 dayBuyValue = utils::json::get<double>(val,
"day_buy_value");
118 daySellQuantity = utils::json::get<int>(val,
"day_sell_quantity");
119 daySellPrice = utils::json::get<double>(val,
"day_sell_price");
120 daySellValue = utils::json::get<double>(val,
"day_sell_value");
123 uint32_t instrumentToken = 0;
125 int buyQuantity = -1;
126 int overnightQuantity = -1;
127 int sellQuantity = -1;
128 int dayBuyQuantity = -1;
129 int daySellQuantity = -1;
130 double multiplier = -1;
131 double averagePrice = -1;
132 double closePrice = -1;
133 double lastPrice = -1;
137 double unrealised = -1;
138 double realised = -1;
139 double buyPrice = -1;
140 double buyValue = -1;
141 double buyM2MValue = -1;
142 double sellPrice = -1;
143 double sellValue = -1;
144 double sellM2MValue = -1;
145 double dayBuyPrice = -1;
146 double dayBuyValue = -1;
147 double daySellPrice = -1;
148 double daySellValue = -1;
149 string tradingsymbol;
157 explicit positions(
const rj::Value::Object& val) { parse(val); };
159 void parse(
const rj::Value::Object& val) {
160 rj::Value netVal(rj::kArrayType);
161 utils::json::get<utils::json::JsonArray>(val, netVal,
"net");
162 for (
auto& i : netVal.GetArray()) { net.emplace_back(i.GetObject()); };
164 rj::Value dayVal(rj::kArrayType);
165 utils::json::get<utils::json::JsonArray>(val, dayVal,
"day");
166 for (
auto& i : dayVal.GetArray()) { day.emplace_back(i.GetObject()); };
169 std::vector<position> net;
170 std::vector<position> day;
176 GENERATE_FLUENT_METHOD(
178 GENERATE_FLUENT_METHOD(
180 GENERATE_FLUENT_METHOD(
182 GENERATE_FLUENT_METHOD(
184 GENERATE_FLUENT_METHOD(
186 GENERATE_FLUENT_METHOD(
192 string transactionType;