supported DELETE method

This commit is contained in:
2014-01-08 11:42:34 +04:00
parent c031eb6896
commit 3b4953364e
9 changed files with 39 additions and 22 deletions

View File

@@ -7,6 +7,7 @@ class LabelView extends TextView {
public function new() {
super();
textField.selectable = false;
textField.wordWrap = false;
textField.autoSize = TextFieldAutoSize.LEFT;
}

View File

@@ -1,5 +1,6 @@
package haxework.gui;
import flash.display.Graphics;
import flash.display.Sprite;
class SpriteView extends View<Sprite> {
@@ -7,4 +8,12 @@ class SpriteView extends View<Sprite> {
public function new() {
super(new Sprite());
}
/*override public function update():Void {
super.update();
var g:Graphics = content.graphics;
g.lineStyle(1, 0x00ff00);
g.drawRect(0, 0, width, height);
g.lineStyle();
}*/
}

View File

@@ -20,6 +20,8 @@ class TextView extends SpriteView implements ITextView<Sprite, TextField> {
public function new() {
super();
textField = new TextField();
textField.width = 1;
textField.height = 1;
textField.wordWrap = true;
textFormat = textField.defaultTextFormat;
textFormat.font = "Arial";

View File

@@ -58,8 +58,8 @@ class View<C:Content> implements IView<C> {
this.content = content;
x = 0;
y = 0;
width = 100;
height = 100;
width = 1;
height = 1;
margins = 0;
vAlign = VAlign.NONE;
hAlign = HAlign.NONE;
@@ -83,12 +83,12 @@ class View<C:Content> implements IView<C> {
public function update():Void {
content.x = x;
content.y = y;
var skin:ISkin<C, IView<C>> = currentSkin();
if (contentSize && skin != null && Std.is(skin, ISize)) {
var size:ISize = cast(skin, ISize);
if (!Math.isNaN(size.width)) width = size.width;
if (!Math.isNaN(size.height)) height = size.height;
}
var skin:ISkin<C, IView<C>> = currentSkin();
if (skin != null) skin.draw(this);
}

View File

@@ -1,5 +1,6 @@
package haxework.net;
import flash.net.URLRequestMethod;
import flash.events.ProgressEvent;
import haxework.net.manage.ILoaderManager;
import haxework.provider.Provider;
@@ -7,7 +8,6 @@ import flash.utils.ByteArray;
import haxework.net.callback.Callback;
import haxework.net.callback.ICallback;
import flash.events.Event;
import haxework.net.ILoader.Method;
class BaseLoader<T> implements ILoader<T> {
@@ -22,7 +22,7 @@ class BaseLoader<T> implements ILoader<T> {
public var completed(default, null):Float;
private var url:String;
private var method:Method;
private var method:String;
private var data:Null<Dynamic>;
private var callback:ICallback<T>;
@@ -31,7 +31,7 @@ class BaseLoader<T> implements ILoader<T> {
completed = Math.NaN;
}
public function request(url:String, method:Method, data:Dynamic = null):ICallback<T> {
public function request(url:String, method:String, data:Dynamic = null):ICallback<T> {
if (busy) throw "Busy";
busy = true;
this.url = url;
@@ -54,11 +54,15 @@ class BaseLoader<T> implements ILoader<T> {
}
public function GET(url:String, data:Dynamic = null):ICallback<T> {
return request(url, Method.GET, data);
return request(url, URLRequestMethod.GET, data);
}
public function POST(url:String, data:Dynamic = null):ICallback<T> {
return request(url, Method.POST, data);
return request(url, URLRequestMethod.POST, data);
}
public function DELETE(url:String, data:Dynamic = null):ICallback<T> {
return request(url, URLRequestMethod.DELETE, data);
}
private function internalRequest(url:String):Void {
@@ -108,7 +112,7 @@ class BaseLoader<T> implements ILoader<T> {
public function run():Void {
var u:String = url;
if (data != null && method == Method.GET) {
if (data != null && method == URLRequestMethod.GET) {
var a:Array<String> = [];
for (key in Reflect.fields(data)) {
a.push(key + "=" + Reflect.field(data, key));

View File

@@ -1,9 +1,10 @@
package haxework.net;
import flash.net.URLRequestHeader;
import flash.net.URLRequestMethod;
import haxework.net.callback.ICallback;
import flash.net.URLVariables;
import flash.events.ProgressEvent;
import haxework.net.ILoader.Method;
import flash.net.URLLoaderDataFormat;
import flash.events.SecurityErrorEvent;
import flash.events.IOErrorEvent;
@@ -24,8 +25,13 @@ class BaseURLLoader<T> extends BaseLoader<T> {
override private function internalRequest(url:String):Void {
loader = buildLoader();
var request:URLRequest = new URLRequest(url);
request.method = Std.string(method);
if (data != null && method == Method.POST) {
if (method != URLRequestMethod.POST && method != URLRequestMethod.GET) {
request.method = URLRequestMethod.POST;
request.requestHeaders.push(new URLRequestHeader("X-HTTP-Method-Override", method));
} else {
request.method = method;
}
if (data != null && method == URLRequestMethod.POST) {
var variables:URLVariables = new URLVariables();
for (key in Reflect.fields(data)) {
Reflect.setField(variables, key, Reflect.field(data, key));

View File

@@ -2,7 +2,6 @@ package haxework.net;
import haxework.net.callback.Callback;
import haxework.net.callback.ICallback;
import haxework.net.ILoader.Method;
import flash.events.Event;
import flash.net.URLLoader;

View File

@@ -3,19 +3,15 @@ package haxework.net;
import flash.utils.ByteArray;
import haxework.net.callback.ICallback;
enum Method {
GET;
POST;
}
interface ILoader<T> {
public var busy(default, null):Bool;
public var completed(default, null):Float;
public function request(url:String, method:Method, data:Dynamic = null):ICallback<T>;
public function request(url:String, method:String, data:Dynamic = null):ICallback<T>;
public function fromBytes(data:ByteArray):ICallback<T>;
public function GET(url:String, data:Dynamic = null):ICallback<T>;
public function POST(url:String, data:Dynamic = null):ICallback<T>;
public function DELETE(url:String, data:Dynamic = null):ICallback<T>;
public function cancel():Void;
public function run():Void;

View File

@@ -9,15 +9,15 @@ class Provider {
private static var instances:ObjectMap<Dynamic, Dynamic> = new ObjectMap<Dynamic, Dynamic>();
public static function setFactory<T>(i:Class<T>, clazz:Class<T>, ?type:Dynamic):Void {
factories.set(type == null ? i : type, clazz);
factories.set(type == null ? i : i + type, clazz);
}
public static function set<T>(i:Class<T>, instance:T, ?type:Dynamic):Void {
instances.set(type == null ? i : type, instance);
instances.set(type == null ? i : i + type, instance);
}
public static function get<T>(i:Class<T>, ?type:Dynamic):T {
var key:Dynamic = (type == null) ? i : type;
var key:Dynamic = (type == null) ? i : i + type;
if (instances.exists(key)) {
return instances.get(key);
} else if (factories.exists(key)) {