From 71a149c2b2e6469e1609cf4f66771391eea133c7 Mon Sep 17 00:00:00 2001 From: shmyga Date: Wed, 30 Oct 2013 10:33:34 +0400 Subject: [PATCH] added builder --- haxework/gui/LabelView.hx | 2 +- haxework/net/BaseLoader.hx | 24 ++++++++++++++++++------ haxework/net/BaseMediaLoader.hx | 2 +- haxework/net/BaseURLLoader.hx | 6 ++++-- haxework/net/ILoader.hx | 7 ++++--- haxework/utils/Builder.hx | 13 +++++++++++++ 6 files changed, 41 insertions(+), 13 deletions(-) create mode 100755 haxework/utils/Builder.hx diff --git a/haxework/gui/LabelView.hx b/haxework/gui/LabelView.hx index f029185..18fec13 100755 --- a/haxework/gui/LabelView.hx +++ b/haxework/gui/LabelView.hx @@ -6,7 +6,7 @@ class LabelView extends TextView { public function new() { super(); - textField.autoSize = TextFieldAutoSize.CENTER; + textField.autoSize = TextFieldAutoSize.LEFT; } override public function update():Void { diff --git a/haxework/net/BaseLoader.hx b/haxework/net/BaseLoader.hx index 3f9a425..8bb621b 100755 --- a/haxework/net/BaseLoader.hx +++ b/haxework/net/BaseLoader.hx @@ -7,28 +7,39 @@ import haxework.net.ILoader.Method; class BaseLoader implements ILoader { - private var busy:Bool; + public static var urlProcessors(default, null):ArrayString> = new ArrayString>(); + + + public var busy(default, null):Bool; private var url:String; + private var data:Null; private var callback:ICallback; public function new() { busy = false; } - public function request(url:String, method:Method):ICallback { + public function request(url:String, method:Method, data:Dynamic = null):ICallback { if (busy) throw "Busy"; busy = true; this.url = url; + this.data = data; callback = new Callback(); - internalRequest(); + var url:String = this.url; + for (p in urlProcessors) url = p(url); + internalRequest(url); return callback; } - public function GET(url:String):ICallback { - return request(url, Method.GET); + public function GET(url:String, data:Dynamic = null):ICallback { + return request(url, Method.GET, data); } - private function internalRequest():Void { + public function POST(url:String, data:Dynamic = null):ICallback { + return request(url, Method.POST, data); + } + + private function internalRequest(url:String):Void { throw "Abstract"; } @@ -52,6 +63,7 @@ class BaseLoader implements ILoader { private function dispose():Void { url = null; + data = null; callback = null; busy = false; } diff --git a/haxework/net/BaseMediaLoader.hx b/haxework/net/BaseMediaLoader.hx index 5c8d74d..8b826bf 100755 --- a/haxework/net/BaseMediaLoader.hx +++ b/haxework/net/BaseMediaLoader.hx @@ -11,7 +11,7 @@ class BaseMediaLoader extends BaseLoader { private var loader:Loader; - override private function internalRequest():Void { + override private function internalRequest(url:String):Void { loader = buildLoader(); loader.load(new URLRequest(url)); } diff --git a/haxework/net/BaseURLLoader.hx b/haxework/net/BaseURLLoader.hx index 24dcc71..f53ceb6 100755 --- a/haxework/net/BaseURLLoader.hx +++ b/haxework/net/BaseURLLoader.hx @@ -17,9 +17,11 @@ class BaseURLLoader extends BaseLoader { dataFormat = URLLoaderDataFormat.TEXT; } - override private function internalRequest():Void { + override private function internalRequest(url:String):Void { loader = buildLoader(); - loader.load(new URLRequest(url)); + var request:URLRequest = new URLRequest(url); + if (data != null) request.data = data; + loader.load(request); } private function buildLoader():URLLoader { diff --git a/haxework/net/ILoader.hx b/haxework/net/ILoader.hx index 96ab589..4a9add4 100755 --- a/haxework/net/ILoader.hx +++ b/haxework/net/ILoader.hx @@ -8,8 +8,9 @@ enum Method { } interface ILoader { - public function request(url:String, method:Method):ICallback; - public function GET(url:String):ICallback; - + public var busy(default, null):Bool; + public function request(url:String, method:Method, data:Dynamic = null):ICallback; + public function GET(url:String, data:Dynamic = null):ICallback; + public function POST(url:String, data:Dynamic = null):ICallback; public function cancel():Void; } diff --git a/haxework/utils/Builder.hx b/haxework/utils/Builder.hx new file mode 100755 index 0000000..ed05fed --- /dev/null +++ b/haxework/utils/Builder.hx @@ -0,0 +1,13 @@ +package haxework.utils; + +class Builder { + + public static function build(type:String, data:Array = null):Null { + var clazz:Class = Type.resolveClass(type); + if (clazz != null) { + var recipe:Dynamic = Type.createInstance(clazz, data == null ? [] : data); + return cast recipe; + } + return null; + } +} \ No newline at end of file