diff --git a/haxework/net/BaseMediaLoader.hx b/haxework/net/BaseMediaLoader.hx index efd6bcc..469eddd 100755 --- a/haxework/net/BaseMediaLoader.hx +++ b/haxework/net/BaseMediaLoader.hx @@ -1,5 +1,10 @@ package haxework.net; +import haxework.net.callback.Callback; +import haxework.net.callback.ICallback; +import haxework.provider.Provider; +import haxework.storage.IStorage; +import flash.display.BitmapData; import flash.events.ProgressEvent; import flash.system.Security; import flash.system.SecurityDomain; @@ -17,6 +22,23 @@ class BaseMediaLoader extends BaseLoader { private var loader:Loader; + //ToDo: if storage use + override public function GET(url:String, data:Dynamic = null):ICallback { + var storage:IStorage = Provider.get(IStorage); + return if (storage.exists(url)) { + fromBytes(storage.read(url)); + } else { + var callback:ICallback = new Callback(); + new BytesLoader().GET(url) + .success(function(data:ByteArray):Void { + storage.write(url, data); + fromBytes(data).glue(callback); + }) + .fail(callback.callFail); + callback; + } + } + override private function internalRequest(url:String):Void { loader = buildLoader(); loader.load(new URLRequest(url), buildLoaderContext()); diff --git a/haxework/net/ImageLoader.hx b/haxework/net/ImageLoader.hx index 997ff59..fcb752e 100755 --- a/haxework/net/ImageLoader.hx +++ b/haxework/net/ImageLoader.hx @@ -1,5 +1,6 @@ package haxework.net; +import flash.utils.ByteArray; import flash.display.LoaderInfo; import flash.display.Loader; import flash.display.Bitmap; diff --git a/haxework/net/order/OrderSupplier.hx b/haxework/net/order/OrderSupplier.hx index 322b16a..ef2f461 100755 --- a/haxework/net/order/OrderSupplier.hx +++ b/haxework/net/order/OrderSupplier.hx @@ -1,8 +1,8 @@ package haxework.net.order; -import Lambda; +import haxework.storage.IStorage; +import haxework.provider.Provider; import haxework.net.callback.Callback; -import Type.ValueType; import com.abit.umix.prepare.AutoCallback; import flash.display.BitmapData; import haxework.net.callback.ICallback; diff --git a/haxework/storage/IStorage.hx b/haxework/storage/IStorage.hx index c102404..2feeec1 100755 --- a/haxework/storage/IStorage.hx +++ b/haxework/storage/IStorage.hx @@ -5,5 +5,5 @@ import flash.utils.ByteArray; interface IStorage { public function exists(key:String):Bool; public function write(key:String, value:ByteArray):Void; - public function read(ley:String):Null; + public function read(key:String):Null; } \ No newline at end of file diff --git a/haxework/storage/SharedObjectStorage.hx b/haxework/storage/SharedObjectStorage.hx index 1bcc034..b297bf8 100755 --- a/haxework/storage/SharedObjectStorage.hx +++ b/haxework/storage/SharedObjectStorage.hx @@ -1,23 +1,24 @@ package haxework.storage; +import haxe.crypto.Md5; import flash.net.SharedObject; import flash.utils.ByteArray; class SharedObjectStorage implements IStorage { public function exists(key:String):Bool { - var so:SharedObject = SharedObject.getLocal(key); + var so:SharedObject = SharedObject.getLocal("storage/" + Md5.encode(key)); return so.size > 0; } public function write(key:String, value:ByteArray):Void { - var so:SharedObject = SharedObject.getLocal(key); + var so:SharedObject = SharedObject.getLocal("storage/" + Md5.encode(key)); so.setProperty("value", value); so.flush(); } public function read(key:String):Null { - var so:SharedObject = SharedObject.getLocal(key); + var so:SharedObject = SharedObject.getLocal("storage/" + Md5.encode(key)); return so.data.value; } } \ No newline at end of file