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