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 { 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(); } }