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);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 |