41 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
| package kha.network;
 | |
| 
 | |
| import js.html.XMLHttpRequest;
 | |
| 
 | |
| class Http {
 | |
| 	static function methodToString(method: HttpMethod): String {
 | |
| 		switch (method) {
 | |
| 			case Get:
 | |
| 				return "GET";
 | |
| 			case Post:
 | |
| 				return "POST";
 | |
| 			case Put:
 | |
| 				return "PUT";
 | |
| 			case Delete:
 | |
| 				return "DELETE";
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	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 {
 | |
| 		var req = new XMLHttpRequest("");
 | |
| 		var completeUrl = (secure ? "https://" : "http://") + url + ":" + port + "/" + path;
 | |
| 		req.open(methodToString(method), completeUrl, true);
 | |
| 		if (headers != null) {
 | |
| 			for (key in headers.keys()) {
 | |
| 				req.setRequestHeader(key, headers[key]);
 | |
| 			}
 | |
| 		}
 | |
| 		req.onreadystatechange = function() {
 | |
| 			if (req.readyState != 4)
 | |
| 				return;
 | |
| 			if (req.status != 200) {
 | |
| 				callback(1, req.status, null);
 | |
| 				return;
 | |
| 			}
 | |
| 			callback(0, req.status, req.responseText);
 | |
| 		}
 | |
| 		req.send(data);
 | |
| 	}
 | |
| }
 |