27 #pragma clang diagnostic ignored "-Wundefined-inline"
31 #include "../kite.hpp"
32 #include "../utils.hpp"
34 namespace kiteconnect {
36 const std::vector<string>& symbols) {
37 return callApi<std::unordered_map<string, quote>, utils::json::JsonObject,
38 true>(
"market.quote", {}, { encodeSymbolsList(symbols) },
39 [](utils::json::JsonObject& data) {
40 std::unordered_map<string, quote> Quotes;
41 for (
auto& i : data) {
42 Quotes.emplace(i.name.GetString(), i.value.GetObject());
49 const std::vector<string>& symbols) {
50 return callApi<std::unordered_map<string, ohlcQuote>,
51 utils::json::JsonObject,
true>(
"market.quote.ohlc", {},
52 { encodeSymbolsList(symbols) }, [](utils::json::JsonObject& data) {
53 std::unordered_map<string, ohlcQuote> Quotes;
54 for (
auto& i : data) {
55 Quotes.emplace(i.name.GetString(), i.value.GetObject());
62 const std::vector<string>& symbols) {
63 return callApi<std::unordered_map<string, ltpQuote>,
64 utils::json::JsonObject,
true>(
"market.quote.ltp", {},
65 { encodeSymbolsList(symbols) }, [](utils::json::JsonObject& data) {
66 std::unordered_map<string, ltpQuote> Quotes;
67 for (
auto& i : data) {
68 Quotes.emplace(i.name.GetString(), i.value.GetObject());
76 static const auto toString = [](
bool val) {
return val ?
"1" :
"0"; };
77 return callApi<std::vector<historicalData>, utils::json::JsonObject,
true>(
78 "market.historical", {},
79 { std::to_string(params.instrumentToken), params.interval, params.from,
80 params.to, toString(params.continuous), toString(params.oi) },
81 [](utils::json::JsonObject& data) {
82 std::vector<historicalData> candles;
83 for (
auto& i : data[
"candles"].GetArray()) {
84 candles.emplace_back(i.GetArray());
91 utils::FmtArgs fmtArgs = {};
92 utils::http::endpoint endpoint;
93 if (exchange.empty()) {
94 endpoint = endpoints.at(
"market.instruments.all");
96 endpoint = endpoints.at(
"market.instruments");
97 fmtArgs.emplace_back(exchange);
99 const auto response =
sendReq(endpoint, {}, fmtArgs);
100 if (!response) {
return {}; };
102 return utils::parseInstruments<instrument>(response.rawBody);