#pragma once

#include "http.h"

#include <library/cpp/http/misc/httpreqdata.h>

class THttpClientRequestExtension: public TClientRequest {
public:
    bool Parse(char* req, TBaseServerRequestData& rd);
    bool ProcessHeaders(TBaseServerRequestData& rd, TBlob& postData);
protected:
    virtual bool OptionsAllowed() {
        return false;
    }
};

template <class TRequestData>
class THttpClientRequestExtImpl: public THttpClientRequestExtension {
protected:
    bool Parse(char* req) {
        return THttpClientRequestExtension::Parse(req, RD);
    }
    bool ProcessHeaders() {
        return THttpClientRequestExtension::ProcessHeaders(RD, Buf);
    }

protected:
    TRequestData RD;
    TBlob Buf;
};

using THttpClientRequestEx = THttpClientRequestExtImpl<TServerRequestData>;