diff options
Diffstat (limited to 'src/json.cc')
| -rw-r--r-- | src/json.cc | 84 |
1 files changed, 48 insertions, 36 deletions
diff --git a/src/json.cc b/src/json.cc index 13c9a649..3ee401a6 100644 --- a/src/json.cc +++ b/src/json.cc @@ -48,37 +48,45 @@ namespace json { std::string jsonEscape(const std::string& s) { std::string t; - for(std::string::const_iterator i = s.begin(), eoi = s.end(); i != eoi; - ++i) { - if(*i == '"' || *i == '\\' || *i == '/') { + for (std::string::const_iterator i = s.begin(), eoi = s.end(); i != eoi; + ++i) { + if (*i == '"' || *i == '\\' || *i == '/') { t += "\\"; t += *i; - } else if(*i == '\b') { + } + else if (*i == '\b') { t += "\\b"; - } else if(*i == '\f') { + } + else if (*i == '\f') { t += "\\f"; - } else if(*i == '\n') { + } + else if (*i == '\n') { t += "\\n"; - } else if(*i == '\r') { + } + else if (*i == '\r') { t += "\\r"; - } else if(*i == '\t') { + } + else if (*i == '\t') { t += "\\t"; - } else if(in(static_cast<unsigned char>(*i), 0x00u, 0x1Fu)) { + } + else if (in(static_cast<unsigned char>(*i), 0x00u, 0x1Fu)) { t += "\\u00"; char temp[3]; temp[2] = '\0'; temp[0] = (*i >> 4); - temp[1] = (*i)&0x0Fu; - for(int j = 0; j < 2; ++j) { - if(temp[j] < 10) { + temp[1] = (*i) & 0x0Fu; + for (int j = 0; j < 2; ++j) { + if (temp[j] < 10) { temp[j] += '0'; - } else { - temp[j] += 'A'-10; + } + else { + temp[j] += 'A' - 10; } } t += temp; - } else { - t.append(i, i+1); + } + else { + t.append(i, i + 1); } } return t; @@ -91,13 +99,13 @@ std::string encode(const ValueBase* json) return encode(out, json).str(); } -JsonGetParam::JsonGetParam -(const std::string& request, const std::string& callback) - : request(request), callback(callback) -{} +JsonGetParam::JsonGetParam(const std::string& request, + const std::string& callback) + : request(request), callback(callback) +{ +} -JsonGetParam -decodeGetParams(const std::string& query) +JsonGetParam decodeGetParams(const std::string& query) { std::string jsonRequest; std::string callback; @@ -109,40 +117,44 @@ decodeGetParams(const std::string& query) Scip id = std::make_pair(query.end(), query.end()); Scip params = std::make_pair(query.end(), query.end()); std::vector<Scip> getParams; - util::splitIter(query.begin()+1, query.end(), std::back_inserter(getParams), + util::splitIter(query.begin() + 1, query.end(), std::back_inserter(getParams), '&'); for (const auto& i : getParams) { - if(util::startsWith(i.first, i.second, "method=")) { - method.first = i.first+7; + if (util::startsWith(i.first, i.second, "method=")) { + method.first = i.first + 7; method.second = i.second; - } else if(util::startsWith(i.first, i.second, "id=")) { - id.first = i.first+3; + } + else if (util::startsWith(i.first, i.second, "id=")) { + id.first = i.first + 3; id.second = i.second; - } else if(util::startsWith(i.first, i.second, "params=")) { - params.first = i.first+7; + } + else if (util::startsWith(i.first, i.second, "params=")) { + params.first = i.first + 7; params.second = i.second; - } else if(util::startsWith(i.first, i.second, "jsoncallback=")) { - callback.assign(i.first+13, i.second); + } + else if (util::startsWith(i.first, i.second, "jsoncallback=")) { + callback.assign(i.first + 13, i.second); } } std::string decparam = util::percentDecode(params.first, params.second); std::string jsonParam = base64::decode(decparam.begin(), decparam.end()); - if(method.first == method.second && id.first == id.second) { + if (method.first == method.second && id.first == id.second) { // Assume batch call. jsonRequest = jsonParam; - } else { + } + else { jsonRequest = "{"; - if(method.first != method.second) { + if (method.first != method.second) { jsonRequest += "\"method\":\""; jsonRequest.append(method.first, method.second); jsonRequest += "\""; } - if(id.first != id.second) { + if (id.first != id.second) { jsonRequest += ",\"id\":\""; jsonRequest.append(id.first, id.second); jsonRequest += "\""; } - if(params.first != params.second) { + if (params.first != params.second) { jsonRequest += ",\"params\":"; jsonRequest += jsonParam; } |
