audacia/libraries/lib-network-manager/Request.cpp

116 lines
2.1 KiB
C++

/*!********************************************************************
Audacity: A Digital Audio Editor
@file Request.cpp
@brief Define a class for constructing HTTP requests.
Dmitry Vedenko
**********************************************************************/
/*!********************************************************************
@class Request
@brief Class to construct the HTTP request.
**********************************************************************/
#include "Request.h"
#include <cctype>
#include <algorithm>
namespace audacity
{
namespace network_manager
{
Request::Request(std::string url) noexcept
: mUrl (std::move (url))
{
}
Request& Request::setURL(std::string url) noexcept
{
mUrl = std::move (url);
return *this;
}
const std::string& Request::getURL () const noexcept
{
return mUrl;
}
Request& Request::setHeader (const std::string& name, std::string value)
{
mHeaders.setHeader (name, std::move (value));
return *this;
}
std::string Request::getHeader (const std::string& name) const
{
return mHeaders.getHeaderValue (name);
}
const HeadersList& Request::getHeaders () const noexcept
{
return mHeaders;
}
Request& Request::setCookie (const std::string& name, std::string value)
{
mCookies.setCookie (name, std::move (value));
return *this;
}
std::string Request::getCookie (const std::string& name) const
{
return mCookies.getCookieValue (name);
}
const CookiesList& Request::getCookies () noexcept
{
return mCookies;
}
Request& Request::setMaxRedirects (size_t redirects) noexcept
{
mMaxRedirects = redirects;
return *this;
}
size_t Request::getMaxRedirects () const noexcept
{
return mMaxRedirects;
}
Request& Request::setTimeout (Timeout timeout) noexcept
{
mTimeout = timeout;
return *this;
}
Request::Timeout Request::getTimeout () const noexcept
{
return mTimeout;
}
Request& Request::appendCookies (const CookiesList& list)
{
for (const Cookie& cookie : list)
{
if (!cookie.isExpired())
mCookies.setCookie (cookie);
}
return *this;
}
}
}