Expose ISteamHTTP Streaming API to Pawn.
This commit is contained in:
+47
-11
@@ -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}
|
||||
};
|
||||
|
||||
|
||||
@@ -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");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user