static size_t recvHeaders()

in sdk/src/http/CurlHttpClient.cc [305:331]


    static size_t recvHeaders(char *buffer, size_t size, size_t nitems, void *userdata)
    {
        TransferState *state = static_cast<TransferState*>(userdata);
        const size_t length = nitems * size;

        std::string line(buffer);
        auto pos = line.find(':');
        if (pos != line.npos)
        {
            size_t posEnd = line.rfind('\r');
            if (posEnd != line.npos) {
                posEnd = posEnd - pos - 2;
            }
            std::string name  = line.substr(0, pos);
            std::string value = line.substr(pos + 2, posEnd);
            state->response->setHeader(name, value);
        }

        if (length == 2 && (buffer[0] == 0x0D) && (buffer[1] == 0x0A)) {
            if (state->response->hasHeader(Http::CONTENT_LENGTH)) {
                double dval;
                curl_easy_getinfo(state->curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD, &dval);
                state->total = (int64_t)dval;
            }
        }
        return length;
    }