Consolidate Handle -> SteamWorksHTTPRequest Logic.

This commit is contained in:
Kyle Sanderson
2015-01-17 11:49:22 -08:00
parent 6dfbda708d
commit 7ffb8689f9
+72 -192
View File
@@ -31,6 +31,28 @@ static HandleType_t GetSteamHTTPHandle(void)
return g_SteamWorks.pSWHTTP->GetHTTPHandle(); 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() SteamWorksHTTPRequest::SteamWorksHTTPRequest()
{ {
this->request = INVALID_HTTPREQUEST_HANDLE; 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) static cell_t sm_SetHTTPRequestContextValue(IPluginContext *pContext, const cell_t *params)
{ {
ISteamHTTP *pHTTP = GetHTTPPointer(); ISteamHTTP *pHTTP;
if (pHTTP == NULL) SteamWorksHTTPRequest *pRequest = GetRequestPointer(pHTTP, pContext, params[1]);
if (pRequest == NULL)
{ {
return 0; 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; 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) static cell_t sm_SetHTTPRequestNetworkActivityTimeout(IPluginContext *pContext, const cell_t *params)
{ {
ISteamHTTP *pHTTP = GetHTTPPointer(); ISteamHTTP *pHTTP;
if (pHTTP == NULL) SteamWorksHTTPRequest *pRequest = GetRequestPointer(pHTTP, pContext, params[1]);
if (pRequest == NULL)
{ {
return 0; 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; return pHTTP->SetHTTPRequestNetworkActivityTimeout(pRequest->request, params[2]) ? 1 : 0;
} }
static cell_t sm_SetHTTPRequestHeaderValue(IPluginContext *pContext, const cell_t *params) static cell_t sm_SetHTTPRequestHeaderValue(IPluginContext *pContext, const cell_t *params)
{ {
ISteamHTTP *pHTTP = GetHTTPPointer(); ISteamHTTP *pHTTP;
if (pHTTP == NULL) SteamWorksHTTPRequest *pRequest = GetRequestPointer(pHTTP, pContext, params[1]);
if (pRequest == NULL)
{ {
return 0; 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; char *pName, *pValue;
pContext->LocalToString(params[2], &pName); pContext->LocalToString(params[2], &pName);
pContext->LocalToString(params[3], &pValue); 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) static cell_t sm_SetHTTPRequestGetOrPostParameter(IPluginContext *pContext, const cell_t *params)
{ {
ISteamHTTP *pHTTP = GetHTTPPointer(); ISteamHTTP *pHTTP;
if (pHTTP == NULL) SteamWorksHTTPRequest *pRequest = GetRequestPointer(pHTTP, pContext, params[1]);
if (pRequest == NULL)
{ {
return 0; 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; char *pName, *pValue;
pContext->LocalToString(params[2], &pName); pContext->LocalToString(params[2], &pName);
pContext->LocalToString(params[3], &pValue); 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) static cell_t sm_SetCallbacks(IPluginContext *pContext, const cell_t *params)
{ {
ISteamHTTP *pHTTP = GetHTTPPointer(); ISteamHTTP *pHTTP;
if (pHTTP == NULL) SteamWorksHTTPRequest *pRequest = GetRequestPointer(pHTTP, pContext, params[1]);
if (pRequest == NULL)
{ {
return 0; 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; IPlugin *pPlugin;
if (params[5] == BAD_HANDLE) if (params[5] == BAD_HANDLE)
{ {
pPlugin = plsys->FindPluginByContext(pContext->GetContext()); pPlugin = plsys->FindPluginByContext(pContext->GetContext());
} else { } else {
HandleError err;
pPlugin = plsys->PluginFromHandle(params[5], &err); pPlugin = plsys->PluginFromHandle(params[5], &err);
if (!pPlugin) 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) static cell_t sm_SendHTTPRequest(IPluginContext *pContext, const cell_t *params)
{ {
ISteamHTTP *pHTTP = GetHTTPPointer(); ISteamHTTP *pHTTP;
if (pHTTP == NULL) SteamWorksHTTPRequest *pRequest = GetRequestPointer(pHTTP, pContext, params[1]);
if (pRequest == NULL)
{ {
return 0; 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; SteamAPICall_t hCall;
cell_t result = pHTTP->SendHTTPRequest(pRequest->request, &hCall) ? 1 : 0; 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) static cell_t sm_DeferHTTPRequest(IPluginContext *pContext, const cell_t *params)
{ {
ISteamHTTP *pHTTP = GetHTTPPointer(); ISteamHTTP *pHTTP;
if (pHTTP == NULL) SteamWorksHTTPRequest *pRequest = GetRequestPointer(pHTTP, pContext, params[1]);
if (pRequest == NULL)
{ {
return 0; 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; return pHTTP->DeferHTTPRequest(pRequest->request) ? 1 : 0;
} }
static cell_t sm_PrioritizeHTTPRequest(IPluginContext *pContext, const cell_t *params) static cell_t sm_PrioritizeHTTPRequest(IPluginContext *pContext, const cell_t *params)
{ {
ISteamHTTP *pHTTP = GetHTTPPointer(); ISteamHTTP *pHTTP;
if (pHTTP == NULL) SteamWorksHTTPRequest *pRequest = GetRequestPointer(pHTTP, pContext, params[1]);
if (pRequest == NULL)
{ {
return 0; 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; return pHTTP->PrioritizeHTTPRequest(pRequest->request) ? 1 : 0;
} }
static cell_t sm_GetHTTPResponseHeaderSize(IPluginContext *pContext, const cell_t *params) static cell_t sm_GetHTTPResponseHeaderSize(IPluginContext *pContext, const cell_t *params)
{ {
ISteamHTTP *pHTTP = GetHTTPPointer(); ISteamHTTP *pHTTP;
if (pHTTP == NULL) SteamWorksHTTPRequest *pRequest = GetRequestPointer(pHTTP, pContext, params[1]);
if (pRequest == NULL)
{ {
return 0; 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; char *pName;
pContext->LocalToString(params[2], &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) static cell_t sm_GetHTTPResponseHeaderValue(IPluginContext *pContext, const cell_t *params)
{ {
ISteamHTTP *pHTTP = GetHTTPPointer(); ISteamHTTP *pHTTP;
if (pHTTP == NULL) SteamWorksHTTPRequest *pRequest = GetRequestPointer(pHTTP, pContext, params[1]);
if (pRequest == NULL)
{ {
return 0; 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; char *pName;
pContext->LocalToString(params[2], &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) static cell_t sm_GetHTTPResponseBodySize(IPluginContext *pContext, const cell_t *params)
{ {
ISteamHTTP *pHTTP = GetHTTPPointer(); ISteamHTTP *pHTTP;
if (pHTTP == NULL) SteamWorksHTTPRequest *pRequest = GetRequestPointer(pHTTP, pContext, params[1]);
if (pRequest == NULL)
{ {
return 0; 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; cell_t *pSize;
pContext->LocalToPhysAddr(params[2], &pSize); pContext->LocalToPhysAddr(params[2], &pSize);
return pHTTP->GetHTTPResponseBodySize(pRequest->request, reinterpret_cast<uint32_t *>(pSize)) ? 1 : 0; 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) static cell_t sm_GetHTTPResponseBodyData(IPluginContext *pContext, const cell_t *params)
{ {
ISteamHTTP *pHTTP = GetHTTPPointer(); ISteamHTTP *pHTTP;
if (pHTTP == NULL) SteamWorksHTTPRequest *pRequest = GetRequestPointer(pHTTP, pContext, params[1]);
if (pRequest == NULL)
{ {
return 0; 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; char *pBuffer;
pContext->LocalToString(params[2], &pBuffer); pContext->LocalToString(params[2], &pBuffer);
return pHTTP->GetHTTPResponseBodyData(pRequest->request, reinterpret_cast<uint8_t *>(pBuffer), params[3]) ? 1 : 0; 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) static cell_t sm_GetHTTPDownloadProgressPct(IPluginContext *pContext, const cell_t *params)
{ {
ISteamHTTP *pHTTP = GetHTTPPointer(); ISteamHTTP *pHTTP;
if (pHTTP == NULL) SteamWorksHTTPRequest *pRequest = GetRequestPointer(pHTTP, pContext, params[1]);
if (pRequest == NULL)
{ {
return 0; 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; float percent;
cell_t result = pHTTP->GetHTTPDownloadProgressPct(pRequest->request, &percent) ? 1 : 0; 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) static cell_t sm_SetHTTPRequestRawPostBody(IPluginContext *pContext, const cell_t *params)
{ {
ISteamHTTP *pHTTP = GetHTTPPointer(); ISteamHTTP *pHTTP;
if (pHTTP == NULL) SteamWorksHTTPRequest *pRequest = GetRequestPointer(pHTTP, pContext, params[1]);
if (pRequest == NULL)
{ {
return 0; 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; char *pName, *pBuffer;
pContext->LocalToString(params[2], &pName); pContext->LocalToString(params[2], &pName);
pContext->LocalToString(params[3], &pBuffer); 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) static cell_t sm_GetHTTPResponseBodyCallback(IPluginContext *pContext, const cell_t *params)
{ {
ISteamHTTP *pHTTP = GetHTTPPointer(); ISteamHTTP *pHTTP;
if (pHTTP == NULL) SteamWorksHTTPRequest *pRequest = GetRequestPointer(pHTTP, pContext, params[1]);
if (pRequest == NULL)
{ {
return 0; 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; IPlugin *pPlugin;
if (params[4] == BAD_HANDLE) if (params[4] == BAD_HANDLE)
{ {
pPlugin = plsys->FindPluginByContext(pContext->GetContext()); pPlugin = plsys->FindPluginByContext(pContext->GetContext());
} else { } else {
HandleError err;
pPlugin = plsys->PluginFromHandle(params[4], &err); pPlugin = plsys->PluginFromHandle(params[4], &err);
if (!pPlugin) 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) static cell_t sm_WriteHTTPResponseBodyToFile(IPluginContext *pContext, const cell_t *params)
{ {
ISteamHTTP *pHTTP = GetHTTPPointer(); ISteamHTTP *pHTTP;
if (pHTTP == NULL) SteamWorksHTTPRequest *pRequest = GetRequestPointer(pHTTP, pContext, params[1]);
if (pRequest == NULL)
{ {
return 0; 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; uint32_t size;
if (pHTTP->GetHTTPResponseBodySize(pRequest->request, &size) == false) if (pHTTP->GetHTTPResponseBodySize(pRequest->request, &size) == false)
{ {