UNPKG

openfl

Version:

A fast, productive library for 2D cross-platform development.

322 lines (304 loc) 12.9 kB
// Class: openfl.net.FileReference 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 StringTools() {return require("./../../StringTools");} function openfl_events_Event() {return require("./../../openfl/events/Event");} function haxe_io_Path() {return require("./../../haxe/io/Path");} function openfl_net_URLLoader() {return require("./../../openfl/net/URLLoader");} function lime_ui_FileDialog() {return require("./../../lime/ui/FileDialog");} function lime_ui_FileDialogType() {return require("./../../lime/ui/FileDialogType");} function openfl_utils__$ByteArray_ByteArray_$Impl_$() {return require("./../../openfl/utils/_ByteArray/ByteArray_Impl_");} function openfl_events_IOErrorEvent() {return require("./../../openfl/events/IOErrorEvent");} function openfl_utils_ByteArrayData() {return require("./../../openfl/utils/ByteArrayData");} function Std() {return require("./../../Std");} function Type() {return require("./../../Type");} function ValueType() {return require("./../../ValueType");} function Reflect() {return require("./../../Reflect");} function openfl_net_URLRequestHeader() {return require("./../../openfl/net/URLRequestHeader");} function haxe_Timer() {return require("./../../haxe/Timer");} function openfl_events_DataEvent() {return require("./../../openfl/events/DataEvent");} // Constructor var FileReference = function() { this.__pendingDownload = false; (openfl_events_EventDispatcher().default).call(this); this.__inputControl = window.document.createElement("input"); this.__inputControl.setAttribute("type","file"); this.__inputControl.onclick = function(e) { e.cancelBubble = true; e.stopPropagation(); }; } // Meta FileReference.__name__ = "openfl.net.FileReference"; FileReference.__isInterface__ = false; FileReference.__super__ = (openfl_events_EventDispatcher().default); FileReference.prototype = $extend((openfl_events_EventDispatcher().default).prototype, { browse: function(typeFilter) { var _gthis = this; this.__data = null; this.__path = null; var filter = null; if(typeFilter != null) { var filters = []; var _g = 0; while(_g < typeFilter.length) { var type = typeFilter[_g]; ++_g; filters.push((StringTools().default).replace((StringTools().default).replace(type.extension,"*.","."),";",",")); } filter = filters.join(","); } if(filter != null) { this.__inputControl.setAttribute("accept",filter); } else { this.__inputControl.removeAttribute("accept"); } this.__inputControl.onchange = function() { if(_gthis.__inputControl.files.length == 0) { _gthis.dispatchEvent(new (openfl_events_Event().default)("cancel")); return; } var file = _gthis.__inputControl.files[0]; var tmp = new Date(file.lastModified); _gthis.modificationDate = tmp; _gthis.creationDate = _gthis.get_modificationDate(); _gthis.size = file.size; var tmp1 = (haxe_io_Path().default).extension(file.name); _gthis.type = "." + tmp1; _gthis.name = (haxe_io_Path().default).withoutDirectory(file.name); _gthis.__path = file.name; _gthis.dispatchEvent(new (openfl_events_Event().default)("select")); }; this.__inputControl.click(); return true; }, cancel: function() { if(this.__urlLoader != null) { this.__urlLoader.close(); } }, download: function(request,defaultFileName) { this.__data = null; this.__path = null; this.__urlLoader = new (openfl_net_URLLoader().default)(); this.__urlLoader.dataFormat = "binary"; this.__urlLoader.addEventListener("open",$bind(this,this.urlLoader_onOpen)); this.__urlLoader.addEventListener("complete",$bind(this,this.urlLoader_download_onComplete)); this.__urlLoader.addEventListener("ioError",$bind(this,this.urlLoader_onIOError)); this.__urlLoader.addEventListener("progress",$bind(this,this.urlLoader_onProgress)); this.__urlLoader.load(request); var saveFileDialog = new (lime_ui_FileDialog().default)(); saveFileDialog.onCancel.add($bind(this,this.saveFileDialog_onCancel)); saveFileDialog.onSelect.add($bind(this,this.saveFileDialog_onSelect)); saveFileDialog.browse((lime_ui_FileDialogType().default).SAVE,defaultFileName != null ? (haxe_io_Path().default).extension(defaultFileName) : null,defaultFileName); this.__pendingDownload = true; this.__pendingDefaultFileName = defaultFileName; }, load: function() { var _gthis = this; var file = this.__inputControl.files[0]; var reader = new FileReader(); reader.onload = function(evt) { _gthis.data = (openfl_utils__$ByteArray_ByteArray_$Impl_$().default).fromArrayBuffer(evt.target.result); _gthis.openFileDialog_onComplete(); }; reader.onerror = function(evt1) { _gthis.dispatchEvent(new (openfl_events_IOErrorEvent().default)("ioError")); }; reader.readAsArrayBuffer(file); }, save: function(data,defaultFileName) { this.__data = null; this.__path = null; if(data == null) { return; } if(((data) instanceof (openfl_utils_ByteArrayData().default))) { this.__data = data; } else { var this1 = new (openfl_utils_ByteArrayData().default)(0); this.__data = this1; this.__data.writeUTFBytes((Std().default).string(data)); } var saveFileDialog = new (lime_ui_FileDialog().default)(); saveFileDialog.onCancel.add($bind(this,this.saveFileDialog_onCancel)); saveFileDialog.onSave.add($bind(this,this.saveFileDialog_onSave)); saveFileDialog.save((openfl_utils__$ByteArray_ByteArray_$Impl_$().default).toBytes(this.__data),defaultFileName != null ? (haxe_io_Path().default).extension(defaultFileName) : null,defaultFileName); }, upload: function(request,uploadDataFieldName,testUpload) { if(testUpload == null) { testUpload = false; } if(uploadDataFieldName == null) { uploadDataFieldName = "Filedata"; } var _gthis = this; var file = this.__inputControl.files[0]; var reader = new FileReader(); reader.onload = function(evt) { var fileBytes = (openfl_utils__$ByteArray_ByteArray_$Impl_$().default).fromArrayBuffer(evt.target.result); _gthis.__uploadFileBytes(request,uploadDataFieldName,fileBytes); }; reader.onerror = function(evt1) { _gthis.dispatchEvent(new (openfl_events_IOErrorEvent().default)("ioError")); }; }, __uploadFileBytes: function(request,uploadDataFieldName,fileBytes) { var hasUrlVars = (Type().default).typeof(request.data) == (ValueType().default).TObject; if(hasUrlVars && request.method == "GET") { var getVariables = ""; var fields = (Reflect().default).fields(request.data); var startsWith = request.url.lastIndexOf("?") == -1 ? "?" : "&"; var _g = 0; while(_g < fields.length) { var field = fields[_g]; ++_g; var value = (Reflect().default).field(request.data,field); getVariables += getVariables.length == 0 ? startsWith : "&"; getVariables += field + "=" + value; } request.url += getVariables; } var boundary = "----------KM7GI3GI3ae0GI3ae0cH2KM7Ef1cH2"; var this1 = new (openfl_utils_ByteArrayData().default)(0); var requestData = this1; if(hasUrlVars && request.method == "POST") { var fields1 = (Reflect().default).fields(request.data); var _g1 = 0; while(_g1 < fields1.length) { var field1 = fields1[_g1]; ++_g1; var value1 = (Reflect().default).field(request.data,field1); requestData.writeUTFBytes("--" + boundary + "\r\n"); requestData.writeUTFBytes("Content-Disposition: form-data; name=\"" + field1 + "\"\r\n\r\n"); requestData.writeUTFBytes((Std().default).string(value1)); requestData.writeUTFBytes("\r\n"); } } requestData.writeUTFBytes("--" + boundary + "\r\n"); requestData.writeUTFBytes("Content-Disposition: form-data; name=\"Filename\"\r\n\r\n"); requestData.writeUTFBytes(this.get_name()); requestData.writeUTFBytes("\r\n"); requestData.writeUTFBytes("--" + boundary + "\r\n"); requestData.writeUTFBytes("Content-Disposition: form-data; name=\"" + uploadDataFieldName + "\"; "); requestData.writeUTFBytes("filename=\"" + this.get_name() + "\"\r\n"); requestData.writeUTFBytes("Content-Type: application/octet-stream\r\n\r\n"); requestData.writeBytes(fileBytes,0,0); requestData.writeUTFBytes("\r\n"); requestData.writeUTFBytes("--" + boundary + "\r\n"); requestData.writeUTFBytes("Content-Disposition: form-data; name=\"Upload\"\r\n\r\n"); requestData.writeUTFBytes("Submit Query"); requestData.writeUTFBytes("\r\n"); requestData.writeUTFBytes("--" + boundary + "--\r\n"); request.data = requestData; request.method = "POST"; request.contentType = "multipart/form-data; boundary=" + boundary; request.requestHeaders = [new (openfl_net_URLRequestHeader().default)("Accept","text/*"),new (openfl_net_URLRequestHeader().default)("Cache-Control","no-cache")]; var urlLoader = new (openfl_net_URLLoader().default)(); urlLoader.dataFormat = "binary"; urlLoader.addEventListener("open",$bind(this,this.urlLoader_onOpen)); urlLoader.addEventListener("complete",$bind(this,this.urlLoader_upload_onComplete)); urlLoader.addEventListener("httpResponseStatus",$bind(this,this.urlLoader_upload_onHttpResponseStatus)); urlLoader.addEventListener("httpStatus",$bind(this,this.urlLoader_upload_onHttpStatus)); urlLoader.addEventListener("progress",$bind(this,this.urlLoader_onProgress)); urlLoader.addEventListener("ioError",$bind(this,this.urlLoader_onIOError)); urlLoader.load(request); }, openFileDialog_onCancel: function() { this.dispatchEvent(new (openfl_events_Event().default)("cancel")); }, openFileDialog_onComplete: function() { this.dispatchEvent(new (openfl_events_Event().default)("complete")); }, openFileDialog_onSelect: function(path) { this.name = (haxe_io_Path().default).withoutDirectory(path); this.__path = path; this.dispatchEvent(new (openfl_events_Event().default)("select")); }, saveFileDialog_onCancel: function() { this.dispatchEvent(new (openfl_events_Event().default)("cancel")); }, saveFileDialog_onSave: function(path) { var _gthis = this; (haxe_Timer().default).delay(function() { _gthis.dispatchEvent(new (openfl_events_Event().default)("complete")); },1); }, saveFileDialog_onSelect: function(path) { this.dispatchEvent(new (openfl_events_Event().default)("select")); }, urlLoader_download_onComplete: function(event) { if(((this.__urlLoader.data) instanceof (openfl_utils_ByteArrayData().default))) { this.__data = this.__urlLoader.data; } else { var this1 = new (openfl_utils_ByteArrayData().default)(0); this.__data = this1; this.__data.writeUTFBytes((Std().default).string(this.__urlLoader.data)); } if(this.__pendingDownload) { var saveFileDialog = new (lime_ui_FileDialog().default)(); saveFileDialog.save((openfl_utils__$ByteArray_ByteArray_$Impl_$().default).toBytes(this.__data),this.__pendingDefaultFileName != null ? (haxe_io_Path().default).extension(this.__pendingDefaultFileName) : null,this.__pendingDefaultFileName); this.__pendingDownload = false; this.__pendingDefaultFileName = null; } this.dispatchEvent(event); }, urlLoader_upload_onHttpResponseStatus: function(event) { this.dispatchEvent(event); }, urlLoader_upload_onHttpStatus: function(event) { if(event.status == 200) { this.dispatchEvent(new (openfl_events_Event().default)("complete")); } else if(event.status != 0) { this.dispatchEvent(event); } }, urlLoader_upload_onComplete: function(event) { var urlLoader = event.currentTarget; this.dispatchEvent(new (openfl_events_DataEvent().default)("uploadCompleteData",false,false,urlLoader.data)); }, urlLoader_onIOError: function(event) { if(this.__pendingDownload) { this.__pendingDownload = false; this.__pendingDefaultFileName = null; } this.dispatchEvent(event); }, urlLoader_onProgress: function(event) { this.dispatchEvent(event); }, urlLoader_onOpen: function(event) { this.dispatchEvent(event); }, get_creationDate: function() { return this.creationDate; }, get_modificationDate: function() { return this.modificationDate; }, get_name: function() { return this.name; }, get_size: function() { return this.size; }, get_type: function() { return this.type; }, get_extension: function() { return this.extension; } }); FileReference.prototype.__class__ = FileReference.prototype.constructor = $hxClasses["openfl.net.FileReference"] = FileReference; // Init // Statics // Export exports.default = FileReference;