1
0

core-files_client.js 12 KB

123
  1. /*! For license information please see core-files_client.js.LICENSE.txt */
  2. (()=>{"use strict";var e,t={7913:(e,t,s)=>{var n=s(95573),i=s.n(n),r=s(25108);!function(e,t){var s=function(t){this._root=t.root,"/"===this._root.charAt(this._root.length-1)&&(this._root=this._root.substr(0,this._root.length-1));let n=s.PROTOCOL_HTTP+"://";t.useHTTPS&&(n=s.PROTOCOL_HTTPS+"://"),n+=t.host+this._root,this._host=t.host,this._defaultHeaders=t.defaultHeaders||{"X-Requested-With":"XMLHttpRequest",requesttoken:e.requestToken},this._baseUrl=n;const i={baseUrl:this._baseUrl,xmlNamespaces:{"DAV:":"d","http://owncloud.org/ns":"oc","http://nextcloud.org/ns":"nc","http://open-collaboration-services.org/ns":"ocs"}};t.userName&&(i.userName=t.userName),t.password&&(i.password=t.password),this._client=new dav.Client(i),this._client.xhrProvider=_.bind(this._xhrProvider,this),this._fileInfoParsers=[]};s.NS_OWNCLOUD="http://owncloud.org/ns",s.NS_NEXTCLOUD="http://nextcloud.org/ns",s.NS_DAV="DAV:",s.NS_OCS="http://open-collaboration-services.org/ns",s.PROPERTY_GETLASTMODIFIED="{"+s.NS_DAV+"}getlastmodified",s.PROPERTY_GETETAG="{"+s.NS_DAV+"}getetag",s.PROPERTY_GETCONTENTTYPE="{"+s.NS_DAV+"}getcontenttype",s.PROPERTY_RESOURCETYPE="{"+s.NS_DAV+"}resourcetype",s.PROPERTY_INTERNAL_FILEID="{"+s.NS_OWNCLOUD+"}fileid",s.PROPERTY_PERMISSIONS="{"+s.NS_OWNCLOUD+"}permissions",s.PROPERTY_SIZE="{"+s.NS_OWNCLOUD+"}size",s.PROPERTY_GETCONTENTLENGTH="{"+s.NS_DAV+"}getcontentlength",s.PROPERTY_ISENCRYPTED="{"+s.NS_DAV+"}is-encrypted",s.PROPERTY_SHARE_PERMISSIONS="{"+s.NS_OCS+"}share-permissions",s.PROPERTY_SHARE_ATTRIBUTES="{"+s.NS_NEXTCLOUD+"}share-attributes",s.PROPERTY_QUOTA_AVAILABLE_BYTES="{"+s.NS_DAV+"}quota-available-bytes",s.PROTOCOL_HTTP="http",s.PROTOCOL_HTTPS="https",s._PROPFIND_PROPERTIES=[[s.NS_DAV,"getlastmodified"],[s.NS_DAV,"getetag"],[s.NS_DAV,"getcontenttype"],[s.NS_DAV,"resourcetype"],[s.NS_OWNCLOUD,"fileid"],[s.NS_OWNCLOUD,"permissions"],[s.NS_OWNCLOUD,"size"],[s.NS_DAV,"getcontentlength"],[s.NS_DAV,"quota-available-bytes"],[s.NS_NEXTCLOUD,"has-preview"],[s.NS_NEXTCLOUD,"mount-type"],[s.NS_NEXTCLOUD,"is-encrypted"],[s.NS_OCS,"share-permissions"],[s.NS_NEXTCLOUD,"share-attributes"]],s.prototype={_root:null,_client:null,_fileInfoParsers:[],_xhrProvider:function(){const t=this._defaultHeaders,s=new XMLHttpRequest,n=s.open;return s.open=function(){const e=n.apply(this,arguments);return _.each(t,(function(e,t){s.setRequestHeader(t,e)})),e},e.registerXHRForErrorProcessing(s),s},_buildUrl:function(){let e=this._buildPath.apply(this,arguments);return"/"===e.charAt([e.length-1])&&(e=e.substr(0,e.length-1)),"/"===e.charAt(0)&&(e=e.substr(1)),this._baseUrl+"/"+e},_buildPath:function(){let t=e.joinPaths.apply(this,arguments);const s=t.split("/");let n;for(n=0;n<s.length;n++)s[n]=encodeURIComponent(s[n]);return t=s.join("/"),t},_parseHeaders:function(e){const t=e.split("\n"),s={};for(let e=0;e<t.length;e++){const n=t[e].indexOf(":");if(n<0)continue;const i=t[e].substr(0,n),r=t[e].substr(n+2);s[i]||(s[i]=[]),s[i].push(r)}return s},_parseEtag:function(e){return'"'===e.charAt(0)?e.split('"')[1]:e},_parseFileInfo:function(n){let i=decodeURIComponent(n.href);if(i.substr(0,this._root.length)===this._root&&(i=i.substr(this._root.length)),"/"===i.charAt(i.length-1)&&(i=i.substr(0,i.length-1)),0===n.propStat.length||"HTTP/1.1 200 OK"!==n.propStat[0].status)return null;const o=n.propStat[0].properties,a={id:o[s.PROPERTY_INTERNAL_FILEID],path:e.dirname(i)||"/",name:e.basename(i),mtime:new Date(o[s.PROPERTY_GETLASTMODIFIED]).getTime()},c=o[s.PROPERTY_GETETAG];_.isUndefined(c)||(a.etag=this._parseEtag(c));let u=o[s.PROPERTY_GETCONTENTLENGTH];_.isUndefined(u)||(a.size=parseInt(u,10)),u=o[s.PROPERTY_SIZE],_.isUndefined(u)||(a.size=parseInt(u,10));const l=o["{"+s.NS_NEXTCLOUD+"}has-preview"];_.isUndefined(l)?a.hasPreview=!0:a.hasPreview="true"===l;const p=o["{"+s.NS_NEXTCLOUD+"}is-encrypted"];_.isUndefined(p)?a.isEncrypted=!1:a.isEncrypted="1"===p;const h=o["{"+s.NS_OWNCLOUD+"}favorite"];_.isUndefined(h)?a.isFavourited=!1:a.isFavourited="1"===h;const d=o[s.PROPERTY_GETCONTENTTYPE];_.isUndefined(d)||(a.mimetype=d);const f=o[s.PROPERTY_RESOURCETYPE];if(!a.mimetype&&f){const e=f[0];e.namespaceURI===s.NS_DAV&&"collection"===e.nodeName.split(":")[1]&&(a.mimetype="httpd/unix-directory")}a.permissions=e.PERMISSION_NONE;const S=o[s.PROPERTY_PERMISSIONS];if(!_.isUndefined(S)){const t=S||"";a.mountType=null;for(let s=0;s<t.length;s++)switch(t.charAt(s)){case"C":case"K":a.permissions|=e.PERMISSION_CREATE;break;case"G":a.permissions|=e.PERMISSION_READ;break;case"W":case"N":case"V":a.permissions|=e.PERMISSION_UPDATE;break;case"D":a.permissions|=e.PERMISSION_DELETE;break;case"R":a.permissions|=e.PERMISSION_SHARE;break;case"M":a.mountType||(a.mountType="external");break;case"S":a.mountType="shared"}}const E=o[s.PROPERTY_SHARE_PERMISSIONS];_.isUndefined(E)||(a.sharePermissions=parseInt(E));const P=o[s.PROPERTY_SHARE_ATTRIBUTES];if(_.isUndefined(P))a.shareAttributes=[];else try{a.shareAttributes=JSON.parse(P)}catch(e){r.warn('Could not parse share attributes returned by server: "'+P+'"'),a.shareAttributes=[]}const T=o["{"+s.NS_NEXTCLOUD+"}mount-type"];_.isUndefined(T)||(a.mountType=T);const O=o["{"+s.NS_DAV+"}quota-available-bytes"];return _.isUndefined(O)||(a.quotaAvailableBytes=O),_.each(this._fileInfoParsers,(function(e){_.extend(a,e(n,a)||{})})),new t(a)},_parseResult:function(e){const t=this;return _.map(e,(function(e){return t._parseFileInfo(e)}))},_isSuccessStatus:function(e){return e>=200&&e<=299},_getSabreException:function(e){const t={},s=e.xhr.responseXML;if(null===s)return t;const n=s.getElementsByTagNameNS("http://sabredav.org/ns","message"),i=s.getElementsByTagNameNS("http://sabredav.org/ns","exception");return n.length&&(t.message=n[0].textContent),i.length&&(t.exception=i[0].textContent),t},getPropfindProperties:function(){return this._propfindProperties||(this._propfindProperties=_.map(s._PROPFIND_PROPERTIES,(function(e){return"{"+e[0]+"}"+e[1]}))),this._propfindProperties},getFolderContents:function(e,t){e||(e=""),t=t||{};const s=this,n=$.Deferred(),i=n.promise();let r;return r=_.isUndefined(t.properties)?this.getPropfindProperties():t.properties,this._client.propFind(this._buildUrl(e),r,1).then((function(e){if(s._isSuccessStatus(e.status)){const i=s._parseResult(e.body);t&&t.includeParent||i.shift(),n.resolve(e.status,i)}else e=_.extend(e,s._getSabreException(e)),n.reject(e.status,e)})),i},getFilteredFiles:function(e,t){t=t||{};const s=this,n=$.Deferred(),r=n.promise();let o;if(o=_.isUndefined(t.properties)?this.getPropfindProperties():t.properties,!e||!e.systemTagIds&&_.isUndefined(e.favorite)&&!e.circlesIds)throw"Missing filter argument";let a,c="<oc:filter-files ";for(a in this._client.xmlNamespaces)c+=" xmlns:"+this._client.xmlNamespaces[a]+'="'+a+'"';return c+=">\n",c+=" <"+this._client.xmlNamespaces["DAV:"]+":prop>\n",_.each(o,(function(e){const t=s._client.parseClarkNotation(e);c+=" <"+s._client.xmlNamespaces[t.namespace]+":"+t.name+" />\n"})),c+=" </"+this._client.xmlNamespaces["DAV:"]+":prop>\n",c+=" <oc:filter-rules>\n",_.each(e.systemTagIds,(function(e){c+=" <oc:systemtag>"+i()(e)+"</oc:systemtag>\n"})),_.each(e.circlesIds,(function(e){c+=" <oc:circle>"+i()(e)+"</oc:circle>\n"})),e.favorite&&(c+=" <oc:favorite>"+(e.favorite?"1":"0")+"</oc:favorite>\n"),c+=" </oc:filter-rules>\n",c+="</oc:filter-files>\n",this._client.request("REPORT",this._buildUrl(),{},c).then((function(e){if(s._isSuccessStatus(e.status)){const t=s._parseResult(e.body);n.resolve(e.status,t)}else e=_.extend(e,s._getSabreException(e)),n.reject(e.status,e)})),r},getFileInfo:function(e,t){e||(e=""),t=t||{};const s=this,n=$.Deferred(),i=n.promise();let r;return r=_.isUndefined(t.properties)?this.getPropfindProperties():t.properties,this._client.propFind(this._buildUrl(e),r,0).then((function(e){s._isSuccessStatus(e.status)?n.resolve(e.status,s._parseResult([e.body])[0]):(e=_.extend(e,s._getSabreException(e)),n.reject(e.status,e))})),i},getFileContents:function(e){if(!e)throw'Missing argument "path"';const t=this,s=$.Deferred(),n=s.promise();return this._client.request("GET",this._buildUrl(e)).then((function(e){t._isSuccessStatus(e.status)?s.resolve(e.status,e.body):(e=_.extend(e,t._getSabreException(e)),s.reject(e.status,e))})),n},putFileContents:function(e,t,s){if(!e)throw'Missing argument "path"';const n=this,i=$.Deferred(),r=i.promise(),o={};let a="text/plain;charset=utf-8";return(s=s||{}).contentType&&(a=s.contentType),o["Content-Type"]=a,(_.isUndefined(s.overwrite)||s.overwrite)&&(o["If-None-Match"]="*"),this._client.request("PUT",this._buildUrl(e),o,t||"").then((function(e){n._isSuccessStatus(e.status)?i.resolve(e.status):(e=_.extend(e,n._getSabreException(e)),i.reject(e.status,e))})),r},_simpleCall:function(e,t,s){if(!t)throw'Missing argument "path"';const n=this,i=$.Deferred(),r=i.promise();return this._client.request(e,this._buildUrl(t),s||{}).then((function(e){n._isSuccessStatus(e.status)?i.resolve(e.status):(e=_.extend(e,n._getSabreException(e)),i.reject(e.status,e))})),r},createDirectory:function(e,t){return this._simpleCall("MKCOL",e,t)},remove:function(e){return this._simpleCall("DELETE",e)},move:function(e,t,s,n){if(!e)throw'Missing argument "path"';if(!t)throw'Missing argument "destinationPath"';const i=this,r=$.Deferred(),o=r.promise();return n=_.extend({},n,{Destination:this._buildUrl(t)}),s||(n.Overwrite="F"),this._client.request("MOVE",this._buildUrl(e),n).then((function(e){i._isSuccessStatus(e.status)?r.resolve(e.status):(e=_.extend(e,i._getSabreException(e)),r.reject(e.status,e))})),o},copy:function(e,t,s){if(!e)throw'Missing argument "path"';if(!t)throw'Missing argument "destinationPath"';const n=this,i=$.Deferred(),r=i.promise(),o={Destination:this._buildUrl(t)};return s||(o.Overwrite="F"),this._client.request("COPY",this._buildUrl(e),o).then((function(e){n._isSuccessStatus(e.status)?i.resolve(e.status):i.reject(e.status)})),r},addFileInfoParser:function(e){this._fileInfoParsers.push(e)},getClient:function(){return this._client},getUserName:function(){return this._client.userName},getPassword:function(){return this._client.password},getBaseUrl:function(){return this._client.baseUrl},getHost:function(){return this._host}},e.Files||(e.Files={}),e.Files.getClient=function(){if(e.Files._defaultClient)return e.Files._defaultClient;const t=new e.Files.Client({host:e.getHost(),port:e.getPort(),root:e.linkToRemoteBase("dav")+"/files/"+e.getCurrentUser().uid,useHTTPS:"https"===e.getProtocol()});return e.Files._defaultClient=t,t},e.Files.Client=s}(OC,OC.Files.FileInfo)}},s={};function n(e){var i=s[e];if(void 0!==i)return i.exports;var r=s[e]={id:e,loaded:!1,exports:{}};return t[e].call(r.exports,r,r.exports,n),r.loaded=!0,r.exports}n.m=t,e=[],n.O=(t,s,i,r)=>{if(!s){var o=1/0;for(l=0;l<e.length;l++){s=e[l][0],i=e[l][1],r=e[l][2];for(var a=!0,c=0;c<s.length;c++)(!1&r||o>=r)&&Object.keys(n.O).every((e=>n.O[e](s[c])))?s.splice(c--,1):(a=!1,r<o&&(o=r));if(a){e.splice(l--,1);var u=i();void 0!==u&&(t=u)}}return t}r=r||0;for(var l=e.length;l>0&&e[l-1][2]>r;l--)e[l]=e[l-1];e[l]=[s,i,r]},n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var s in t)n.o(t,s)&&!n.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),n.j=5578,(()=>{n.b=document.baseURI||self.location.href;var e={5578:0};n.O.j=t=>0===e[t];var t=(t,s)=>{var i,r,o=s[0],a=s[1],c=s[2],u=0;if(o.some((t=>0!==e[t]))){for(i in a)n.o(a,i)&&(n.m[i]=a[i]);if(c)var l=c(n)}for(t&&t(s);u<o.length;u++)r=o[u],n.o(e,r)&&e[r]&&e[r][0](),e[r]=0;return n.O(l)},s=self.webpackChunknextcloud=self.webpackChunknextcloud||[];s.forEach(t.bind(null,0)),s.push=t.bind(null,s.push.bind(s))})(),n.nc=void 0;var i=n.O(void 0,[7874],(()=>n(7913)));i=n.O(i)})();
  3. //# sourceMappingURL=core-files_client.js.map?v=759ba60b532e64582bf0