Consolidate Handle -> SteamWorksHTTPRequest Logic.
This commit is contained in:
+72
-192
@@ -31,6 +31,28 @@ static HandleType_t GetSteamHTTPHandle(void)
|
||||
return g_SteamWorks.pSWHTTP->GetHTTPHandle();
|
||||
}
|
||||
|
||||
static SteamWorksHTTPRequest *GetRequestPointer(ISteamHTTP *&pHTTP, IPluginContext *pContext, cell_t Handle)
|
||||
{
|
||||
pHTTP = GetHTTPPointer();
|
||||
if (pHTTP == NULL)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
HandleError err;
|
||||
HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
|
||||
|
||||
SteamWorksHTTPRequest *pRequest;
|
||||
if ((err = handlesys->ReadHandle(Handle, GetSteamHTTPHandle(), &sec, (void **)&pRequest))
|
||||
!= HandleError_None)
|
||||
{
|
||||
pContext->ThrowNativeError("Invalid Handle %x (error: %d)", Handle, err);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return pRequest;
|
||||
}
|
||||
|
||||
SteamWorksHTTPRequest::SteamWorksHTTPRequest()
|
||||
{
|
||||
this->request = INVALID_HTTPREQUEST_HANDLE;
|
||||
@@ -140,64 +162,37 @@ static cell_t sm_CreateHTTPRequest(IPluginContext *pContext, const cell_t *param
|
||||
|
||||
static cell_t sm_SetHTTPRequestContextValue(IPluginContext *pContext, const cell_t *params)
|
||||
{
|
||||
ISteamHTTP *pHTTP = GetHTTPPointer();
|
||||
if (pHTTP == NULL)
|
||||
ISteamHTTP *pHTTP;
|
||||
SteamWorksHTTPRequest *pRequest = GetRequestPointer(pHTTP, pContext, params[1]);
|
||||
if (pRequest == NULL)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
HandleError err;
|
||||
HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
|
||||
|
||||
SteamWorksHTTPRequest *pRequest;
|
||||
if ((err = handlesys->ReadHandle(params[1], GetSteamHTTPHandle(), &sec, (void **)&pRequest))
|
||||
!= HandleError_None)
|
||||
{
|
||||
return pContext->ThrowNativeError("Invalid Handle %x (error: %d)", params[1], err);
|
||||
}
|
||||
|
||||
return pHTTP->SetHTTPRequestContextValue(pRequest->request, (static_cast<uint64_t>(params[2]) << 32 | static_cast<uint32_t>(params[3]))) ? 1 : 0;
|
||||
}
|
||||
|
||||
static cell_t sm_SetHTTPRequestNetworkActivityTimeout(IPluginContext *pContext, const cell_t *params)
|
||||
{
|
||||
ISteamHTTP *pHTTP = GetHTTPPointer();
|
||||
if (pHTTP == NULL)
|
||||
ISteamHTTP *pHTTP;
|
||||
SteamWorksHTTPRequest *pRequest = GetRequestPointer(pHTTP, pContext, params[1]);
|
||||
if (pRequest == NULL)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
HandleError err;
|
||||
HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
|
||||
|
||||
SteamWorksHTTPRequest *pRequest;
|
||||
if ((err = handlesys->ReadHandle(params[1], GetSteamHTTPHandle(), &sec, (void **)&pRequest))
|
||||
!= HandleError_None)
|
||||
{
|
||||
return pContext->ThrowNativeError("Invalid Handle %x (error: %d)", params[1], err);
|
||||
}
|
||||
|
||||
return pHTTP->SetHTTPRequestNetworkActivityTimeout(pRequest->request, params[2]) ? 1 : 0;
|
||||
}
|
||||
|
||||
static cell_t sm_SetHTTPRequestHeaderValue(IPluginContext *pContext, const cell_t *params)
|
||||
{
|
||||
ISteamHTTP *pHTTP = GetHTTPPointer();
|
||||
if (pHTTP == NULL)
|
||||
ISteamHTTP *pHTTP;
|
||||
SteamWorksHTTPRequest *pRequest = GetRequestPointer(pHTTP, pContext, params[1]);
|
||||
if (pRequest == NULL)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
HandleError err;
|
||||
HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
|
||||
|
||||
SteamWorksHTTPRequest *pRequest;
|
||||
if ((err = handlesys->ReadHandle(params[1], GetSteamHTTPHandle(), &sec, (void **)&pRequest))
|
||||
!= HandleError_None)
|
||||
{
|
||||
return pContext->ThrowNativeError("Invalid Handle %x (error: %d)", params[1], err);
|
||||
}
|
||||
|
||||
char *pName, *pValue;
|
||||
pContext->LocalToString(params[2], &pName);
|
||||
pContext->LocalToString(params[3], &pValue);
|
||||
@@ -206,22 +201,13 @@ static cell_t sm_SetHTTPRequestHeaderValue(IPluginContext *pContext, const cell_
|
||||
|
||||
static cell_t sm_SetHTTPRequestGetOrPostParameter(IPluginContext *pContext, const cell_t *params)
|
||||
{
|
||||
ISteamHTTP *pHTTP = GetHTTPPointer();
|
||||
if (pHTTP == NULL)
|
||||
ISteamHTTP *pHTTP;
|
||||
SteamWorksHTTPRequest *pRequest = GetRequestPointer(pHTTP, pContext, params[1]);
|
||||
if (pRequest == NULL)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
HandleError err;
|
||||
HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
|
||||
|
||||
SteamWorksHTTPRequest *pRequest;
|
||||
if ((err = handlesys->ReadHandle(params[1], GetSteamHTTPHandle(), &sec, (void **)&pRequest))
|
||||
!= HandleError_None)
|
||||
{
|
||||
return pContext->ThrowNativeError("Invalid Handle %x (error: %d)", params[1], err);
|
||||
}
|
||||
|
||||
char *pName, *pValue;
|
||||
pContext->LocalToString(params[2], &pName);
|
||||
pContext->LocalToString(params[3], &pValue);
|
||||
@@ -230,27 +216,19 @@ static cell_t sm_SetHTTPRequestGetOrPostParameter(IPluginContext *pContext, cons
|
||||
|
||||
static cell_t sm_SetCallbacks(IPluginContext *pContext, const cell_t *params)
|
||||
{
|
||||
ISteamHTTP *pHTTP = GetHTTPPointer();
|
||||
if (pHTTP == NULL)
|
||||
ISteamHTTP *pHTTP;
|
||||
SteamWorksHTTPRequest *pRequest = GetRequestPointer(pHTTP, pContext, params[1]);
|
||||
if (pRequest == NULL)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
HandleError err;
|
||||
HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
|
||||
|
||||
SteamWorksHTTPRequest *pRequest;
|
||||
if ((err = handlesys->ReadHandle(params[1], GetSteamHTTPHandle(), &sec, (void **)&pRequest))
|
||||
!= HandleError_None)
|
||||
{
|
||||
return pContext->ThrowNativeError("Invalid Handle %x (error: %d)", params[1], err);
|
||||
}
|
||||
|
||||
IPlugin *pPlugin;
|
||||
if (params[5] == BAD_HANDLE)
|
||||
{
|
||||
pPlugin = plsys->FindPluginByContext(pContext->GetContext());
|
||||
} else {
|
||||
HandleError err;
|
||||
pPlugin = plsys->PluginFromHandle(params[5], &err);
|
||||
|
||||
if (!pPlugin)
|
||||
@@ -315,22 +293,13 @@ static cell_t sm_SetCallbacks(IPluginContext *pContext, const cell_t *params)
|
||||
|
||||
static cell_t sm_SendHTTPRequest(IPluginContext *pContext, const cell_t *params)
|
||||
{
|
||||
ISteamHTTP *pHTTP = GetHTTPPointer();
|
||||
if (pHTTP == NULL)
|
||||
ISteamHTTP *pHTTP;
|
||||
SteamWorksHTTPRequest *pRequest = GetRequestPointer(pHTTP, pContext, params[1]);
|
||||
if (pRequest == NULL)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
HandleError err;
|
||||
HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
|
||||
|
||||
SteamWorksHTTPRequest *pRequest;
|
||||
if ((err = handlesys->ReadHandle(params[1], GetSteamHTTPHandle(), &sec, (void **)&pRequest))
|
||||
!= HandleError_None)
|
||||
{
|
||||
return pContext->ThrowNativeError("Invalid Handle %x (error: %d)", params[1], err);
|
||||
}
|
||||
|
||||
SteamAPICall_t hCall;
|
||||
cell_t result = pHTTP->SendHTTPRequest(pRequest->request, &hCall) ? 1 : 0;
|
||||
|
||||
@@ -357,64 +326,37 @@ static cell_t sm_SendHTTPRequest(IPluginContext *pContext, const cell_t *params)
|
||||
|
||||
static cell_t sm_DeferHTTPRequest(IPluginContext *pContext, const cell_t *params)
|
||||
{
|
||||
ISteamHTTP *pHTTP = GetHTTPPointer();
|
||||
if (pHTTP == NULL)
|
||||
ISteamHTTP *pHTTP;
|
||||
SteamWorksHTTPRequest *pRequest = GetRequestPointer(pHTTP, pContext, params[1]);
|
||||
if (pRequest == NULL)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
HandleError err;
|
||||
HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
|
||||
|
||||
SteamWorksHTTPRequest *pRequest;
|
||||
if ((err = handlesys->ReadHandle(params[1], GetSteamHTTPHandle(), &sec, (void **)&pRequest))
|
||||
!= HandleError_None)
|
||||
{
|
||||
return pContext->ThrowNativeError("Invalid Handle %x (error: %d)", params[1], err);
|
||||
}
|
||||
|
||||
return pHTTP->DeferHTTPRequest(pRequest->request) ? 1 : 0;
|
||||
}
|
||||
|
||||
static cell_t sm_PrioritizeHTTPRequest(IPluginContext *pContext, const cell_t *params)
|
||||
{
|
||||
ISteamHTTP *pHTTP = GetHTTPPointer();
|
||||
if (pHTTP == NULL)
|
||||
ISteamHTTP *pHTTP;
|
||||
SteamWorksHTTPRequest *pRequest = GetRequestPointer(pHTTP, pContext, params[1]);
|
||||
if (pRequest == NULL)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
HandleError err;
|
||||
HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
|
||||
|
||||
SteamWorksHTTPRequest *pRequest;
|
||||
if ((err = handlesys->ReadHandle(params[1], GetSteamHTTPHandle(), &sec, (void **)&pRequest))
|
||||
!= HandleError_None)
|
||||
{
|
||||
return pContext->ThrowNativeError("Invalid Handle %x (error: %d)", params[1], err);
|
||||
}
|
||||
|
||||
return pHTTP->PrioritizeHTTPRequest(pRequest->request) ? 1 : 0;
|
||||
}
|
||||
|
||||
static cell_t sm_GetHTTPResponseHeaderSize(IPluginContext *pContext, const cell_t *params)
|
||||
{
|
||||
ISteamHTTP *pHTTP = GetHTTPPointer();
|
||||
if (pHTTP == NULL)
|
||||
ISteamHTTP *pHTTP;
|
||||
SteamWorksHTTPRequest *pRequest = GetRequestPointer(pHTTP, pContext, params[1]);
|
||||
if (pRequest == NULL)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
HandleError err;
|
||||
HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
|
||||
|
||||
SteamWorksHTTPRequest *pRequest;
|
||||
if ((err = handlesys->ReadHandle(params[1], GetSteamHTTPHandle(), &sec, (void **)&pRequest))
|
||||
!= HandleError_None)
|
||||
{
|
||||
return pContext->ThrowNativeError("Invalid Handle %x (error: %d)", params[1], err);
|
||||
}
|
||||
|
||||
char *pName;
|
||||
pContext->LocalToString(params[2], &pName);
|
||||
|
||||
@@ -425,22 +367,13 @@ static cell_t sm_GetHTTPResponseHeaderSize(IPluginContext *pContext, const cell_
|
||||
|
||||
static cell_t sm_GetHTTPResponseHeaderValue(IPluginContext *pContext, const cell_t *params)
|
||||
{
|
||||
ISteamHTTP *pHTTP = GetHTTPPointer();
|
||||
if (pHTTP == NULL)
|
||||
ISteamHTTP *pHTTP;
|
||||
SteamWorksHTTPRequest *pRequest = GetRequestPointer(pHTTP, pContext, params[1]);
|
||||
if (pRequest == NULL)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
HandleError err;
|
||||
HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
|
||||
|
||||
SteamWorksHTTPRequest *pRequest;
|
||||
if ((err = handlesys->ReadHandle(params[1], GetSteamHTTPHandle(), &sec, (void **)&pRequest))
|
||||
!= HandleError_None)
|
||||
{
|
||||
return pContext->ThrowNativeError("Invalid Handle %x (error: %d)", params[1], err);
|
||||
}
|
||||
|
||||
char *pName;
|
||||
pContext->LocalToString(params[2], &pName);
|
||||
|
||||
@@ -451,22 +384,13 @@ static cell_t sm_GetHTTPResponseHeaderValue(IPluginContext *pContext, const cell
|
||||
|
||||
static cell_t sm_GetHTTPResponseBodySize(IPluginContext *pContext, const cell_t *params)
|
||||
{
|
||||
ISteamHTTP *pHTTP = GetHTTPPointer();
|
||||
if (pHTTP == NULL)
|
||||
ISteamHTTP *pHTTP;
|
||||
SteamWorksHTTPRequest *pRequest = GetRequestPointer(pHTTP, pContext, params[1]);
|
||||
if (pRequest == NULL)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
HandleError err;
|
||||
HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
|
||||
|
||||
SteamWorksHTTPRequest *pRequest;
|
||||
if ((err = handlesys->ReadHandle(params[1], GetSteamHTTPHandle(), &sec, (void **)&pRequest))
|
||||
!= HandleError_None)
|
||||
{
|
||||
return pContext->ThrowNativeError("Invalid Handle %x (error: %d)", params[1], err);
|
||||
}
|
||||
|
||||
cell_t *pSize;
|
||||
pContext->LocalToPhysAddr(params[2], &pSize);
|
||||
return pHTTP->GetHTTPResponseBodySize(pRequest->request, reinterpret_cast<uint32_t *>(pSize)) ? 1 : 0;
|
||||
@@ -474,22 +398,13 @@ static cell_t sm_GetHTTPResponseBodySize(IPluginContext *pContext, const cell_t
|
||||
|
||||
static cell_t sm_GetHTTPResponseBodyData(IPluginContext *pContext, const cell_t *params)
|
||||
{
|
||||
ISteamHTTP *pHTTP = GetHTTPPointer();
|
||||
if (pHTTP == NULL)
|
||||
ISteamHTTP *pHTTP;
|
||||
SteamWorksHTTPRequest *pRequest = GetRequestPointer(pHTTP, pContext, params[1]);
|
||||
if (pRequest == NULL)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
HandleError err;
|
||||
HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
|
||||
|
||||
SteamWorksHTTPRequest *pRequest;
|
||||
if ((err = handlesys->ReadHandle(params[1], GetSteamHTTPHandle(), &sec, (void **)&pRequest))
|
||||
!= HandleError_None)
|
||||
{
|
||||
return pContext->ThrowNativeError("Invalid Handle %x (error: %d)", params[1], err);
|
||||
}
|
||||
|
||||
char *pBuffer;
|
||||
pContext->LocalToString(params[2], &pBuffer);
|
||||
return pHTTP->GetHTTPResponseBodyData(pRequest->request, reinterpret_cast<uint8_t *>(pBuffer), params[3]) ? 1 : 0;
|
||||
@@ -497,22 +412,13 @@ static cell_t sm_GetHTTPResponseBodyData(IPluginContext *pContext, const cell_t
|
||||
|
||||
static cell_t sm_GetHTTPDownloadProgressPct(IPluginContext *pContext, const cell_t *params)
|
||||
{
|
||||
ISteamHTTP *pHTTP = GetHTTPPointer();
|
||||
if (pHTTP == NULL)
|
||||
ISteamHTTP *pHTTP;
|
||||
SteamWorksHTTPRequest *pRequest = GetRequestPointer(pHTTP, pContext, params[1]);
|
||||
if (pRequest == NULL)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
HandleError err;
|
||||
HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
|
||||
|
||||
SteamWorksHTTPRequest *pRequest;
|
||||
if ((err = handlesys->ReadHandle(params[1], GetSteamHTTPHandle(), &sec, (void **)&pRequest))
|
||||
!= HandleError_None)
|
||||
{
|
||||
return pContext->ThrowNativeError("Invalid Handle %x (error: %d)", params[1], err);
|
||||
}
|
||||
|
||||
float percent;
|
||||
cell_t result = pHTTP->GetHTTPDownloadProgressPct(pRequest->request, &percent) ? 1 : 0;
|
||||
|
||||
@@ -524,22 +430,13 @@ static cell_t sm_GetHTTPDownloadProgressPct(IPluginContext *pContext, const cell
|
||||
|
||||
static cell_t sm_SetHTTPRequestRawPostBody(IPluginContext *pContext, const cell_t *params)
|
||||
{
|
||||
ISteamHTTP *pHTTP = GetHTTPPointer();
|
||||
if (pHTTP == NULL)
|
||||
ISteamHTTP *pHTTP;
|
||||
SteamWorksHTTPRequest *pRequest = GetRequestPointer(pHTTP, pContext, params[1]);
|
||||
if (pRequest == NULL)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
HandleError err;
|
||||
HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
|
||||
|
||||
SteamWorksHTTPRequest *pRequest;
|
||||
if ((err = handlesys->ReadHandle(params[1], GetSteamHTTPHandle(), &sec, (void **)&pRequest))
|
||||
!= HandleError_None)
|
||||
{
|
||||
return pContext->ThrowNativeError("Invalid Handle %x (error: %d)", params[1], err);
|
||||
}
|
||||
|
||||
char *pName, *pBuffer;
|
||||
pContext->LocalToString(params[2], &pName);
|
||||
pContext->LocalToString(params[3], &pBuffer);
|
||||
@@ -549,27 +446,19 @@ static cell_t sm_SetHTTPRequestRawPostBody(IPluginContext *pContext, const cell_
|
||||
|
||||
static cell_t sm_GetHTTPResponseBodyCallback(IPluginContext *pContext, const cell_t *params)
|
||||
{
|
||||
ISteamHTTP *pHTTP = GetHTTPPointer();
|
||||
if (pHTTP == NULL)
|
||||
ISteamHTTP *pHTTP;
|
||||
SteamWorksHTTPRequest *pRequest = GetRequestPointer(pHTTP, pContext, params[1]);
|
||||
if (pRequest == NULL)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
HandleError err;
|
||||
HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
|
||||
|
||||
SteamWorksHTTPRequest *pRequest;
|
||||
if ((err = handlesys->ReadHandle(params[1], GetSteamHTTPHandle(), &sec, (void **)&pRequest))
|
||||
!= HandleError_None)
|
||||
{
|
||||
return pContext->ThrowNativeError("Invalid Handle %x (error: %d)", params[1], err);
|
||||
}
|
||||
|
||||
IPlugin *pPlugin;
|
||||
if (params[4] == BAD_HANDLE)
|
||||
{
|
||||
pPlugin = plsys->FindPluginByContext(pContext->GetContext());
|
||||
} else {
|
||||
HandleError err;
|
||||
pPlugin = plsys->PluginFromHandle(params[4], &err);
|
||||
|
||||
if (!pPlugin)
|
||||
@@ -610,22 +499,13 @@ static cell_t sm_GetHTTPResponseBodyCallback(IPluginContext *pContext, const cel
|
||||
|
||||
static cell_t sm_WriteHTTPResponseBodyToFile(IPluginContext *pContext, const cell_t *params)
|
||||
{
|
||||
ISteamHTTP *pHTTP = GetHTTPPointer();
|
||||
if (pHTTP == NULL)
|
||||
ISteamHTTP *pHTTP;
|
||||
SteamWorksHTTPRequest *pRequest = GetRequestPointer(pHTTP, pContext, params[1]);
|
||||
if (pRequest == NULL)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
HandleError err;
|
||||
HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
|
||||
|
||||
SteamWorksHTTPRequest *pRequest;
|
||||
if ((err = handlesys->ReadHandle(params[1], GetSteamHTTPHandle(), &sec, (void **)&pRequest))
|
||||
!= HandleError_None)
|
||||
{
|
||||
return pContext->ThrowNativeError("Invalid Handle %x (error: %d)", params[1], err);
|
||||
}
|
||||
|
||||
uint32_t size;
|
||||
if (pHTTP->GetHTTPResponseBodySize(pRequest->request, &size) == false)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user