medialoder with storage

This commit is contained in:
2013-12-31 19:23:51 +04:00
parent 0232286597
commit 3db9a3cae8
5 changed files with 30 additions and 6 deletions

View File

@@ -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<T> extends BaseLoader<T> {
private var loader:Loader;
//ToDo: if storage use
override public function GET(url:String, data:Dynamic = null):ICallback<T> {
var storage:IStorage = Provider.get(IStorage);
return if (storage.exists(url)) {
fromBytes(storage.read(url));
} else {
var callback:ICallback<T> = new Callback<T>();
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());

View File

@@ -1,5 +1,6 @@
package haxework.net;
import flash.utils.ByteArray;
import flash.display.LoaderInfo;
import flash.display.Loader;
import flash.display.Bitmap;

View File

@@ -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;

View File

@@ -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<ByteArray>;
public function read(key:String):Null<ByteArray>;
}

View File

@@ -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<ByteArray> {
var so:SharedObject = SharedObject.getLocal(key);
var so:SharedObject = SharedObject.getLocal("storage/" + Md5.encode(key));
return so.data.value;
}
}