diff --git a/haxework/log/BaseLogger.hx b/haxework/log/BaseLogger.hx index 38998d7..2d9782e 100755 --- a/haxework/log/BaseLogger.hx +++ b/haxework/log/BaseLogger.hx @@ -16,7 +16,7 @@ class BaseLogger implements ILogger { return "[" + level + "] " + tag + " - " + message + (error == null ? "" : " {" + error2strign(error) + "}"); } - private function error2strign(error:Dynamic):String { + public static function error2strign(error:Dynamic):String { return if (Std.is(error, Error)) { cast(error, Error).getStackTrace(); } else if (Std.is(error, ErrorEvent)) { diff --git a/haxework/net/BaseLoader.hx b/haxework/net/BaseLoader.hx index 1fc0aaa..41c211b 100755 --- a/haxework/net/BaseLoader.hx +++ b/haxework/net/BaseLoader.hx @@ -54,6 +54,13 @@ class BaseLoader implements ILoader { } public function GET(url:String, data:Dynamic = null):ICallback { + #if openfl + if (StringTools.startsWith(url, "%assets%")) { + var path:String = url.substring(9); + var bytes:ByteArray = openfl.Assets.getBytes(path); + return fromBytes(bytes); + } + #end return request(url, URLRequestMethod.GET, data); } diff --git a/haxework/net/BaseURLLoader.hx b/haxework/net/BaseURLLoader.hx index 6e5b44f..88fa7c9 100755 --- a/haxework/net/BaseURLLoader.hx +++ b/haxework/net/BaseURLLoader.hx @@ -1,5 +1,7 @@ package haxework.net; +import haxe.Timer; +import flash.utils.ByteArray; import flash.net.URLRequestHeader; import flash.net.URLRequestMethod; import haxework.net.callback.ICallback; @@ -41,6 +43,18 @@ class BaseURLLoader extends BaseLoader { loader.load(request); } + override private function internalFromBytes(data:ByteArray):Void { + var data:T = extrudeResultFromBytes(data); + var c:ICallback = callback; + c.callSuccessAsync(data); + Timer.delay(dispose, 1); + } + + private function extrudeResultFromBytes(bytes:ByteArray):T { + throw "Abstract"; + return null; + } + private function buildLoader():URLLoader { var loader:URLLoader = new URLLoader(); loader.dataFormat = dataFormat; diff --git a/haxework/net/BytesLoader.hx b/haxework/net/BytesLoader.hx index 4cf7489..253f9ff 100755 --- a/haxework/net/BytesLoader.hx +++ b/haxework/net/BytesLoader.hx @@ -14,4 +14,8 @@ class BytesLoader extends BaseURLLoader { override private function extrudeResult(e:Event):ByteArray { return cast(cast(e.currentTarget, URLLoader).data, ByteArray); } + + override private function extrudeResultFromBytes(bytes:ByteArray):ByteArray { + return bytes; + } } diff --git a/haxework/net/JsonLoader.hx b/haxework/net/JsonLoader.hx index f320cab..a272afe 100755 --- a/haxework/net/JsonLoader.hx +++ b/haxework/net/JsonLoader.hx @@ -1,5 +1,6 @@ package haxework.net; +import flash.utils.ByteArray; import flash.errors.Error; import flash.events.Event; import flash.net.URLLoader; @@ -18,4 +19,16 @@ class JsonLoader extends BaseURLLoader { } return data; } + + override private function extrudeResultFromBytes(bytes:ByteArray):T { + var str:String = null; + var data:T = null; + try { + str = bytes.readUTFBytes(bytes.length); + data = Json.parse(str); + } catch (error:Dynamic) { + throw new Error(error + ": " + str); + } + return data; + } }