forked from LeenkxTeam/LNXSDK
46 lines
1.6 KiB
Haxe
46 lines
1.6 KiB
Haxe
|
package kha.network;
|
||
|
|
||
|
@:headerCode("
|
||
|
#include <kinc/network/http.h>
|
||
|
")
|
||
|
@:headerClassCode("
|
||
|
static void internalCallback(int error, int response, const char* body, void* data) {
|
||
|
int callbackindex = (int)(intptr_t)data;
|
||
|
if (error == 0) {
|
||
|
size_t length = strlen(body);
|
||
|
HX_CHAR* chars = hx::NewString(length);
|
||
|
for (int i = 0; i < length; ++i) {
|
||
|
chars[i] = body[i];
|
||
|
}
|
||
|
internalCallback2(error, response, String(chars, length), callbackindex);
|
||
|
}
|
||
|
else {
|
||
|
internalCallback2(error, response, null(), callbackindex);
|
||
|
}
|
||
|
}
|
||
|
")
|
||
|
class Http {
|
||
|
static var callbacks: Array<Int->Int->String->Void>;
|
||
|
|
||
|
@:functionCode("kinc_http_request(url, path, data, port, secure, method, header, internalCallback, (void*)callbackindex);")
|
||
|
static function request2(url: String, path: String, data: String, port: Int, secure: Bool, method: Int, header: String, callbackindex: Int): Void {}
|
||
|
|
||
|
static function internalCallback2(error: Int, response: Int, body: String, callbackindex: Int): Void {
|
||
|
callbacks[callbackindex](error, response, body);
|
||
|
}
|
||
|
|
||
|
public static function request(url: String, path: String, data: String, port: Int, secure: Bool, method: HttpMethod, headers: Map<String, String>,
|
||
|
callback: Int->Int->String->Void /*error, response, body*/): Void {
|
||
|
if (callbacks == null) {
|
||
|
callbacks = new Array<Int->Int->String->Void>();
|
||
|
}
|
||
|
var index = callbacks.length;
|
||
|
callbacks.push(callback);
|
||
|
var header = "";
|
||
|
for (key in headers.keys()) {
|
||
|
header += key + ": " + headers[key] + "\r\n";
|
||
|
}
|
||
|
request2(url, path, data, port, secure, method, header, index);
|
||
|
}
|
||
|
}
|