Files
puzzlez/src/app/haxe/ru/m/cache/StorageCache.hx

39 lines
1.0 KiB
Haxe

package ru.m.cache;
import flash.net.SharedObject;
import haxe.crypto.Md5;
import haxe.io.Bytes;
class StorageCache {
private static var DATA_KEY:String = "data";
private var name:String;
public function new() {
name = "cache";
}
private function resolveDataObject(key:String):SharedObject {
return SharedObject.getLocal('${name}/${Md5.encode(key)}');
}
public function exists(key:String):Bool {
var dataObject = resolveDataObject(key);
return Reflect.hasField(dataObject.data, DATA_KEY);
}
public function get(key:String):Null<Bytes> {
var dataObject = resolveDataObject(key);
if (Reflect.hasField(dataObject.data, DATA_KEY)) {
return Bytes.ofHex(Reflect.field(dataObject.data, DATA_KEY));
}
return null;
}
public function set(key:String, data:Bytes):Void {
var dataObject = resolveDataObject(key);
dataObject.setProperty(DATA_KEY, data.toHex());
dataObject.flush();
}
}