Error Client::buildError()

in sdk/src/client/Client.cc [88:115]


Error Client::buildError(const std::shared_ptr<HttpResponse> &response) const
{
    Error error;
    if (response == nullptr) {
        error.setCode("NullptrError");
        error.setMessage("HttpResponse is nullptr, should not be here.");
        return error;
    }

    long responseCode = response->statusCode();
    error.setStatus(responseCode);
    std::stringstream ss;
    if ((responseCode == 203) ||
        (responseCode > 299 && responseCode < 600)) {
        ss << "ServerError:" << responseCode;
        error.setCode(ss.str());
        if (response->Body() != nullptr) {
            std::istreambuf_iterator<char> isb(*response->Body().get()), end;
            error.setMessage(std::string(isb, end));
        }
    } else {
        ss << "ClientError:" << responseCode;
        error.setCode(ss.str());
        error.setMessage(response->statusMsg());
    }
    error.setHeaders(response->Headers());
    return error;
}