added builder
This commit is contained in:
@@ -6,7 +6,7 @@ class LabelView extends TextView {
|
|||||||
|
|
||||||
public function new() {
|
public function new() {
|
||||||
super();
|
super();
|
||||||
textField.autoSize = TextFieldAutoSize.CENTER;
|
textField.autoSize = TextFieldAutoSize.LEFT;
|
||||||
}
|
}
|
||||||
|
|
||||||
override public function update():Void {
|
override public function update():Void {
|
||||||
|
|||||||
@@ -7,28 +7,39 @@ import haxework.net.ILoader.Method;
|
|||||||
|
|
||||||
class BaseLoader<T> implements ILoader<T> {
|
class BaseLoader<T> implements ILoader<T> {
|
||||||
|
|
||||||
private var busy:Bool;
|
public static var urlProcessors(default, null):Array<String->String> = new Array<String->String>();
|
||||||
|
|
||||||
|
|
||||||
|
public var busy(default, null):Bool;
|
||||||
private var url:String;
|
private var url:String;
|
||||||
|
private var data:Null<Dynamic>;
|
||||||
private var callback:ICallback<T>;
|
private var callback:ICallback<T>;
|
||||||
|
|
||||||
public function new() {
|
public function new() {
|
||||||
busy = false;
|
busy = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function request(url:String, method:Method):ICallback<T> {
|
public function request(url:String, method:Method, data:Dynamic = null):ICallback<T> {
|
||||||
if (busy) throw "Busy";
|
if (busy) throw "Busy";
|
||||||
busy = true;
|
busy = true;
|
||||||
this.url = url;
|
this.url = url;
|
||||||
|
this.data = data;
|
||||||
callback = new Callback<T>();
|
callback = new Callback<T>();
|
||||||
internalRequest();
|
var url:String = this.url;
|
||||||
|
for (p in urlProcessors) url = p(url);
|
||||||
|
internalRequest(url);
|
||||||
return callback;
|
return callback;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function GET(url:String):ICallback<T> {
|
public function GET(url:String, data:Dynamic = null):ICallback<T> {
|
||||||
return request(url, Method.GET);
|
return request(url, Method.GET, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function internalRequest():Void {
|
public function POST(url:String, data:Dynamic = null):ICallback<T> {
|
||||||
|
return request(url, Method.POST, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function internalRequest(url:String):Void {
|
||||||
throw "Abstract";
|
throw "Abstract";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -52,6 +63,7 @@ class BaseLoader<T> implements ILoader<T> {
|
|||||||
|
|
||||||
private function dispose():Void {
|
private function dispose():Void {
|
||||||
url = null;
|
url = null;
|
||||||
|
data = null;
|
||||||
callback = null;
|
callback = null;
|
||||||
busy = false;
|
busy = false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ class BaseMediaLoader<T> extends BaseLoader<T> {
|
|||||||
|
|
||||||
private var loader:Loader;
|
private var loader:Loader;
|
||||||
|
|
||||||
override private function internalRequest():Void {
|
override private function internalRequest(url:String):Void {
|
||||||
loader = buildLoader();
|
loader = buildLoader();
|
||||||
loader.load(new URLRequest(url));
|
loader.load(new URLRequest(url));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,9 +17,11 @@ class BaseURLLoader<T> extends BaseLoader<T> {
|
|||||||
dataFormat = URLLoaderDataFormat.TEXT;
|
dataFormat = URLLoaderDataFormat.TEXT;
|
||||||
}
|
}
|
||||||
|
|
||||||
override private function internalRequest():Void {
|
override private function internalRequest(url:String):Void {
|
||||||
loader = buildLoader();
|
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 {
|
private function buildLoader():URLLoader {
|
||||||
|
|||||||
@@ -8,8 +8,9 @@ enum Method {
|
|||||||
}
|
}
|
||||||
|
|
||||||
interface ILoader<T> {
|
interface ILoader<T> {
|
||||||
public function request(url:String, method:Method):ICallback<T>;
|
public var busy(default, null):Bool;
|
||||||
public function GET(url:String):ICallback<T>;
|
public function request(url:String, method:Method, data:Dynamic = null):ICallback<T>;
|
||||||
|
public function GET(url:String, data:Dynamic = null):ICallback<T>;
|
||||||
|
public function POST(url:String, data:Dynamic = null):ICallback<T>;
|
||||||
public function cancel():Void;
|
public function cancel():Void;
|
||||||
}
|
}
|
||||||
|
|||||||
13
haxework/utils/Builder.hx
Executable file
13
haxework/utils/Builder.hx
Executable file
@@ -0,0 +1,13 @@
|
|||||||
|
package haxework.utils;
|
||||||
|
|
||||||
|
class Builder {
|
||||||
|
|
||||||
|
public static function build<T>(type:String, data:Array<Dynamic> = null):Null<T> {
|
||||||
|
var clazz:Class<Dynamic> = Type.resolveClass(type);
|
||||||
|
if (clazz != null) {
|
||||||
|
var recipe:Dynamic = Type.createInstance(clazz, data == null ? [] : data);
|
||||||
|
return cast recipe;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user