27 #pragma clang diagnostic ignored "-Wundefined-inline"
31 #include "../kite.hpp"
32 #include "../utils.hpp"
34 namespace kiteconnect {
39 string getConditionJson(
const T& params) {
40 utils::json::json<utils::json::JsonObject> conditionJson;
41 conditionJson.field(
"exchange", params.exchange);
42 conditionJson.field(
"tradingsymbol", params.symbol);
43 conditionJson.field(
"trigger_values", params.triggerValues);
44 conditionJson.field(
"last_price", params.lastPrice);
45 return conditionJson.serialize();
49 string getOrdersJson(
const T& params) {
50 utils::json::json<utils::json::JsonArray> ordersJson;
51 ordersJson.array<gttParams>(
52 params.gttParamsList, [&](
const gttParams& param, rj::Value& buffer) {
53 ordersJson.field(
"exchange", params.exchange, &buffer);
54 ordersJson.field(
"tradingsymbol", params.symbol, &buffer);
56 "transaction_type", param.transactionType, &buffer);
57 ordersJson.field(
"quantity", param.quantity, &buffer);
58 ordersJson.field(
"order_type", param.orderType, &buffer);
59 ordersJson.field(
"product", param.product, &buffer);
60 ordersJson.field(
"price", param.price, &buffer);
62 return ordersJson.serialize();
67 utils::http::Params reqParams = {
68 {
"type", params.triggerType },
69 {
"condition", internal::getConditionJson(params) },
70 {
"orders", internal::getOrdersJson(params) },
73 return callApi<int, utils::json::JsonObject, true>(
74 "gtt.place", reqParams, {}, [](utils::json::JsonObject& data) {
75 return utils::json::get<int>(data,
"trigger_id");
80 return callApi<std::vector<GTT>, utils::json::JsonArray,
true>(
81 "gtt", {}, {}, [](utils::json::JsonArray& data) {
82 std::vector<GTT> Triggers;
83 for (
auto& i : data) { Triggers.emplace_back(i.GetObject()); }
89 return callApi<GTT, utils::json::JsonObject>(
90 "gtt.info", {}, { std::to_string(triggerId) });
94 utils::http::Params reqParams = {
95 {
"type", params.triggerType },
96 {
"condition", internal::getConditionJson(params) },
97 {
"orders", internal::getOrdersJson(params) },
100 return callApi<int, utils::json::JsonObject, true>(
"gtt.modify", reqParams,
101 { std::to_string(params.triggerId) },
102 [](utils::json::JsonObject& data) {
103 return utils::json::get<int>(data,
"trigger_id");
108 return callApi<int, utils::json::JsonObject, true>(
"gtt.delete", {},
109 { std::to_string(triggerId) }, [](utils::json::JsonObject& data) {
110 return utils::json::get<int>(data,
"trigger_id");