Expose ISteamHTTP Streaming API to Pawn.

This commit is contained in:
Kyle Sanderson
2015-01-17 14:18:36 -08:00
parent 5825788643
commit c322e4a117
2 changed files with 51 additions and 11 deletions
+47 -11
View File
@@ -286,18 +286,8 @@ static cell_t sm_SetCallbacks(IPluginContext *pContext, const cell_t *params)
return 1;
}
static cell_t sm_SendHTTPRequest(IPluginContext *pContext, const cell_t *params)
static void SetCallbacks(SteamAPICall_t &hCall, SteamWorksHTTPRequest *pRequest)
{
ISteamHTTP *pHTTP;
SteamWorksHTTPRequest *pRequest = GetRequestPointer(pHTTP, pContext, params[1]);
if (pRequest == NULL)
{
return 0;
}
SteamAPICall_t hCall;
cell_t result = pHTTP->SendHTTPRequest(pRequest->request, &hCall) ? 1 : 0;
if (pRequest->pCompletedForward != NULL)
{
pRequest->CompletedCallResult.SetGameserverFlag();
@@ -315,7 +305,37 @@ static cell_t sm_SendHTTPRequest(IPluginContext *pContext, const cell_t *params)
pRequest->DataCallResult.SetGameserverFlag();
pRequest->DataCallResult.Set(hCall, pRequest, &SteamWorksHTTPRequest::OnHTTPDataReceived);
}
}
static cell_t sm_SendHTTPRequestAndStreamResponse(IPluginContext *pContext, const cell_t *params)
{
ISteamHTTP *pHTTP;
SteamWorksHTTPRequest *pRequest = GetRequestPointer(pHTTP, pContext, params[1]);
if (pRequest == NULL)
{
return 0;
}
SteamAPICall_t hCall;
cell_t result = pHTTP->SendHTTPRequestAndStreamResponse(pRequest->request, &hCall) ? 1 : 0;
SetCallbacks(hCall, pRequest);
return result;
}
static cell_t sm_SendHTTPRequest(IPluginContext *pContext, const cell_t *params)
{
ISteamHTTP *pHTTP;
SteamWorksHTTPRequest *pRequest = GetRequestPointer(pHTTP, pContext, params[1]);
if (pRequest == NULL)
{
return 0;
}
SteamAPICall_t hCall;
cell_t result = pHTTP->SendHTTPRequest(pRequest->request, &hCall) ? 1 : 0;
SetCallbacks(hCall, pRequest);
return result;
}
@@ -537,6 +557,20 @@ static cell_t sm_WriteHTTPResponseBodyToFile(IPluginContext *pContext, const cel
return 1;
}
static cell_t sm_GetHTTPStreamingResponseBodyData(IPluginContext *pContext, const cell_t *params)
{
ISteamHTTP *pHTTP;
SteamWorksHTTPRequest *pRequest = GetRequestPointer(pHTTP, pContext, params[1]);
if (pRequest == NULL)
{
return 0;
}
char *pBuffer;
pContext->LocalToString(params[3], &pBuffer);
return pHTTP->GetHTTPStreamingResponseBodyData(pRequest->request, params[2], reinterpret_cast<uint8_t *>(pBuffer), params[4]) ? 1 : 0;
}
static sp_nativeinfo_t httpnatives[] = {
{"SteamWorks_CreateHTTPRequest", sm_CreateHTTPRequest},
{"SteamWorks_SetHTTPRequestContextValue", sm_SetHTTPRequestContextValue},
@@ -555,6 +589,8 @@ static sp_nativeinfo_t httpnatives[] = {
{"SteamWorks_SetHTTPRequestRawPostBody", sm_SetHTTPRequestRawPostBody},
{"SteamWorks_GetHTTPResponseBodyCallback", sm_GetHTTPResponseBodyCallback},
{"SteamWorks_WriteHTTPResponseBodyToFile", sm_WriteHTTPResponseBodyToFile},
{"SteamWorks_SendHTTPRequestAndStreamResponse", sm_SendHTTPRequestAndStreamResponse},
{"SteamWorks_GetHTTPStreamingResponseBodyData", sm_GetHTTPStreamingResponseBodyData},
{NULL, NULL}
};
+4
View File
@@ -221,12 +221,14 @@ funcenum SteamWorksHTTPDataReceived
native bool:SteamWorks_SetHTTPCallbacks(Handle:hHandle, SteamWorksHTTPRequestCompleted:fCompleted = INVALID_FUNCTION, SteamWorksHTTPHeadersReceived:fHeaders = INVALID_FUNCTION, SteamWorksHTTPDataReceived:fData = INVALID_FUNCTION, Handle:hCalling = INVALID_HANDLE);
native bool:SteamWorks_SendHTTPRequest(Handle:hRequest);
native bool:SteamWorks_SendHTTPRequestAndStreamResponse(Handle:hRequest);
native bool:SteamWorks_DeferHTTPRequest(Handle:hRequest);
native bool:SteamWorks_PrioritizeHTTPRequest(Handle:hRequest);
native bool:SteamWorks_GetHTTPResponseHeaderSize(Handle:hRequest, const String:sHeader[], &size);
native bool:SteamWorks_GetHTTPResponseHeaderValue(Handle:hRequest, const String:sHeader[], String:sValue[], size);
native bool:SteamWorks_GetHTTPResponseBodySize(Handle:hRequest, &size);
native bool:SteamWorks_GetHTTPResponseBodyData(Handle:hRequest, String:sBody[], length);
native bool:SteamWorks_GetHTTPStreamingResponseBodyData(Handle:hRequest, cOffset, String:sBody[], length);
native bool:SteamWorks_GetHTTPDownloadProgressPct(Handle:hRequest, &Float:percent);
native bool:SteamWorks_SetHTTPRequestRawPostBody(Handle:hRequest, const String:sContentType[], const String:sBody[], bodylen);
@@ -296,12 +298,14 @@ public __ext_SteamWorks_SetNTVOptional()
MarkNativeAsOptional("SteamWorks_SetHTTPCallbacks");
MarkNativeAsOptional("SteamWorks_SendHTTPRequest");
MarkNativeAsOptional("SteamWorks_SendHTTPRequestAndStreamResponse");
MarkNativeAsOptional("SteamWorks_DeferHTTPRequest");
MarkNativeAsOptional("SteamWorks_PrioritizeHTTPRequest");
MarkNativeAsOptional("SteamWorks_GetHTTPResponseHeaderSize");
MarkNativeAsOptional("SteamWorks_GetHTTPResponseHeaderValue");
MarkNativeAsOptional("SteamWorks_GetHTTPResponseBodySize");
MarkNativeAsOptional("SteamWorks_GetHTTPResponseBodyData");
MarkNativeAsOptional("SteamWorks_GetHTTPStreamingResponseBodyData");
MarkNativeAsOptional("SteamWorks_GetHTTPDownloadProgressPct");
MarkNativeAsOptional("SteamWorks_SetHTTPRequestRawPostBody");