#include "http_request.hpp"

#ifdef BMCWEB_ENABLE_GRPC
#include "absl/log/log.h"
#endif

namespace crow
{

Request::Request(
    boost::beast::http::request<boost::beast::http::string_body> reqIn,
    std::error_code& ec) :
    req(std::move(reqIn))
{
    if (!setUrlInfo())
    {
        ec = std::make_error_code(std::errc::invalid_argument);
    }

#ifdef BMCWEB_ENABLE_GRPC
    LOG(INFO) << "=> HTTP: Request: path: target: " << this->target();
#endif
}

Request::Request(std::string_view bodyIn, std::error_code& ec) : req({}, bodyIn)
{
    if (!setUrlInfo())
    {
        ec = std::make_error_code(std::errc::invalid_argument);
    }

#ifdef BMCWEB_ENABLE_GRPC
    LOG(INFO) << "=> HTTP: Request: path: target: " << this->target();
#endif
}

bool Request::setUrlInfo()
{
    auto result = boost::urls::parse_relative_ref(target());

    if (!result)
    {
        return false;
    }
    urlBase = *result;
    return true;
}

} // namespace crow