From ac5cd58a6cb1c38e9b0c680af51fbdece8c9537d Mon Sep 17 00:00:00 2001 From: Florian Schade Date: Thu, 30 Jun 2022 17:46:50 +0200 Subject: [PATCH] introduce fileinfo processing state --- .drone.env | 4 ++-- .gitignore | 1 - .../unreleased/enhancement-add-resource-processing | 5 +++++ dist/owncloud.js | 1 + src/fileInfo.js | 11 +++++++---- src/helperFunctions.js | 13 +++++++++++-- 6 files changed, 26 insertions(+), 9 deletions(-) create mode 100644 changelog/unreleased/enhancement-add-resource-processing create mode 100644 dist/owncloud.js diff --git a/.drone.env b/.drone.env index 598baa729..841fd49a3 100644 --- a/.drone.env +++ b/.drone.env @@ -1,3 +1,3 @@ # The version of OCIS to use in pipelines that test against OCIS -OCIS_COMMITID=4abe656dcdb34638229fdfbb3d4bedf9f8148e0e -OCIS_BRANCH=master +OCIS_COMMITID=70c3499499793923b072f2bdc2826f2d20672d87 +OCIS_BRANCH=experimental diff --git a/.gitignore b/.gitignore index 5a12e7c92..fa9804ba1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,6 @@ .DS_Store .drone.yml coverage -dist docs docs-swagger/node_modules swagger.config.js diff --git a/changelog/unreleased/enhancement-add-resource-processing b/changelog/unreleased/enhancement-add-resource-processing new file mode 100644 index 000000000..8fa35468f --- /dev/null +++ b/changelog/unreleased/enhancement-add-resource-processing @@ -0,0 +1,5 @@ +Enhancement: Resource processing + +We've added a processing property to the fileinfo if the server response is `HTTP/1.1 425 TOO EARLY` + +https://github.com/owncloud/owncloud-sdk/pull/1109 diff --git a/dist/owncloud.js b/dist/owncloud.js new file mode 100644 index 000000000..92a774f6b --- /dev/null +++ b/dist/owncloud.js @@ -0,0 +1 @@ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var s=t();for(var r in s)("object"==typeof exports?exports:e)[r]=s[r]}}(this,(function(){return function(e){var t={};function s(r){if(t[r])return t[r].exports;var n=t[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,s),n.l=!0,n.exports}return s.m=e,s.c=t,s.d=function(e,t,r){s.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},s.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.t=function(e,t){if(1&t&&(e=s(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(s.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)s.d(r,n,function(t){return e[t]}.bind(null,n));return r},s.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return s.d(t,"a",t),t},s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},s.p="",s(s.s=6)}([function(e,t){e.exports=require("promise")},function(e,t,s){"use strict";s.r(t),s.d(t,"Dav",(function(){return o}));const{createClient:r}=s(29),n=s(2),i={"Content-Type":"application/xml; charset=utf-8"};class o{constructor(e){this._XML_CHAR_MAP={"<":"<",">":">","&":"&",'"':""","'":"'"},this.baseUrl=e,this.userName=null,this.password=null,this.xmlNamespaces={"DAV:":"d","http://owncloud.org/ns":"oc"},this.xmlNamespacesComponents={d:"DAV:",oc:"http://owncloud.org/ns"},this.client=r(e,{})}_escapeXml(e){return e.replace(/[<>&"']/g,(function(e){return this._XML_CHAR_MAP[e]}))}propFind(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"0",r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};s=""+s,r=r||{},r={...r,Depth:s,...i};var o,a='\n\n":a+=" \n'}return a+=" \n",a+="",this.request("PROPFIND",e,r,a,n).then((function(e){const t="0"===s?e.body[0]:e.body;return{status:e.status,body:t,res:e}}))}_renderPropSet(e){var t=" \n \n";for(var s in e)if(Object.hasOwnProperty.call(e,s)){var r,n=this.parseClarkNotation(s),i=e[s];"d:resourcetype"!==(r=this.xmlNamespaces[n.namespace]?this.xmlNamespaces[n.namespace]+":"+n.name:"x:"+n.name+' xmlns:x="'+n.namespace+'"')&&(i=this._escapeXml(i)),t+=" <"+r+">"+i+"\n"}return t+=" \n",t+=" \n"}propPatch(e,t,s){s=s||{},s={...s,...i};var r,n='\n4&&void 0!==arguments[4]?arguments[4]:{};const i=this.client,o=this.baseUrl,a=new URLSearchParams(n.query).toString(),h=a?"?"+a:"";delete n.query;const l={url:o+t+h,method:e,headers:s,data:r,...n};return new Promise(e=>i.customRequest("",l).then(t=>{var s=t.data;207===t.status&&(s=this.parseMultiStatus(s)),e({body:s,status:t.status,res:t})}).catch(t=>{const s=t.response;e({body:null==s?void 0:s.data,status:null==s?void 0:s.status,res:s})}))}_parsePropNode(e){var t=null;if(e.constructor===Object){if(0===Object.keys(e).length)return"";var s=[];for(var r in e){var n=e[r];if("object"==typeof n)if(Array.isArray(n))for(var i of n)s.push(i);else{var o=r.split(":")[0],a=r.split(":")[1],h=this.xmlNamespacesComponents[o];s.push("{"+h+"}"+a)}else s.push(n)}s.length&&(t=s)}else t=e||"";return t}parseMultiStatus(e){var t=n.xml2js(e)["d:multistatus"]["d:response"]||[];t.constructor!==Array&&(t=[t]);var s=[];return t.forEach(e=>{var t={href:null,propStat:[]};t.href=e["d:href"];var r=e["d:propstat"];r.constructor!==Array&&(r=[r]),r.forEach(e=>{var s={status:e["d:status"],properties:{}},r=e["d:prop"];r.constructor!==Array&&(r=[r]),r.forEach(e=>{for(var t in e){var r=this._parsePropNode(e[t]),n=t.split(":")[0],i=t.split(":")[1],o=this.xmlNamespacesComponents[n];s.properties["{"+o+"}"+i]=r}}),t.propStat.push(s)}),s.push(t)}),s}parseClarkNotation(e){var t=e.match(/^{([^}]+)}(.*)$/);if(t)return{name:t[2],namespace:t[1]}}}},function(e,t,s){const r=s(12),n={};function i(e,t){if("object"!=typeof e)return e;const s=Object.keys(t);for(const r in e){const n=h(r);if(r.indexOf(":")>-1&&s.indexOf(n)>-1){const o=s.indexOf(n),a="{"+t[s[o]]+"}"+r.split(":")[1];e[a]=e[r],e[a]=i(e[a],t)}else e[r]=i(e[r],t)}return e}function o(e,t){if("object"!=typeof e)return e;const s=Object.keys(t);let r={};e.constructor===Array&&(r=[]);for(const n in e)if(e.constructor===Array)r.push(o(e[n],t));else{const i=h(n);i&&-1===s.indexOf(i)&&(r[n]=o(e[n],t))}return r}function a(e){if("object"!=typeof e)return e;for(const t in e){if("_text"===t)return e[t];e[t]=a(e[t])}return e}function h(e){let t=e;return t.indexOf("{")>-1&&t.indexOf("}")>-1?t=t.split("{")[1].split("}")[0]:t.indexOf(":")>-1&&(t=t.split(":")[0]),t}n.xml2js=function(e,t){let s=r.xml2js(e,{compact:!0});return t&&(s=function(e,t){const s=Object.keys(t);for(const r in e){const n=h(r);if(r.indexOf(":")>-1&&s.indexOf(n)>-1){const o=s.indexOf(n),a="{"+t[s[o]]+"}"+r.split(":")[1];e[a]=e[r],e[a]=i(e[a],t)}else e[r]=i(e[r],t)}return e=function(e,t){let s={};const r=Object.keys(t);e.constructor===Array&&(s=[]);if("object"!=typeof e)return e;for(const n in e)if(e.constructor===Array)s.push(o(e[n],t));else{const i=h(n);i&&-1===r.indexOf(i)&&(s[n]=o(e[n],t))}return s}(e,t)}(s,t)),s=function(e){for(const t in e)e[t]=a(e[t]);return e}(s),s},e.exports=n},function(e,t){e.exports=require("axios")},function(e,t){e.exports=require("qs")},function(e,t){t.DEFAULT_ALGORITHM="sha512",t.DEFAULT_TTL=60,t.HASH_LENGTH=32,t.DIGEST_VALUE="hex",t.ITERATION_COUNT=1e4},function(e,t,s){s(7),e.exports=s(8)},function(e,t){e.exports=require("@babel/polyfill")},function(e,t,s){const r=s(9);e.exports=r},function(e,t,s){const r=s(0),n=s(10),i=s(23),o=s(24),a=s(26),h=s(27),l=s(28),u=s(30),c=s(31),p=s(32),d=s(33),f=s(34);e.exports=class{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.init(e)}init(e){let t="";e.baseUrl&&(t=new URL(e.baseUrl).href);const s=new n;if(s.setInstance(t),e.auth&&(e.auth.bearer&&s.setAuthorization("Bearer "+e.auth.bearer),e.auth.basic)){const t="Basic "+Buffer.from(e.auth.basic.username+":"+e.auth.basic.password).toString("base64");s.setAuthorization(t)}e.userInfo&&s.setCurrentUser(e.userInfo),e.signingKey&&s.setSigningKey(e.signingKey),e.headers&&s.setHeaders(e.headers),this.helpers=s,this.apps=new i(this.helpers),this.shares=new o(this.helpers),this.users=new a(this.helpers),this.groups=new h(this.helpers),this.files=new l(this.helpers),this.fileVersions=new u(this.helpers),this.systemTags=new c(this.helpers),this.fileTrash=new p(this.helpers),this.publicFiles=new d(this.helpers),this.settings=new f(this.helpers),this.requests={ocs:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return s.ocs(e)}},this.cache={}}login(){const e=this;return this.getCapabilities().then(()=>r.resolve(e.getCurrentUser()))}logout(){this.helpers.logout()}getConfig(){return this.helpers._makeOCSrequest("GET","","config").then(e=>r.resolve(e.data.ocs.data))}getCapabilities(){const e=this;if(!(!(arguments.length>0&&void 0!==arguments[0])||arguments[0])&&"capabilities"in this.cache)return new r(t=>t(e.cache.capabilities));const t=this.helpers.getCapabilities();return t.then(t=>{e.cache.capabilities=t}),t}getCurrentUser(){return this.helpers.getCurrentUserAsync()}signUrl(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1200,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"get";return this.helpers.signUrl(e,t,s)}}},function(e,t,s){const r=s(3).default,n=s(0),i=s(11),o=s(2),a=s(13),h=s(14),{v4:l}=s(15),u=s(16),c=s(17);e.exports=class{constructor(){this.axios=r.create({}),this.OCS_BASEPATH="ocs/v1.php/",this.OCS_BASEPATH_V2="ocs/v2.php/",this.OCS_SERVICE_SHARE="apps/files_sharing/api/v1",this.OCS_SERVICE_CLOUD="cloud",this.OCS_PERMISSION_READ=1,this.OCS_PERMISSION_UPDATE=2,this.OCS_PERMISSION_CREATE=4,this.OCS_PERMISSION_DELETE=8,this.OCS_PERMISSION_SHARE=16,this.OCS_PERMISSION_ALL=31,this.OCS_SHARE_TYPE_USER=0,this.OCS_SHARE_TYPE_GROUP=1,this.OCS_SHARE_TYPE_LINK=3,this.OCS_SHARE_TYPE_REMOTE=6,this.OCS_SHARE_TYPE_SPACE=7,this.instance=null,this._authHeader=null,this._headers={},this._versionNumber=null,this._currentUser=null,this._signingKey=null,this._authInterceptor=null,this.fetch=i}setInstance(e){this.instance=e,this._davPath=this.instance+"remote.php/dav"}getInstance(){return this.instance}noAuth(){this.axios.interceptors.request.use(e=>(e.extraReqParams=e.extraReqParams||{},e.extraReqParams.dontUseDefaultAuth=!0,e))}setAuthorization(e){this._authHeader=e,null===e?this.axios.interceptors.request.eject(this._authInterceptor):this._authInterceptor=this.axios.interceptors.request.use(t=>t.extraReqParams&&t.extraReqParams.dontUseDefaultAuth?(delete t.extraReqParams.dontUseDefaultAuth,t):e&&e.startsWith("Bearer ")?(t.headers.Authorization=e,t):t)}getAuthorization(){return this._authHeader}setHeaders(e){this._headers=e}logout(){this.setAuthorization(null),this._currentUser=null,this._signingKey=null}getCapabilities(){return this._makeOCSrequest("GET",this.OCS_SERVICE_CLOUD,"capabilities?format=json").then(e=>{const t=e.data.ocs.data;return this._versionNumber=t.version.major+"."+t.version.minor+"."+t.version.micro,n.resolve(t)})}getCurrentUser(){return this._currentUser}getCurrentUserAsync(){const e=this.getCurrentUser();return null!==e?n.resolve(e):this._updateCurrentUser()}setCurrentUser(e){this._currentUser=e}_updateCurrentUser(){const e=this;return e._makeOCSrequest("GET",e.OCS_SERVICE_CLOUD,"user").then(t=>(e._currentUser=t.data.ocs.data,n.resolve(e._currentUser)))}async signUrl(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1200,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"get";const r=await this.getSignKey(),n=await this.getCurrentUser();return new c({credential:n.id,secretKey:r,ttl:t,algorithm:"sha512"}).generateSignedUrl(e,s)}getSignKey(){if(null!==this._signingKey)return n.resolve(this._signingKey);const e=this;return e._makeOCSrequest("GET",e.OCS_SERVICE_CLOUD,"user/signing-key").then(t=>(e._signingKey=t.data.ocs.data["signing-key"],n.resolve(e._signingKey)))}setSigningKey(e){this._signingKey=e}buildHeaders(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];const t=Object.assign({},this._headers);return t["OCS-APIREQUEST"]="true",e&&(t.Authorization=this._authHeader),t["X-Request-ID"]=l(),t["X-Requested-With"]="XMLHttpRequest",t}_makeOCSrequest(e,t,s,r){const a=this;if(!a.instance)return n.reject("Please specify a server URL first");if(!a._authHeader)return n.reject("Please specify an authorization first.");const h=this.buildHeaders();let l="";t&&(l="/");const u=this.OCS_BASEPATH+t+l+s,c={url:this.instance+u,method:e,headers:h},p=function(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if("object"==typeof e)for(const r in e)p(e[r],t?t+"["+r+"]":r,s);else s.push(encodeURIComponent(t)+"="+encodeURIComponent(e));return s.join("&")};return c.headers["content-type"]="application/x-www-form-urlencoded",c.body="GET"!==e&&"HEAD"!==e?p(r).replace(/%20/g,"+"):null,new n((t,s)=>{i(this.instance+u,{method:e,body:c.body,headers:h}).then(e=>(e.status>=400&&s(e.statusText),e)).then(async e=>{let r=null;const n=await e.text();try{r=o.xml2js(n)}catch(e){try{r=JSON.parse(n)}catch(e){return void s(e)}}if("message"in r)return void s(r.message);const i=a._checkOCSstatus(r);i?s(i):(e.statusCode=e.status,t({response:e,body:n,data:r}))}).catch(e=>s(e))})}_get(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s=null;this.instance||(s="Please specify a server URL first"),this._authHeader||(s="Please specify an authorization first.");const r={Authorization:this._authHeader,"Content-Type":"application/x-www-form-urlencoded"};return(t.noCache||!1)&&(r["Cache-Control"]="no-cache"),new n((n,o)=>{s?o(s):i(e,{method:"GET",headers:r}).then(async e=>{let s;switch(e.statusCode=e.status,t.responseType){case"arrayBuffer":s=await e.arrayBuffer();break;case"blob":s=await e.blob();break;default:s=await e.text()}return n({response:e,body:s})})})}buildHttpErrorFromDavResponse(e,t){const s=this._parseDAVerror(t);return new u(e,s)}_parseDAVerror(e){try{const t=o.xml2js(e);if(t["d:error"]&&t["d:error"]["s:message"]){const e=t["d:error"]["s:message"];return"string"==typeof e?e:""}}catch(e){return"Unknown error"}return"Unknown error"}_normalizePath(e){return e||(e=""),0===e.length?"/":("/"!==e[0]&&(e="/"+e),e=e.replace(/([^:])(\/\/+)/g,"$1/"))}_encodeUri(e){return e=this._normalizePath(e),(e=encodeURIComponent(e)).split("%2F").join("/")}_checkOCSstatus(e,t){let s,r;return t||(t=[100]),e.ocs&&(s=e.ocs.meta),s&&-1===t.indexOf(parseInt(s.statuscode))&&(r=s.message,0===Object.keys(s.message).length&&(r=e)),r}_checkOCSstatusCode(e){if(e.ocs){const t=e.ocs.meta;return parseInt(t.statuscode)}return null}_encodeString(e){return a.encode(e)}_buildFullDAVPath(e){return this._encodeUri(e)}_buildFullDAVURL(e){return this._davPath+this._encodeUri(e)}_convertObjectToBool(e){if("object"!=typeof e)return e;for(const t in e)"true"===e[t]&&(e[t]=!0),"false"===e[t]&&(e[t]=!1);return e}_OCSuserResponseHandler(e,t,s){999===parseInt(this._checkOCSstatusCode(e.data))&&s("Provisioning API has been disabled at your instance"),t(!0)}_parseBody(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;Array.isArray(e)||(e=[e]);const s=this,r=[];for(let n=0;n"remote.php"===decodeURIComponent(e));if(-1===r)return e;if(-1===["webdav","dav"].indexOf(decodeURIComponent(s[r+1])))return null;let n="",i=r+(t=t||0)+2;for(;i1&&void 0!==arguments[1]?arguments[1]:0;const s=this._extractPath(e.href,t);if(null===s)return null;const r=s;if(0===e.propStat.length)return null;const n="HTTP/1.1 200 OK"===e.propStat[0].status,i="HTTP/1.1 425 TOO EARLY"===e.propStat[0].status;if(!(n||i))return null;const o=e.propStat[0].properties;let a="file";const l=o["{DAV:}resourcetype"];if(l){"{DAV:}collection"===l[0]&&(a="dir")}return new h(r,a,o,i)}_parseTusHeaders(e){const t={},s=e.res.headers;if(Object.keys(e.res.headers).map(e=>e.toLowerCase()).indexOf("tus-version")<0)return null;const r=s["tus-version"];return r?(t.version=r.split(","),s["tus-extension"]&&(t.extension=s["tus-extension"].split(",")),s["tus-resumable"]&&(t.resumable=s["tus-resumable"]),s["tus-max-size"]&&(t.maxSize=parseInt(s["tus-max-size"],10)),t):null}escapeXml(e){return"string"!=typeof e?e:e.replace(/[<>&'"]/g,(function(e){switch(e){case"<":return"<";case">":return">";case"&":return"&";case"'":return"'";case'"':return"""}}))}ocs(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t={method:"GET",service:this.OCS_SERVICE_CLOUD,action:"user",data:null,headers:{}};e=Object.assign({},t,e);const s=e.action.includes("?")?e.action+"&format=json":e.action+"?format=json",r=this.instance+this.OCS_BASEPATH_V2+e.service+"/"+s;var n=this.buildHeaders();n["OCS-APIREQUEST"]="true",n=Object.assign({},n,e.headers);const o={method:e.method,mode:"cors",headers:n};return null!==e.data&&(o.body=JSON.stringify(e.data),o.headers["Content-Type"]="application/json"),i(r,o)}}},function(e,t){e.exports=require("cross-fetch")},function(e,t){e.exports=require("xml-js")},function(e,t){e.exports=require("utf8")},function(e,t){e.exports=class{constructor(e,t,s){let r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];this.name=e,this.type=t,this.type=t,this.processing=r,this.fileInfo={},this.tusSupport=null;for(const e in s)this.fileInfo[e]=s[e]}getName(){let e=this.name.split("/");return e=e.filter((function(e){return""!==e})),e[e.length-1]}getPath(){let e=this.name.split("/");e=e.filter((function(e){return""!==e}));let t="/";for(let s=0;s1&&void 0!==arguments[1]?arguments[1]:null),this.statusCode=e}}e.exports=s},function(e,t,s){"use strict";e.exports=s(18)},function(e,t,s){const r=s(19),n=s(21),i=s(22),o=s(5);e.exports=class{constructor(e){if(void 0===e)throw new Error(i.OPTIONS_UNDEFINED);if(void 0===e.credential)throw new Error(i.CREDENTIAL_UNDEFINED);if(void 0===e.secretKey)throw new Error(i.SECRET_KEY_UNDEFINED);this.secretKey=e.secretKey,this.credential=e.credential,this.ttl=e.ttl||o.DEFAULT_TTL,this.algorithm=e.algorithm||o.DEFAULT_ALGORITHM,this.iterations=e.iterations||o.ITERATION_COUNT,this.generateSignedUrl=this.generateSignedUrl.bind(this),this.verifySignedUrl=this.verifySignedUrl.bind(this)}generateSignedUrl(e,t){if(void 0===e)throw new Error(i.URL_PARAM_UNDEFINED);if(void 0===t)throw new Error(i.HTTP_METHOD_PARAM_UNDEFINED);if(e.endsWith("/"))throw new Error(i.URL_IS_NOT_VALID);(e=new URL(e)).searchParams.set("OC-Credential",this.credential),e.searchParams.set("OC-Date",(new Date).toISOString()),e.searchParams.set("OC-Expires",this.ttl),e.searchParams.set("OC-Verb",t.toUpperCase());const s=r.createHashedKey(e.toString(),this.algorithm,this.secretKey,this.iterations);return e.searchParams.set("OC-Algo",`PBKDF2/${this.iterations}-SHA512`),e.searchParams.set("OC-Signature",s),e.toString()}verifySignedUrl(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"GET";const s=(e=new URL(e)).searchParams.get("OC-Signature");if(null===s)return n.BAD_REQUEST;e.searchParams.delete("OC-Signature"),e.searchParams.delete("OC-Algo");if(r.createHashedKey(e.toString(),this.algorithm,this.secretKey,this.iterations)!==s)return n.FORBIDDEN;const i=e.searchParams.get("OC-Verb");if(i&&i.toUpperCase()!==t.toUpperCase())return n.FORBIDDEN;const o=e.searchParams.get("OC-Date");if(null===o)return n.BAD_REQUEST;var a=e.searchParams.get("OC-Expires");if(null===a)return n.BAD_REQUEST;if(a=parseInt(a),isNaN(a))return n.BAD_REQUEST;const h=new Date(o);return h.setSeconds(h.getSeconds()+a),h{if(999===parseInt(this.helpers._checkOCSstatusCode(t[0].data)))return r.reject("Provisioning API has been disabled at your instance");if(!t[0].data.ocs.data||!t[1].data.ocs.data)return r.reject(t[0].data.ocs);const s=t[0].data.ocs.data.apps.element,n=t[1].data.ocs.data.apps.element;for(let t=0;t{if(!t.body)return r.reject('No app found by the name "'+e+'"');return 999===parseInt(this.helpers._checkOCSstatusCode(t.data))?r.reject("Provisioning API has been disabled at your instance"):r.resolve(!0)})}disableApp(e){return this.helpers._makeOCSrequest("DELETE",this.helpers.OCS_SERVICE_CLOUD,"apps/"+encodeURIComponent(e)).then(e=>999===parseInt(this.helpers._checkOCSstatusCode(e.data))?r.reject("Provisioning API has been disabled at your instance"):r.resolve(!0))}}},function(e,t,s){const r=s(0),n=s(2),{ShareInfo:i,USER_TYPE_GUEST:o,SHARE_TYPE_GUEST:a}=s(25);e.exports=class{constructor(e){this.helpers=e}shareFileWithLink(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e=this.helpers._normalizePath(e);const s={shareType:this.helpers.OCS_SHARE_TYPE_LINK,path:e};return t&&(t.spaceRef&&(s.space_ref=t.spaceRef),t.permissions&&(s.permissions=t.permissions),t.password&&(s.password=t.password),t.expireDate&&(s.expireDate=t.expireDate),t.name&&(s.name=t.name),t.publicUpload&&"boolean"==typeof t.publicUpload&&(s.publicUpload=t.publicUpload.toString().toLowerCase()),t.attributes&&(s.attributes=t.attributes),t.quicklink&&(s.quicklink=t.quicklink,function(e,t,r){let n=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];const i=[...s.attributes||[]],o=i.findIndex(s=>s.scope===t&&s.key===e);-1!==o&&n&&i.splice(o,1),i.push({key:e,scope:t,value:r}),s.attributes=i}("isQuickLink","files_sharing",s.quicklink))),this.helpers._makeOCSrequest("POST",this.helpers.OCS_SERVICE_SHARE,"shares",s).then(e=>{const t=n.xml2js(e.body).ocs.data,s=new i(t);return r.resolve(s)})}shareFileWithUser(e,t,s){e=this.helpers._normalizePath(e);let n={shareType:this.helpers.OCS_SHARE_TYPE_USER,shareWith:t,path:e};return s&&(s.spaceRef&&(n.space_ref=s.spaceRef),n={...n,...this._getOptionalParams(s)}),this.helpers._makeOCSrequest("POST",this.helpers.OCS_SERVICE_SHARE,"shares",n).then(e=>{const t=e.data.ocs.data,s=new i(t);return r.resolve(s)})}shareSpaceWithUser(e,t,s,n){let o={shareType:this.helpers.OCS_SHARE_TYPE_SPACE,shareWith:t,space_ref:s};return e&&(o.path=this.helpers._normalizePath(e)),n&&(o={...o,...this._getOptionalParams(n)}),this.helpers._makeOCSrequest("POST",this.helpers.OCS_SERVICE_SHARE,"shares",o).then(e=>{const t=e.data.ocs.data,s=new i(t);return r.resolve(s)})}shareFileWithGroup(e,t,s){e=this.helpers._normalizePath(e);let n={shareType:this.helpers.OCS_SHARE_TYPE_GROUP,shareWith:t,path:e};return s&&(s.spaceRef&&(n.space_ref=s.spaceRef),n={...n,...this._getOptionalParams(s)}),this.helpers._makeOCSrequest("POST",this.helpers.OCS_SERVICE_SHARE,"shares",n).then(e=>{const t=e.data.ocs.data,s=new i(t);return r.resolve(s)})}getShares(e,t){let s="shares";const n={};if(""!==e&&(n.path=this.helpers._normalizePath(e)),(t=this.helpers._convertObjectToBool(t))&&(t.spaceRef&&(n.space_ref=t.spaceRef),t.reshares&&"boolean"==typeof t.reshares&&(n.reshares=t.reshares),t.subfiles&&"boolean"==typeof t.subfiles&&(n.subfiles=t.subfiles),"include_tags"in t&&"boolean"==typeof t.include_tags&&(n.include_tags=t.include_tags),t.share_types&&"string"==typeof t.share_types&&(n.share_types=t.share_types),t.state&&"string"==typeof t.state&&(n.state=t.state),"shared_with_me"in t&&"boolean"==typeof t.shared_with_me&&(n.shared_with_me=t.shared_with_me,t.state&&(n.state=t.state))),Object.keys(n).length){s+="?";let e="";for(const t in n)e+="&"+encodeURIComponent(t)+"="+encodeURIComponent(n[t]);e=e.slice(1),s+=e}return new r((e,t)=>{this.helpers._makeOCSrequest("GET",this.helpers.OCS_SERVICE_SHARE,s).then(t=>{let s=t.data.ocs.data.element||[];const r=[];s&&s.constructor!==Array&&(s=[s]);for(let e=0;e{t(e)})})}isShared(e){const t=this;return new r((s,r)=>{t.getShares(e).then(e=>{s(e.length>0)}).catch(e=>{r(e)})})}getShare(e){return new r((t,s)=>{this.helpers._makeOCSrequest("GET",this.helpers.OCS_SERVICE_SHARE,"shares/"+e.toString()).then(e=>{const s=e.data.ocs.data.element,r=new i(s);t(r)}).catch(e=>{s(e)})})}listOpenRemoteShare(){return new r((e,t)=>{this.helpers._makeOCSrequest("GET",this.helpers.OCS_SERVICE_SHARE,"remote_shares/pending").then(t=>{const s=t.data.ocs.data.element||[];e(s)}).catch(e=>{t(e)})})}acceptRemoteShare(e){return new r((t,s)=>{this.helpers._makeOCSrequest("POST",this.helpers.OCS_SERVICE_SHARE,"remote_shares/pending"+encodeURIComponent(e.toString())).then(()=>{t(!0)}).catch(e=>{s(e)})})}declineRemoteShare(e){return new r((t,s)=>{this.helpers._makeOCSrequest("DELETE",this.helpers.OCS_SERVICE_SHARE,"remote_shares/pending"+encodeURIComponent(e.toString())).then(()=>{t(!0)}).catch(e=>{s(e)})})}updateShare(e,t){const s={};return t&&(t.permissions&&(s.permissions=t.permissions),void 0!==t.name&&(s.name=t.name),void 0!==t.password&&(s.password=t.password),void 0!==t.expireDate&&(s.expireDate=t.expireDate),t.publicUpload&&"boolean"==typeof t.publicUpload&&(s.publicUpload=t.publicUpload.toString().toLowerCase()),t.permissions&&(s.permissions=t.permissions),t.role&&(s.role=t.role),t.attributes&&(s.attributes=t.attributes)),this.helpers._makeOCSrequest("PUT",this.helpers.OCS_SERVICE_SHARE,"shares/"+e.toString(),s,1).then(e=>r.resolve(new i(e.data.ocs.data)))}deleteShare(e,t){let s="";return t&&(s="?",t.shareWith&&(s+="shareWith="+t.shareWith)),new r((t,r)=>{this.helpers._makeOCSrequest("DELETE",this.helpers.OCS_SERVICE_SHARE,"shares/"+encodeURIComponent(e.toString())+s).then(()=>{t(!0)}).catch(e=>{r(e)})})}getRecipients(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:200;return isNaN(parseInt(s))||s<1?r.reject(new Error("Please pass a valid page parameter (Integer)")):isNaN(parseInt(n))||n<1?r.reject(new Error("Please pass a valid perPage parameter (Integer)")):this.helpers.ocs({method:"GET",service:"apps/files_sharing",action:"api/v1/sharees?search="+encodeURIComponent(e)+"&itemType="+encodeURIComponent(t)+"&page="+s+"&perPage="+n}).then(e=>{if(e.ok)return e.json();throw new Error(e.status+"/"+e.statusText)}).then(e=>{const t=e.ocs.data;return t.users.forEach(e=>{e.value.userType===parseInt(o)&&(e.value.shareType=parseInt(a))}),t})}_getOptionalParams(e){const t={};return e.permissions&&(t.permissions=e.permissions),e.role&&(t.role=e.role),e.expirationDate&&(t.expireDate=e.expirationDate),e.attributes&&(t.attributes=e.attributes),e.remoteUser&&(t.shareType=this.helpers.OCS_SHARE_TYPE_REMOTE),t}}},function(e,t){e.exports={ShareInfo:class{constructor(e){var t;this.shareInfo=e,"1"===(null===(t=this.shareInfo)||void 0===t?void 0:t.share_with_user_type)&&(this.shareInfo.share_type="4")}getId(){return this._getInt("id")}getShareType(){return this._getInt("share_type")}getShareWith(){return Object.prototype.hasOwnProperty.call(this.shareInfo,"share_with")?this.shareInfo.share_with:null}getShareWithDisplayName(){return Object.prototype.hasOwnProperty.call(this.shareInfo,"share_with_displayname")?this.shareInfo.share_with_displayname:null}getPath(){return Object.prototype.hasOwnProperty.call(this.shareInfo,"path")?this.shareInfo.path:null}getPermissions(){return this._getInt("permissions")}getShareTime(){this._getInt("stime")}getExpiration(){return this._getInt("expiration")||null}getToken(){return Object.prototype.hasOwnProperty.call(this.shareInfo,"token")?this.shareInfo.token:null}getLink(){return Object.prototype.hasOwnProperty.call(this.shareInfo,"url")?this.shareInfo.url:null}getUidOwner(){return Object.prototype.hasOwnProperty.call(this.shareInfo,"uid_file_owner")?this.shareInfo.uid_file_owner:null}getDisplaynameOwner(){return Object.prototype.hasOwnProperty.call(this.shareInfo,"displayname_file_owner")?this.shareInfo.displayname_file_owner:null}getName(){return Object.prototype.hasOwnProperty.call(this.shareInfo,"name")?this.shareInfo.name:null}_getInt(e){return parseInt(this.shareInfo[e])}},USER_TYPE_GUEST:"1",SHARE_TYPE_GUEST:"4"}},function(e,t,s){const r=s(0);e.exports=class{constructor(e){this.helpers=e}createUser(e,t,s){return new r((r,n)=>{const i={password:t,userid:e};s&&s.length&&(i.groups=s),this.helpers._makeOCSrequest("POST",this.helpers.OCS_SERVICE_CLOUD,"users",i).then(e=>{this.helpers._OCSuserResponseHandler(e,r,n)}).catch(e=>{n(e)})})}deleteUser(e){return new r((t,s)=>{this.helpers._makeOCSrequest("DELETE",this.helpers.OCS_SERVICE_CLOUD,"users/"+encodeURIComponent(e)).then(e=>{this.helpers._OCSuserResponseHandler(e,t,s)}).catch(e=>{s(e)})})}enableUser(e){return new r((t,s)=>{this.helpers._makeOCSrequest("PUT",this.helpers.OCS_SERVICE_CLOUD,"users/"+encodeURIComponent(e)+"/enable",{}).then(e=>{this.helpers._OCSuserResponseHandler(e,t,s)}).catch(e=>{s(e)})})}disableUser(e){return new r((t,s)=>{this.helpers._makeOCSrequest("PUT",this.helpers.OCS_SERVICE_CLOUD,"users/"+encodeURIComponent(e)+"/disable",{}).then(e=>{this.helpers._OCSuserResponseHandler(e,t,s)}).catch(e=>{s(e)})})}searchUsers(e){const t=this;let s="users";return e&&(s+="?search="+e),new r((e,r)=>{this.helpers._makeOCSrequest("GET",this.helpers.OCS_SERVICE_CLOUD,s).then(s=>{t.handleObjectResponse(e,r,s,"users")}).catch(e=>{r(e)})})}userExists(e){const t=this;return e||(e=""),new r((s,r)=>{t.searchUsers(e).then(t=>{s(t.indexOf(e)>-1)}).catch(e=>{r(e)})})}setUserAttribute(e,t,s){return new r((r,n)=>{this.helpers._makeOCSrequest("PUT",this.helpers.OCS_SERVICE_CLOUD,"users/"+encodeURIComponent(e),{key:this.helpers._encodeString(t),value:this.helpers._encodeString(s)}).then(e=>{this.helpers._OCSuserResponseHandler(e,r,n)}).catch(e=>{n(e)})})}addUserToGroup(e,t){return new r((s,r)=>{this.helpers._makeOCSrequest("POST",this.helpers.OCS_SERVICE_CLOUD,"users/"+encodeURIComponent(e)+"/groups",{groupid:t}).then(e=>{this.helpers._OCSuserResponseHandler(e,s,r)}).catch(e=>{r(e)})})}getUserGroups(e){const t=this;return new r((s,r)=>{this.helpers._makeOCSrequest("GET",this.helpers.OCS_SERVICE_CLOUD,"users/"+encodeURIComponent(e)+"/groups").then(e=>{t.handleObjectResponse(s,r,e,"groups")}).catch(e=>{r(e)})})}userIsInGroup(e,t){const s=this;return new r((r,n)=>{s.getUserGroups(e).then(e=>{r(e.indexOf(t)>-1)}).catch(e=>{n(e)})})}getUser(e){return new r((t,s)=>{this.helpers._makeOCSrequest("GET",this.helpers.OCS_SERVICE_CLOUD,"users/"+encodeURIComponent(e)).then(e=>{if(999===parseInt(this.helpers._checkOCSstatusCode(e.data)))return void s("Provisioning API has been disabled at your instance");const r=e.data.ocs.data||null;t(r)}).catch(e=>{s(e)})})}removeUserFromGroup(e,t){return new r((s,r)=>{this.helpers._makeOCSrequest("DELETE",this.helpers.OCS_SERVICE_CLOUD,"users/"+encodeURIComponent(e)+"/groups",{groupid:t}).then(e=>{this.helpers._OCSuserResponseHandler(e,s,r)}).catch(e=>{r(e)})})}addUserToSubadminGroup(e,t){return new r((s,r)=>{this.helpers._makeOCSrequest("POST",this.helpers.OCS_SERVICE_CLOUD,"users/"+encodeURIComponent(e)+"/subadmins",{groupid:t}).then(e=>{this.helpers._OCSuserResponseHandler(e,s,r)}).catch(e=>{r(e)})})}getUserSubadminGroups(e){const t=this;return new r((s,r)=>{this.helpers._makeOCSrequest("GET",this.helpers.OCS_SERVICE_CLOUD,"users/"+encodeURIComponent(e)+"/subadmins").then(e=>{t.handleObjectResponse(s,r,e)}).catch(e=>{"Unknown error occurred"===e&&s([]),r(e)})})}userIsInSubadminGroup(e,t){const s=this;return new r((r,n)=>{s.getUserSubadminGroups(e).then(e=>{r(e.indexOf(t)>-1)}).catch(e=>{n(e)})})}getUsers(){return new r((e,t)=>{this.searchUsers("").then(t=>{e(t)}).catch(e=>{t(e)})})}handleObjectResponse(e,t,s,r){if(999===parseInt(this.helpers._checkOCSstatusCode(s.data)))return void t("Provisioning API has been disabled at your instance");let n;n=r?s.data.ocs.data[r].element||[]:s.data.ocs.data.element||[],n&&n.constructor!==Array&&(n=[n]),e(n)}}},function(e,t,s){const r=s(0),n=s(2);e.exports=class{constructor(e){this.helpers=e}createGroup(e){return new r((t,s)=>{this.helpers._makeOCSrequest("POST",this.helpers.OCS_SERVICE_CLOUD,"groups",{groupid:e}).then(e=>{this.helpers._OCSuserResponseHandler(e,t,s)}).catch(e=>{s(e)})})}deleteGroup(e){return new r((t,s)=>{this.helpers._makeOCSrequest("DELETE",this.helpers.OCS_SERVICE_CLOUD,"groups/"+e).then(e=>{this.helpers._OCSuserResponseHandler(e,t,s)}).catch(e=>{s(e)})})}getGroups(){const e=this;return new r((t,s)=>{this.helpers._makeOCSrequest("GET",this.helpers.OCS_SERVICE_CLOUD,"groups").then(r=>{e.handleObjectResponse(t,s,r,"groups")}).catch(e=>{s(e)})})}getGroupMembers(e){const t=this;return new r((s,r)=>{this.helpers._makeOCSrequest("GET",this.helpers.OCS_SERVICE_CLOUD,"groups/"+encodeURIComponent(e)).then(e=>{t.handleObjectResponse(s,r,e,"users")}).catch(e=>{r(e)})})}groupExists(e){const t=this;return new r((s,r)=>{t.getGroups().then(t=>{s(t.indexOf(e)>-1)}).catch(e=>{r(e)})})}handleObjectResponse(e,t,s,r){const i=n.xml2js(s.body);if(999===parseInt(this.helpers._checkOCSstatusCode(i)))return void t("Provisioning API has been disabled at your instance");let o=i.ocs.data[r].element||[];o&&o.constructor!==Array&&(o=[o]),e(o)}}},function(e,t,s){const r=s(0),{Dav:n}=s(1);e.exports=class{constructor(e){this.helpers=e,this.davClient=new n(this.helpers._davPath)}list(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"1",s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(!this.helpers.getAuthorization())return r.reject("Please specify an authorization first.");if(!this.helpers.getCurrentUser())return r.reject(new Error("Username or password was incorrect"));const n=this.helpers.buildHeaders();return this.davClient.propFind(this.helpers._buildFullDAVPath(e),s,t,n).then(e=>{if(207!==e.status)return r.reject(this.helpers.buildHttpErrorFromDavResponse(e.status,e.body));{const t=this.helpers._parseBody(e.body);return t[0].tusSupport=this.helpers._parseTusHeaders(e.res),r.resolve(t)}})}getFileContents(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.helpers.getAuthorization()?this.helpers.getCurrentUser()?this.helpers._get(this.helpers._buildFullDAVURL(e),t).then(e=>{const s=e.response,n=e.body;if(200!==s.statusCode)return r.reject(this.helpers.buildHttpErrorFromDavResponse(s.status,n));t=t||[];return t.resolveWithResponseObject||!1?r.resolve({body:n,headers:{ETag:s.headers.get("etag"),"OC-ETag":s.headers.get("oc-etag"),"OC-FileId":s.headers.get("oc-fileid")}}):r.resolve(n)}):r.reject(new Error("Username or password was incorrect")):r.reject("Please specify an authorization first.")}getFileUrl(e){return this.helpers._buildFullDAVURL(e)}getPathForFileId(e){const t="/meta/"+e;return this.davClient.propFind(this.helpers._buildFullDAVPath(t),["{http://owncloud.org/ns}meta-path-for-user"],0,{Authorization:this.helpers.getAuthorization()}).then(e=>{if(207!==e.status)return r.reject(this.helpers.buildHttpErrorFromDavResponse(e.status,e.body));const t=this.helpers._parseBody(e.body);return r.resolve(t[0].getProperty("{http://owncloud.org/ns}meta-path-for-user"))})}putFileContents(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!this.helpers.getAuthorization())return r.reject("Please specify an authorization first.");if(!this.helpers.getCurrentUser())return r.reject(new Error("Username or password was incorrect"));s=s||[];const n=Object.assign({},this.helpers.buildHeaders(),s.headers),i=s.previousEntityTag||!1;i?n["If-Match"]=i:s.overwrite||(n["If-None-Match"]="*");const o={};return s.onProgress&&(o.onUploadProgress=s.onProgress),n["Content-Type"]="text/plain;charset=utf-8",this.davClient.request("PUT",this.helpers._buildFullDAVPath(e),n,t,o).then(e=>[200,201,204,207].indexOf(e.status)>-1?r.resolve({ETag:e.res.headers.etag,"OC-ETag":e.res.headers["oc-etag"],"OC-FileId":e.res.headers["oc-fileid"]}):r.reject(this.helpers.buildHttpErrorFromDavResponse(e.status,e.body)))}createFolder(e){return this.helpers.getAuthorization()?this.helpers.getCurrentUser()?("/"!==e[e.length-1]&&(e+="/"),this.davClient.request("MKCOL",this.helpers._buildFullDAVPath(e),this.helpers.buildHeaders()).then(e=>[200,201,204,207].indexOf(e.status)>-1?r.resolve(!0):r.reject(this.helpers.buildHttpErrorFromDavResponse(e.status,e.body)))):r.reject(new Error("Username or password was incorrect")):r.reject("Please specify an authorization first.")}delete(e){return this.helpers.getAuthorization()?this.helpers.getCurrentUser()?this.davClient.request("DELETE",this.helpers._buildFullDAVPath(e),this.helpers.buildHeaders()).then(e=>[200,201,204,207].indexOf(e.status)>-1?r.resolve(!0):r.reject(this.helpers.buildHttpErrorFromDavResponse(e.status,e.body))):r.reject(new Error("Username or password was incorrect")):r.reject("Please specify an authorization first.")}fileInfo(e,t){return this.list(e,"0",t).then(e=>r.resolve(e[0]))}move(e,t){let s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!this.helpers.getAuthorization())return r.reject("Please specify an authorization first.");if(!this.helpers.getCurrentUser())return r.reject(new Error("Username or password was incorrect"));const n=this.helpers.buildHeaders();return n.Overwrite=s?"T":"F",n.Destination=this.helpers._buildFullDAVURL(t),this.davClient.request("MOVE",this.helpers._buildFullDAVPath(e),n).then(e=>[200,201,204,207].indexOf(e.status)>-1?r.resolve(!0):r.reject(this.helpers.buildHttpErrorFromDavResponse(e.status,e.body)))}copy(e,t){let s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!this.helpers.getAuthorization())return r.reject("Please specify an authorization first.");if(!this.helpers.getCurrentUser())return r.reject(new Error("Username or password was incorrect"));const n=this.helpers.buildHeaders();return n.Overwrite=s?"T":"F",n.Destination=this.helpers._buildFullDAVURL(t),this.davClient.request("COPY",this.helpers._buildFullDAVPath(e),n).then(e=>[200,201,204,207].indexOf(e.status)>-1?r.resolve(!0):r.reject(this.helpers.buildHttpErrorFromDavResponse(e.status,e.body)))}favorite(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.helpers.getAuthorization()?this.helpers.getCurrentUser()?this.davClient.propPatch(this.helpers._buildFullDAVPath(e),{"{http://owncloud.org/ns}favorite":t?"true":"false"},this.helpers.buildHeaders()).then(e=>[200,201,204,207].indexOf(e.status)>-1?r.resolve(!0):r.reject(this.helpers.buildHttpErrorFromDavResponse(e.status,e.body))):r.reject(new Error("Username or password was incorrect")):r.reject("Please specify an authorization first.")}search(e,t,s){e=e||"",t=t||30;let r,n='\n\n "+this.helpers.escapeXml(e)+"\n "+this.helpers.escapeXml(t)+"\n \n",this._sendDavReport(n)}getFavoriteFiles(e){let t,s='\n\n1\n\n",this._sendDavReport(s)}_renderProperties(e){if(!e)return"";let t=" \n";for(const s in e){if(!Object.prototype.hasOwnProperty.call(e,s))continue;const r=this.davClient.parseClarkNotation(e[s]);this.davClient.xmlNamespaces[r.namespace]?t+=" <"+this.davClient.xmlNamespaces[r.namespace]+":"+r.name+" />\n":t+=" \n'}return t+=" \n",t}getFilesByTags(e,t){let s,r='\n";for(const t in e)r+="",r+=e[t],r+="";return r+="",r+="",this._sendDavReport(r)}_sendDavReport(e){return this.helpers.getAuthorization()?this.helpers.getCurrentUserAsync().then(t=>{const s="/files/"+t.id+"/",n=this.helpers.buildHeaders();return n["Content-Type"]="application/xml; charset=utf-8",this.davClient.request("REPORT",s,n,e).then(e=>207!==e.status?r.reject(this.helpers.buildHttpErrorFromDavResponse(e.status,e.body)):r.resolve(this.helpers._parseBody(e.body)))}):r.reject("Please specify an authorization first.")}}},function(e,t){e.exports=require("webdav")},function(e,t,s){const r=s(0),{Dav:n}=s(1);e.exports=class{constructor(e){this.helpers=e,this.davClient=new n(this.helpers._davPath)}listVersions(e){const t="/meta/"+e+"/v";return this.davClient.propFind(this.helpers._buildFullDAVPath(t),[],1,{Authorization:this.helpers.getAuthorization()}).then(e=>207!==e.status?r.reject(this.helpers.buildHttpErrorFromDavResponse(e.status,e.body)):r.resolve(this.helpers._parseBody(e.body).splice(1)))}getFileVersionContents(e,t){const s="/meta/"+e+"/v/"+t;return this.helpers._get(this.helpers._buildFullDAVURL(s)).then(e=>{const t=e.response,s=e.body;return 200===t.statusCode?r.resolve(s):r.reject(this.helpers.buildHttpErrorFromDavResponse(t.status,s))})}restoreFileVersion(e,t,s){if(!this.helpers.getAuthorization())return r.reject("Please specify an authorization first.");const n="/meta/"+e+"/v/"+t,i="/files/"+this.helpers.getCurrentUser().id+"/"+s;return this.davClient.request("COPY",this.helpers._buildFullDAVPath(n),{Authorization:this.helpers.getAuthorization(),Destination:this.helpers._buildFullDAVURL(i)},null,{version:"v2"}).then(e=>[200,201,204,207].indexOf(e.status)>-1?r.resolve(!0):r.reject(this.helpers.buildHttpErrorFromDavResponse(e.status,e.body)))}getFileVersionUrl(e,t){const s="/meta/"+e+"/v/"+t;return this.helpers._buildFullDAVURL(s)}}},function(e,t,s){var r=s(0);const{Dav:n}=s(1);e.exports=class{constructor(e){this.helpers=e,this.davClient=new n(this.helpers._davPath)}createTag(e){if(!this.helpers.getAuthorization())return r.reject("Please specify an authorization first.");if(""===(e=Object.assign({},{canAssign:!0,name:"",userAssignable:!0,userEditable:!0,userVisible:!0},e)).name)return r.reject("Please specify a name for the tag.");const t=this.helpers.buildHeaders();t["Content-Type"]="application/json";const s=JSON.stringify(e);return this.davClient.request("POST",this.helpers._buildFullDAVPath("systemtags"),t,s).then(e=>{if(201!==e.status)return r.reject(new Error("Error: "+e.status));{const t=e.res.headers["content-location"];return r.resolve(parseInt(t.slice(t.lastIndexOf("/")+1),10))}})}tagFile(e,t){if(!this.helpers.getAuthorization())return r.reject("Please specify an authorization first.");const s="systemtags-relations/files/"+e+"/"+t;return this.davClient.request("PUT",this.helpers._buildFullDAVPath(s),this.helpers.buildHeaders(),null).then(e=>201!==e.status?r.reject(new Error("Error: "+e.status)):r.resolve())}}},function(e,t,s){const r=s(0),{Dav:n}=s(1);e.exports=class{constructor(e){this.helpers=e,this.davClient=new n(this.helpers._davPath)}list(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"1",s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:void 0;if(void 0===s&&(s=["{http://owncloud.org/ns}trashbin-original-filename","{http://owncloud.org/ns}trashbin-original-location","{http://owncloud.org/ns}trashbin-delete-timestamp","{DAV:}getcontentlength","{DAV:}resourcetype"]),!this.helpers.getAuthorization())return r.reject("Please specify an authorization first.");const i=this.helpers.buildHeaders();return this.davClient.propFind(this.helpers._buildFullDAVPath(e),s,t,i,{query:n}).then(e=>207!==e.status?r.reject(this.helpers.buildHttpErrorFromDavResponse(e.status,e.body)):r.resolve(this.helpers._parseBody(e.body)))}clearTrashBin(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;if(void 0===e)return r.reject(new Error("No tashBinPath given to clear"));if(!this.helpers.getAuthorization())return r.reject("Please specify an authorization first.");const n=this.helpers.buildHeaders();return null!==t&&(e+="/"+t),this.davClient.request("DELETE",this.helpers._buildFullDAVPath(e),n,null,{query:s}).then(e=>[200,201,204,207].indexOf(e.status)>-1?r.resolve():r.reject(this.helpers.buildHttpErrorFromDavResponse(e.status,e.res.data)))}restore(e,t,s){let n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:void 0;if(void 0===e)return r.reject(new Error("No trashBinPath given for restore"));if(void 0===t)return r.reject(new Error("No fileId given for restore"));if(void 0===s)return r.reject(new Error("No destinationPath given for restore"));if(!this.helpers.getAuthorization())return r.reject("Please specify an authorization first.");const o=this.helpers.buildHeaders(),a=e+"/"+t;return o.Destination=this.helpers._buildFullDAVURL(s),o.Overwrite=n?"T":"F",this.davClient.request("MOVE",this.helpers._buildFullDAVPath(a),o,null,{query:i}).then(e=>[200,201,204,207].indexOf(e.status)>-1?r.resolve():r.reject(this.helpers.buildHttpErrorFromDavResponse(e.status,e.res.data)))}}},function(e,t,s){const r=s(0),{Dav:n}=s(1);e.exports=class{constructor(e){this.helpers=e,this.davClient=new n(this.helpers._davPath),this.PUBLIC_LINK_ITEM_TYPE="{http://owncloud.org/ns}public-link-item-type",this.PUBLIC_LINK_PERMISSION="{http://owncloud.org/ns}public-link-permission",this.PUBLIC_LINK_EXPIRATION="{http://owncloud.org/ns}public-link-expiration",this.PUBLIC_LINK_SHARE_DATETIME="{http://owncloud.org/ns}public-link-share-datetime",this.PUBLIC_LINK_SHARE_OWNER="{http://owncloud.org/ns}public-link-share-owner"}async list(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"1";const i=this.helpers.buildHeaders(!1),o=this.getFileSharePath(e);this.helpers.noAuth(),t&&(i.Authorization="Basic "+Buffer.from("public:"+t).toString("base64")),0===s.length&&(s=[this.PUBLIC_LINK_ITEM_TYPE,this.PUBLIC_LINK_PERMISSION,this.PUBLIC_LINK_EXPIRATION,this.PUBLIC_LINK_SHARE_DATETIME,this.PUBLIC_LINK_SHARE_OWNER,"{DAV:}getcontenttype"]);const a=await this.davClient.propFind(o,s,n,i);return 207===a.status?this.helpers._parseBody(a.body,1):r.reject(this.helpers.buildHttpErrorFromDavResponse(a.status,a.res.body))}download(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};const i=this.helpers.buildHeaders(!1),o=this.getFileUrl(e,t);(n.noCache||!1)&&(i["Cache-Control"]="no-cache"),s&&(i.Authorization="Basic "+Buffer.from("public:"+s).toString("base64"));const a={method:"GET",mode:"cors",headers:i};return this.helpers.fetch(o,a).then(e=>e.ok?r.resolve(e):e.text().then(t=>r.reject(this.helpers.buildHttpErrorFromDavResponse(e.status,t))))}getFileUrl(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return e=e.replace(/^\//,""),t?(t=t.replace(/^\//,""),this.helpers._buildFullDAVURL("/public-files/"+e+"/"+t)):this.helpers._buildFullDAVURL("/public-files/"+e)}getFileSharePath(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return e=e.replace(/^\//,""),t?(t=t.replace(/^\//,""),this.helpers._buildFullDAVPath("/public-files/"+e+"/"+t)):this.helpers._buildFullDAVPath("/public-files/"+e)}createFolder(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;const n=this.helpers.buildHeaders(!1),i=this.getFileSharePath(e,t);return s&&(n.Authorization="Basic "+Buffer.from("public:"+s).toString("base64")),this.davClient.request("MKCOL",i,n,null,{version:"v2"}).then(e=>[200,201,204,207].indexOf(e.status)>-1?r.resolve(!0):r.reject(this.helpers.buildHttpErrorFromDavResponse(e.status,e.body)))}delete(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;const n=this.helpers.buildHeaders(!1),i=this.getFileSharePath(e,t);return s&&(n.Authorization="Basic "+Buffer.from("public:"+s).toString("base64")),this.davClient.request("DELETE",i,n,null).then(e=>[200,201,204,207].indexOf(e.status)>-1?r.resolve(!0):r.reject(this.helpers.buildHttpErrorFromDavResponse(e.status,e.body)))}putFileContents(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};const o=Object.assign({},this.helpers.buildHeaders(),i.headers),a=this.getFileSharePath(e,t);s&&(o.Authorization="Basic "+Buffer.from("public:"+s).toString("base64"));const h=i.previousEntityTag||!1;h?o["If-Match"]=h:i.overwrite||(o["If-None-Match"]="*");const l={};return i.onProgress&&(l.onProgress=i.onProgress),this.davClient.request("PUT",a,o,n,l).then(e=>[200,201,204,207].indexOf(e.status)>-1?r.resolve({ETag:e.res.headers.etag,"OC-FileId":e.res.headers["oc-fileid"]}):r.reject(this.helpers.buildHttpErrorFromDavResponse(e.status,e.body)))}move(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;const n=this.helpers.buildHeaders(!1),i=this.getFileSharePath(e),o=this.getFileUrl(t);return s&&(n.Authorization="Basic "+Buffer.from("public:"+s).toString("base64")),n.Destination=o,this.davClient.request("MOVE",i,n,null,{version:"v2"}).then(e=>[200,201,204,207].indexOf(e.status)>-1?r.resolve(!0):r.reject(this.helpers.buildHttpErrorFromDavResponse(e.status,e.body)))}copy(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;const n=this.helpers.buildHeaders(!1),i=this.getFileSharePath(e),o=this.getFileUrl(t);return s&&(n.Authorization="Basic "+Buffer.from("public:"+s).toString("base64")),n.Destination=o,this.davClient.request("COPY",i,n,null).then(e=>[200,201,204,207].indexOf(e.status)>-1?r.resolve(!0):r.reject(this.helpers.buildHttpErrorFromDavResponse(e.status,e.body)))}async getFileInfo(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];const r=await this.list(e,t,s,"0");return r[0]?r[0]:r}}},function(e,t,s){const r=s(35),n=s(0);e.exports=class{constructor(e){this.helpers=e}async getSettingsValues(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"me";try{const t=this.helpers.getInstance().replace(/\/$/,""),s=await r.ValueService_ListValues({client:this.helpers.axios,$domain:t,body:{account_uuid:e}});if(201===s.status)return n.resolve(s.data.values||[])}catch(e){if(e.response&&502!==e.response.status&&404!==e.response.status)return n.reject(e)}return n.resolve([])}}},function(e,t,s){"use strict";s.r(t),s.d(t,"getDomain",(function(){return h})),s.d(t,"setDomain",(function(){return l})),s.d(t,"request",(function(){return u})),s.d(t,"ValueService_ListValues",(function(){return c})),s.d(t,"ValueService_ListValues_RAW_URL",(function(){return p})),s.d(t,"ValueService_ListValues_TYPE",(function(){return d})),s.d(t,"ValueService_ListValuesURL",(function(){return f}));var r=s(3),n=s.n(r),i=s(4),o=s.n(i);let a="";const h=()=>a,l=e=>{a=e},u=(e,t,s,r,n,i,a)=>{t=t.toLowerCase();let h=s;return Object.keys(n).length>0&&(h=s+"?"+o.a.stringify(n)),r?e[t](h,r,a):"get"===t?e[t](h,a):e[t](h,o.a.stringify(i),a)},c=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=e.$domain?e.$domain:h(),s=e.$config,r=e.client||n.a;let i,o="/api/v0/settings/values-list",a={},l={};return void 0!==e.body&&(i=e.body),void 0===e.body?Promise.reject(new Error("Missing required parameter: body")):(e.$queryParameters&&Object.keys(e.$queryParameters).forEach((function(t){a[t]=e.$queryParameters[t]})),u(r,"post",t+o,i,a,l,s))},p=function(){return"/api/v0/settings/values-list"},d=function(){return"post"},f=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t={};const s=e.$domain?e.$domain:h();let r="/api/v0/settings/values-list";e.$queryParameters&&Object.keys(e.$queryParameters).forEach((function(s){t[s]=e.$queryParameters[s]}));let n=Object.keys(t);return s+r+(n.length>0?"?"+n.map(e=>e+"="+encodeURIComponent(t[e])).join("&"):"")}}])})); \ No newline at end of file diff --git a/src/fileInfo.js b/src/fileInfo.js index ff1f9a900..3c90876e3 100644 --- a/src/fileInfo.js +++ b/src/fileInfo.js @@ -1,14 +1,17 @@ /** * @class FileInfo * @classdesc FileInfo class, stores information regarding a file/folder - * @param {string} name name of file/folder - * @param {string} type "file" => file ; "dir" => folder - * @param {string} attr attributes of file like size, time added etc. + * @param {string} name name of file/folder + * @param {string} type "file" => file ; "dir" => folder + * @param {string} attr attributes of file like size, time added etc. + * @param {boolean} processing */ class FileInfo { - constructor (name, type, attr) { + constructor (name, type, attr, processing = false) { this.name = name this.type = type + this.type = type + this.processing = processing this.fileInfo = {} this.tusSupport = null diff --git a/src/helperFunctions.js b/src/helperFunctions.js index 59f096574..5544aabdb 100644 --- a/src/helperFunctions.js +++ b/src/helperFunctions.js @@ -582,7 +582,16 @@ class helpers { } const name = path - if (response.propStat.length === 0 || response.propStat[0].status !== 'HTTP/1.1 200 OK') { + if (response.propStat.length === 0) { + return null + } + + const ok = response.propStat[0].status === 'HTTP/1.1 200 OK' + const processing = response.propStat[0].status === 'HTTP/1.1 425 TOO EARLY' + + const cont = ok || processing + + if (!cont) { return null } @@ -596,7 +605,7 @@ class helpers { } } - return new FileInfo(name, fileType, props) + return new FileInfo(name, fileType, props, processing) } _parseTusHeaders (response) {