zoomla
Version:
16年专业研发|中文alexa排名第一的CMS品牌-基于dotNET core、功能强大,集成站群、微信开发、小程序与ERP及OA办公系统,支持国际语言和多民族语言,世界五百强与大型门户专用高端网站内核CMS系统
9 lines • 3.42 kB
JavaScript
/*!
* ====================================================
* Front-end Input and Output Solution - v1.0.0 - 2014-10-23
* https://github.com/fex-team/fio
* GitHub: https://github.com/fex-team/fio.git
* Copyright (c) 2014 Baidu FEX; Licensed BSD
* ====================================================
*/
!function(a){function b(a,b){a.prototype=new b,a.prototype.constructor=a}function c(){Error.apply(this,arguments)}function d(a){if(Error.call(this,a),"object"==typeof a)for(var b in a)a.hasOwnProperty(b)&&(this[b]=a[b]);else this.detail=a}function e(a,b){this.id=a,this.username=b}function f(a){this.content=a,this.type=a instanceof Blob?j.file.TYPE_BLOB:"string"==typeof a?j.file.TYPE_TEXT:"object"==typeof a?j.file.TYPE_JSON:j.file.TYPE_UNKNOWN}function g(a){this.setPath(a),this.isDir=!1,this.data=null,this.size=0,this.createTime=new Date,this.modifyTime=new Date}function h(a,b,c){this.user=a,this.file=b,this.access=c||0}function i(a,b,c){this.path=a,this.method=b,this.user=c,this.dupPolicy=j.file.DUP_FAIL,this.newPath=null,this.acl=null,this.extra=null,this.dataType=j.file.TYPE_TEXT}var j={version:"1.0"};j.provider={},j.file={},j.user={};var k={},l=null,m=function(){return new a.resolve(null)},n={check:m,login:m,logout:m,init:m,current:m};b(c,Error),b(d,Error),j.AuthError=c,j.FileRequestError=d,g.prototype.setPath=function(a){j.file.anlysisPath(a,this)},j.file.anlysisPath=function(a,b){b=b||{};for(var c=a.split("/");"/"==c[0]||""===c[0];)c.shift();for(;"/"==c[c.length-1]||""===c[c.length-1];)c.pop();if(b.filename=c.pop()||null,b.parentPath=c.length?"/"+c.join("/")+"/":b.filename?"/":null,b.filename){var d=b.filename.split(".");b.extension=d.length>1?"."+d.pop():null,b.name=d.join("."),b.path=b.parentPath+b.filename}else b.path="/";return b},j.user.User=e,j.file.Data=f,j.file.File=g,j.file.Acl=h,j.file.FileRequest=i,j.file.TYPE_TEXT="text",j.file.TYPE_JSON="json",j.file.TYPE_BLOB="blob",j.file.TYPE_UNKNOWN="unknown",j.file.METHOD_READ="read",j.file.METHOD_WRITE="write",j.file.METHOD_LIST="list",j.file.METHOD_MOVE="move",j.file.METHOD_DELETE="delete",j.file.METHOD_MKDIR="mkdir",j.file.METHOD_ACL_READ="readAcl",j.file.METHOD_ACL_WRITE="writeAcl",j.file.DUP_OVERWRITE="overwrite",j.file.DUP_FAIL="fail",j.file.DUP_RENAME="rename",j.file.ACCESS_PUBLIC=1,j.file.ACCESS_READ=2,j.file.ACCESS_WRITE=4,j.file.ACCESS_CREATE=8,j.file.ACCESS_DELETE=16,j.file.ACCESS_ACL_READ=32,j.file.ACCESS_ACL_WRITE=64,j.file.ACCESS_ALL=65534,j.provider.register=function(a,b){if(k[a]=b,l||(l=b),"function"!=typeof b.handle)throw new Error("Not implement: provider.handle()")},j.provider.use=function(a){l=k[a]},j.provider.init=function(a,b){var c=k[a];return c&&"function"==typeof c.init?c.init.call(c,b):null},j.user.impl=function(a){n=a},$.each(["check","login","logout","init","current"],function(a,b){j.user[b]=function(){return n[b].apply(n,arguments)}}),$.each(["read","write","list","move","delete","mkdir","readAcl","writeAcl"],function(b,c){j.file[c]=function(b){return j.user.check().then(function(d){var e=b.provider?k[b.provider]:l,f=new i(b.path,c,d);"read"==c&&(f.dataType=b.dataType||j.file.TYPE_TEXT),"write"==c&&(f.dupPolicy=b.ondup,f.data=new j.file.Data(b.content),delete b.ondup),"move"==c&&(f.newPath=b.newPath,delete b.newPath),"writeAcl"==c&&(f.acl=b.acl,delete b.acl),delete b.provider,delete b.path,f.extra=b;var g=e.handle(f);return a.resolve(g)})}}),window.fio=j}(Promise);