WIP: CURL/request implementation.
This commit is contained in:
60
source/mijin/net/request.cpp
Normal file
60
source/mijin/net/request.cpp
Normal file
@@ -0,0 +1,60 @@
|
||||
|
||||
#include "./request.hpp"
|
||||
|
||||
#include <mutex>
|
||||
|
||||
#include "./curl_wrappers.hpp"
|
||||
|
||||
namespace mijin
|
||||
{
|
||||
namespace
|
||||
{
|
||||
bool gCurlInited = false;
|
||||
std::mutex gCurlInitMutex;
|
||||
|
||||
class CURLGuard
|
||||
{
|
||||
public:
|
||||
~CURLGuard() MIJIN_NOEXCEPT
|
||||
{
|
||||
if (gCurlInited)
|
||||
{
|
||||
curl_global_cleanup();
|
||||
}
|
||||
}
|
||||
} gCURLGuard [[maybe_unused]];
|
||||
|
||||
bool initCURL() MIJIN_NOEXCEPT
|
||||
{
|
||||
if (gCurlInited)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
const std::unique_lock initLock(gCurlInitMutex);
|
||||
if (gCurlInited)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
gCurlInited = (curl_global_init(0) == CURLE_OK);
|
||||
return gCurlInited;
|
||||
}
|
||||
}
|
||||
|
||||
Task<StreamResult<HTTPResponse>> c_request(const URL& url, HTTPRequest request) MIJIN_NOEXCEPT
|
||||
{
|
||||
(void) url;
|
||||
(void) request;
|
||||
if (!initCURL())
|
||||
{
|
||||
co_return StreamError::UNKNOWN_ERROR;
|
||||
}
|
||||
curl::CurlEasy easy;
|
||||
if (!easy.init())
|
||||
{
|
||||
co_return StreamError::UNKNOWN_ERROR;
|
||||
}
|
||||
easy.setURL(url);
|
||||
|
||||
co_return StreamError::UNKNOWN_ERROR;
|
||||
}
|
||||
} // namespace mijin
|
||||
Reference in New Issue
Block a user