openfl
Version:
A fast, productive library for 2D cross-platform development.
186 lines (168 loc) • 7.6 kB
JavaScript
// Class: openfl.net.URLLoader
var $global = typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : this
$global.Object.defineProperty(exports, "__esModule", {value: true});
var __map_reserved = {};
// Imports
var $hxClasses = require("./../../hxClasses_stub").default;
var $hxEnums = require("./../../hxEnums_stub").default;
var $import = require("./../../import_stub").default;
var $bind = require("./../../bind_stub").default;
var $extend = require("./../../extend_stub").default;
function openfl_events_EventDispatcher() {return require("./../../openfl/events/EventDispatcher");}
function openfl_events_Event() {return require("./../../openfl/events/Event");}
function lime_net__$HTTPRequest_$openfl_$utils_$ByteArray() {return require("./../../lime/net/_HTTPRequest_openfl_utils_ByteArray");}
function lime_net__$HTTPRequest_$String() {return require("./../../lime/net/_HTTPRequest_String");}
function openfl_net__$URLVariables_URLVariables_$Impl_$() {return require("./../../openfl/net/_URLVariables/URLVariables_Impl_");}
function openfl_events_HTTPStatusEvent() {return require("./../../openfl/events/HTTPStatusEvent");}
function openfl_net_URLRequestHeader() {return require("./../../openfl/net/URLRequestHeader");}
function Type() {return require("./../../Type");}
function ValueType() {return require("./../../ValueType");}
function Reflect() {return require("./../../Reflect");}
function haxe_io_Bytes() {return require("./../../haxe/io/Bytes");}
function Std() {return require("./../../Std");}
function lime_net_HTTPRequestHeader() {return require("./../../lime/net/HTTPRequestHeader");}
function lime_net__$HTTPRequest_$Bytes() {return require("./../../lime/net/_HTTPRequest_Bytes");}
function openfl_events_SecurityErrorEvent() {return require("./../../openfl/events/SecurityErrorEvent");}
function openfl_events_IOErrorEvent() {return require("./../../openfl/events/IOErrorEvent");}
function openfl_events_ProgressEvent() {return require("./../../openfl/events/ProgressEvent");}
// Constructor
var URLLoader = function(request) {
(openfl_events_EventDispatcher().default).call(this);
this.bytesLoaded = 0;
this.bytesTotal = 0;
this.dataFormat = "text";
if(request != null) {
this.load(request);
}
}
// Meta
URLLoader.__name__ = "openfl.net.URLLoader";
URLLoader.__isInterface__ = false;
URLLoader.__super__ = (openfl_events_EventDispatcher().default);
URLLoader.prototype = $extend((openfl_events_EventDispatcher().default).prototype, {
close: function() {
if(this.__httpRequest != null) {
this.__httpRequest.cancel();
}
},
load: function(request) {
var _gthis = this;
var openEvent = new (openfl_events_Event().default)("open");
this.dispatchEvent(openEvent);
if(this.dataFormat == "binary") {
var httpRequest = new (lime_net__$HTTPRequest_$openfl_$utils_$ByteArray().default)();
this.__prepareRequest(httpRequest,request);
httpRequest.load().onProgress($bind(this,this.httpRequest_onProgress)).onError($bind(this,this.httpRequest_onError)).onComplete(function(data) {
_gthis.__dispatchResponseStatus();
_gthis.__dispatchStatus();
_gthis.data = data;
var event = new (openfl_events_Event().default)("complete");
_gthis.dispatchEvent(event);
});
} else {
var httpRequest1 = new (lime_net__$HTTPRequest_$String().default)();
this.__prepareRequest(httpRequest1,request);
httpRequest1.load().onProgress($bind(this,this.httpRequest_onProgress)).onError($bind(this,this.httpRequest_onError)).onComplete(function(data1) {
_gthis.__dispatchResponseStatus();
_gthis.__dispatchStatus();
if(_gthis.dataFormat == "variables") {
_gthis.data = (openfl_net__$URLVariables_URLVariables_$Impl_$().default)._new(data1);
} else {
_gthis.data = data1;
}
var event1 = new (openfl_events_Event().default)("complete");
_gthis.dispatchEvent(event1);
});
}
},
__dispatchResponseStatus: function() {
var responseStatusEvent = new (openfl_events_HTTPStatusEvent().default)("httpResponseStatus",false,false,this.__httpRequest.responseStatus);
responseStatusEvent.responseURL = this.__httpRequest.uri;
var headers = [];
if(this.__httpRequest.enableResponseHeaders && this.__httpRequest.responseHeaders != null) {
var _g = 0;
var _g1 = this.__httpRequest.responseHeaders;
while(_g < _g1.length) {
var header = _g1[_g];
++_g;
headers.push(new (openfl_net_URLRequestHeader().default)(header.name,header.value));
}
}
responseStatusEvent.responseHeaders = headers;
this.dispatchEvent(responseStatusEvent);
},
__dispatchStatus: function() {
var statusEvent = new (openfl_events_HTTPStatusEvent().default)("httpStatus",false,false,this.__httpRequest.responseStatus);
this.dispatchEvent(statusEvent);
},
__prepareRequest: function(httpRequest,request) {
this.__httpRequest = httpRequest;
this.__httpRequest.uri = request.url;
this.__httpRequest.method = request.method;
if(request.data != null) {
if((Type().default).typeof(request.data) == (ValueType().default).TObject) {
var fields = (Reflect().default).fields(request.data);
var _g = 0;
while(_g < fields.length) {
var field = fields[_g];
++_g;
this.__httpRequest.formData.set(field,(Reflect().default).field(request.data,field));
}
} else if(((request.data) instanceof (haxe_io_Bytes().default))) {
this.__httpRequest.data = request.data;
} else {
this.__httpRequest.data = (haxe_io_Bytes().default).ofString((Std().default).string(request.data));
}
}
this.__httpRequest.contentType = request.contentType;
if(request.requestHeaders != null) {
var _g1 = 0;
var _g11 = request.requestHeaders;
while(_g1 < _g11.length) {
var header = _g11[_g1];
++_g1;
this.__httpRequest.headers.push(new (lime_net_HTTPRequestHeader().default)(header.name,header.value));
}
}
this.__httpRequest.followRedirects = request.followRedirects;
this.__httpRequest.timeout = (Std().default).int(request.idleTimeout);
this.__httpRequest.withCredentials = request.withCredentials;
var userAgent = request.userAgent;
if(userAgent == null) {
userAgent = "Mozilla/5.0 (Windows; U; en) AppleWebKit/420+ (KHTML, like Gecko) OpenFL/1.0";
}
this.__httpRequest.userAgent = request.userAgent;
this.__httpRequest.enableResponseHeaders = true;
},
httpRequest_onError: function(error) {
this.__dispatchResponseStatus();
this.__dispatchStatus();
if(((this.__httpRequest) instanceof (lime_net__$HTTPRequest_$Bytes().default))) {
var bytesRequest = this.__httpRequest;
this.data = bytesRequest.responseData;
} else if(((this.__httpRequest) instanceof (lime_net__$HTTPRequest_$String().default))) {
var stringRequest = this.__httpRequest;
this.data = stringRequest.responseData;
}
if(error == 403) {
var event = new (openfl_events_SecurityErrorEvent().default)("securityError");
event.text = (Std().default).string(error);
this.dispatchEvent(event);
} else {
var event1 = new (openfl_events_IOErrorEvent().default)("ioError");
event1.text = (Std().default).string(error);
this.dispatchEvent(event1);
}
},
httpRequest_onProgress: function(bytesLoaded,bytesTotal) {
var event = new (openfl_events_ProgressEvent().default)("progress");
event.bytesLoaded = bytesLoaded;
event.bytesTotal = bytesTotal;
this.dispatchEvent(event);
}
});
URLLoader.prototype.__class__ = URLLoader.prototype.constructor = $hxClasses["openfl.net.URLLoader"] = URLLoader;
// Init
// Statics
// Export
exports.default = URLLoader;