commit x64 compilation from lulu cause the other branch dont seems to compile properly at home
This commit is contained in:
169
include/modules/script_squirrel/legacy/http_binding.cpp
Normal file
169
include/modules/script_squirrel/legacy/http_binding.cpp
Normal file
@ -0,0 +1,169 @@
|
||||
/* -----------------------------------------------------------------------------
|
||||
GSFramework
|
||||
Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
|
||||
----------------------------------------------------------------------------- */
|
||||
|
||||
|
||||
#include "binding_helpers.h"
|
||||
#include "http_curl/http_curl.h"
|
||||
#include "script_squirrel/legacy/squirrel_binding.h"
|
||||
#include "script/script_variant.h"
|
||||
|
||||
using namespace GS;
|
||||
using namespace GS::Script;
|
||||
|
||||
|
||||
#if __PLATFORM_EMSCRIPTEN__
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
SQInteger HttpPost(HSQUIRRELVM vm)
|
||||
{
|
||||
__SQ_RETURN
|
||||
}
|
||||
SQInteger HttpUpdate(HSQUIRRELVM vm)
|
||||
{
|
||||
__SQ_RETURN
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
#else
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
class SquirrelHTTP : public HTTP::Curl
|
||||
{
|
||||
HSQUIRRELVM vm;
|
||||
|
||||
public:
|
||||
|
||||
void OnRequestComplete(int ticket_id, const Array <char> &data)
|
||||
{
|
||||
SquirrelVM *sq_vm = GetVMObject(vm);
|
||||
|
||||
if (sq_vm->SetupFunctionCall("OnHttpRequestComplete"))
|
||||
{
|
||||
sq_vm->PushArgument(ticket_id);
|
||||
|
||||
if (data.GetSize() > 0)
|
||||
{
|
||||
String str(data.c_ptr(), data.GetCount());
|
||||
sq_vm->PushArgument(str.c_str());
|
||||
}
|
||||
else
|
||||
sq_vm->PushNullArgument();
|
||||
|
||||
sq_vm->DoFunctionCall();
|
||||
}
|
||||
}
|
||||
void OnRequestError(int ticket_id)
|
||||
{
|
||||
SquirrelVM *sq_vm = GetVMObject(vm);
|
||||
|
||||
if (sq_vm->SetupFunctionCall("OnHttpRequestError"))
|
||||
{
|
||||
sq_vm->PushArgument(ticket_id);
|
||||
sq_vm->DoFunctionCall();
|
||||
}
|
||||
}
|
||||
|
||||
SquirrelHTTP(HSQUIRRELVM v) : vm(v) {}
|
||||
};
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
SQInteger HttpPost(HSQUIRRELVM vm)
|
||||
{
|
||||
__SQ_GETSTART(2)
|
||||
__SQ_GETSTRING(url)
|
||||
__SQ_GETSTRING(post)
|
||||
SquirrelVM *sq_vm = GetVMObject(vm);
|
||||
int id = sq_vm->http->Post(url, post);
|
||||
__SQ_GETEND
|
||||
__SQ_RETURNINT(id)
|
||||
}
|
||||
SQInteger HttpUpdate(HSQUIRRELVM vm)
|
||||
{
|
||||
SquirrelVM *sq_vm = GetVMObject(vm);
|
||||
sq_vm->http->Update();
|
||||
__SQ_RETURN
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
//#include <iostream.h>
|
||||
#include <winsock.h>
|
||||
SQInteger GetIp(HSQUIRRELVM vm)
|
||||
{
|
||||
String ip_adress;
|
||||
|
||||
char ac[80];
|
||||
if (gethostname(ac, sizeof(ac)) == SOCKET_ERROR) {
|
||||
__SQ_RETURNSTRING("");
|
||||
}
|
||||
struct hostent *phe = gethostbyname(ac);
|
||||
if (phe == 0) {
|
||||
__SQ_RETURNSTRING("");
|
||||
}
|
||||
|
||||
for (int i = 0; phe->h_addr_list[i] != 0; ++i) {
|
||||
struct in_addr addr;
|
||||
memcpy(&addr, phe->h_addr_list[i], sizeof(struct in_addr));
|
||||
ip_adress += String(inet_ntoa(addr)) + String(" ");
|
||||
}
|
||||
|
||||
__SQ_RETURNSTRING(ip_adress.c_str())
|
||||
}
|
||||
//*********************************************************
|
||||
|
||||
#endif
|
||||
|
||||
void RegisterHTTPBinding(HSQUIRRELVM vm)
|
||||
{
|
||||
#if __PLATFORM_EMSCRIPTEN__ == 0
|
||||
SquirrelVM *sq_vm = GetVMObject(vm);
|
||||
sq_vm->http = new SquirrelHTTP(vm);
|
||||
#endif
|
||||
|
||||
/*#
|
||||
Topic: HTTP
|
||||
Desc: Send HTTP POST request to a remote URL and receive remote response asynchronously.
|
||||
#*/
|
||||
|
||||
/*#
|
||||
Section: HTTP helper
|
||||
Desc: HTTP helper functions.
|
||||
#*/
|
||||
/*#
|
||||
Func: HttpUpdate
|
||||
Proto: void:
|
||||
Desc: Update the HTTP subsystem. You must call this function to receive queued events.
|
||||
See: HttpPost
|
||||
#*/
|
||||
sq_register(vm, HttpUpdate, "HttpUpdate", _SC("."));
|
||||
/*#
|
||||
Func: HttpPost
|
||||
Proto: int:String url, String post
|
||||
Desc: POST an HTTP request to a remote URL and returns the request identifier.<br>This function returns immediately, the request result will be sent to the global HTTP script callbacks.
|
||||
Example:
|
||||
// POST a request with two parameters to a remote server.
|
||||
local id = HttpPost("http://www.someurl.com", "param_a=1&param_b=2")
|
||||
print("HTTP request posted, id: " + id)
|
||||
|
||||
// The two global HTTP request callbacks.
|
||||
function OnHttpRequestComplete(ticket_id, data)
|
||||
{
|
||||
print("HTTP request " + ticket_id + " complete.")
|
||||
print("Data received: " + data)
|
||||
}
|
||||
function OnHttpRequestError(ticket_id)
|
||||
{
|
||||
print("HTTP request " + ticket_id + " errored.")
|
||||
}
|
||||
#*/
|
||||
sq_register(vm, HttpPost, "HttpPost", _SC(".ss"));
|
||||
|
||||
|
||||
/*#
|
||||
Func: GetIp
|
||||
Proto: string:void
|
||||
Desc: Get local ip.
|
||||
#*/
|
||||
sq_register(vm, GetIp, "GetIp", _SC("."));
|
||||
}
|
||||
Reference in New Issue
Block a user