Former-commit-id: ec29aa7447e3ad1c90dea24e94072d51f212333e [formerly d370cb523dde06fb6d5aab614bf6ec1d94097363] [formerly bbabc4da0a6128b3bd8ecfa226156c9c2be7297e [formerly 2789ff2161cb4c1b1dc51282cb7aaa539a272966]] Former-commit-id: fb3ae368534aa2bd7cc08283463ac9d8e0d1d825 [formerly efbb60cc4dd2856bbc004fcbdc0567540c72f5b3] Former-commit-id: d0c3699029c88a3ed2a8f5ab72c70d0f5289292d
110 lines
2.7 KiB
JavaScript
110 lines
2.7 KiB
JavaScript
var $ = window.info
|
|
|
|
function convertURL (url) {
|
|
return window.location.origin + url.replace($.baseURL + '/', $.webdavURL + '/')
|
|
}
|
|
|
|
function move (oldLink, newLink) {
|
|
return new Promise((resolve, reject) => {
|
|
let request = new window.XMLHttpRequest()
|
|
|
|
oldLink = convertURL(oldLink)
|
|
newLink = newLink.replace($.baseURL + '/', $.webdavURL + '/')
|
|
newLink = window.location.origin + newLink.substring($.baseURL.length)
|
|
|
|
request.open('MOVE', oldLink, true)
|
|
request.setRequestHeader('Destination', newLink)
|
|
request.onload = () => {
|
|
if (request.status === 201 || request.status === 204) {
|
|
resolve()
|
|
} else {
|
|
reject(request.statusText)
|
|
}
|
|
}
|
|
request.onerror = () => reject(request.statusText)
|
|
request.send()
|
|
})
|
|
}
|
|
|
|
function put (link, body, headers = {}) {
|
|
return new Promise((resolve, reject) => {
|
|
let request = new window.XMLHttpRequest()
|
|
request.open('PUT', convertURL(link), true)
|
|
|
|
for (let key in headers) {
|
|
request.setRequestHeader(key, headers[key])
|
|
}
|
|
|
|
request.onload = () => {
|
|
if (request.status === 201) {
|
|
resolve()
|
|
} else {
|
|
reject(request.statusText)
|
|
}
|
|
}
|
|
request.onerror = () => reject(request.statusText)
|
|
request.send(body)
|
|
})
|
|
}
|
|
|
|
function propfind (link, body, headers = {}) {
|
|
return new Promise((resolve, reject) => {
|
|
let request = new window.XMLHttpRequest()
|
|
request.open('PROPFIND', convertURL(link), true)
|
|
|
|
for (let key in headers) {
|
|
request.setRequestHeader(key, headers[key])
|
|
}
|
|
|
|
request.onload = () => {
|
|
if (request.status < 300) {
|
|
resolve(request.responseText)
|
|
} else {
|
|
reject(request.statusText)
|
|
}
|
|
}
|
|
request.onerror = () => reject(request.statusText)
|
|
request.send(body)
|
|
})
|
|
}
|
|
|
|
function trash (link) {
|
|
return new Promise((resolve, reject) => {
|
|
let request = new window.XMLHttpRequest()
|
|
request.open('DELETE', convertURL(link), true)
|
|
request.onload = () => {
|
|
if (request.status === 204) {
|
|
resolve()
|
|
} else {
|
|
reject(request.statusText)
|
|
}
|
|
}
|
|
request.onerror = () => reject(request.statusText)
|
|
request.send()
|
|
})
|
|
}
|
|
|
|
function create (link) {
|
|
return new Promise((resolve, reject) => {
|
|
let request = new window.XMLHttpRequest()
|
|
request.open((link.endsWith('/') ? 'MKCOL' : 'PUT'), convertURL(link), true)
|
|
request.onload = () => {
|
|
if (request.status === 201) {
|
|
resolve()
|
|
} else {
|
|
reject(request.statusText)
|
|
}
|
|
}
|
|
request.onerror = () => reject(request.statusText)
|
|
request.send()
|
|
})
|
|
}
|
|
|
|
export default {
|
|
create: create,
|
|
trash: trash,
|
|
propfind: propfind,
|
|
put: put,
|
|
move: move
|
|
}
|