39 lines
1.0 KiB
Haxe
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();
|
|
}
|
|
}
|