2017-07-06 08:08:20 +00:00
|
|
|
import store from '@/store'
|
2017-07-03 10:04:14 +00:00
|
|
|
|
2017-07-04 15:43:31 +00:00
|
|
|
const ssl = (window.location.protocol === 'https:')
|
|
|
|
|
2017-07-03 14:19:17 +00:00
|
|
|
function removePrefix (url) {
|
|
|
|
if (url.startsWith('/files')) {
|
|
|
|
return url.slice(6)
|
|
|
|
}
|
|
|
|
|
|
|
|
return url
|
|
|
|
}
|
|
|
|
|
2017-07-03 10:04:14 +00:00
|
|
|
function fetch (url) {
|
2017-07-03 14:19:17 +00:00
|
|
|
url = removePrefix(url)
|
|
|
|
|
2017-07-03 10:04:14 +00:00
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
let request = new window.XMLHttpRequest()
|
|
|
|
request.open('GET', `${store.state.baseURL}/api/resource${url}`, true)
|
|
|
|
request.setRequestHeader('Authorization', `Bearer ${store.state.jwt}`)
|
|
|
|
|
2017-07-03 14:19:17 +00:00
|
|
|
request.onload = () => {
|
|
|
|
switch (request.status) {
|
|
|
|
case 200:
|
2017-07-08 10:12:43 +00:00
|
|
|
resolve(JSON.parse(request.responseText))
|
2017-07-03 14:19:17 +00:00
|
|
|
break
|
|
|
|
default:
|
2017-07-08 10:51:24 +00:00
|
|
|
reject({
|
|
|
|
message: request.responseText,
|
|
|
|
status: request.status
|
|
|
|
})
|
2017-07-03 14:19:17 +00:00
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
request.onerror = (error) => reject(error)
|
|
|
|
request.send()
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
function rm (url) {
|
2017-07-03 14:23:16 +00:00
|
|
|
url = removePrefix(url)
|
|
|
|
|
2017-07-03 14:19:17 +00:00
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
let request = new window.XMLHttpRequest()
|
|
|
|
request.open('DELETE', `${store.state.baseURL}/api/resource${url}`, true)
|
|
|
|
request.setRequestHeader('Authorization', `Bearer ${store.state.jwt}`)
|
|
|
|
|
|
|
|
request.onload = () => {
|
|
|
|
if (request.status === 200) {
|
|
|
|
resolve(request.responseText)
|
|
|
|
} else {
|
|
|
|
reject(request.responseText)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
request.onerror = (error) => reject(error)
|
|
|
|
request.send()
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2017-07-04 20:02:46 +00:00
|
|
|
function post (url, content = '') {
|
|
|
|
url = removePrefix(url)
|
|
|
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
let request = new window.XMLHttpRequest()
|
|
|
|
request.open('POST', `${store.state.baseURL}/api/resource${url}`, true)
|
|
|
|
request.setRequestHeader('Authorization', `Bearer ${store.state.jwt}`)
|
|
|
|
|
|
|
|
request.onload = () => {
|
|
|
|
if (request.status === 200) {
|
|
|
|
resolve(request.responseText)
|
|
|
|
} else {
|
|
|
|
reject(request.responseText)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
request.onerror = (error) => reject(error)
|
|
|
|
request.send(content)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2017-07-04 17:08:42 +00:00
|
|
|
function put (url, content = '') {
|
2017-07-03 14:19:17 +00:00
|
|
|
url = removePrefix(url)
|
|
|
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
let request = new window.XMLHttpRequest()
|
|
|
|
request.open('PUT', `${store.state.baseURL}/api/resource${url}`, true)
|
|
|
|
request.setRequestHeader('Authorization', `Bearer ${store.state.jwt}`)
|
|
|
|
|
|
|
|
request.onload = () => {
|
|
|
|
if (request.status === 200) {
|
|
|
|
resolve(request.responseText)
|
|
|
|
} else {
|
|
|
|
reject(request.responseText)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
request.onerror = (error) => reject(error)
|
2017-07-04 17:08:42 +00:00
|
|
|
request.send(content)
|
2017-07-03 14:19:17 +00:00
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2017-07-26 14:55:39 +00:00
|
|
|
function moveCopy (items, copy = false) {
|
|
|
|
let promises = []
|
2017-07-03 14:19:17 +00:00
|
|
|
|
2017-07-26 14:55:39 +00:00
|
|
|
for (let item of items) {
|
|
|
|
let from = removePrefix(item.from)
|
|
|
|
let to = removePrefix(item.to)
|
2017-07-03 14:19:17 +00:00
|
|
|
|
2017-07-26 14:55:39 +00:00
|
|
|
promises.push(new Promise((resolve, reject) => {
|
|
|
|
let request = new window.XMLHttpRequest()
|
|
|
|
request.open('PATCH', `${store.state.baseURL}/api/resource${from}`, true)
|
|
|
|
request.setRequestHeader('Authorization', `Bearer ${store.state.jwt}`)
|
|
|
|
request.setRequestHeader('Destination', to)
|
|
|
|
|
|
|
|
if (copy) {
|
|
|
|
request.setRequestHeader('Action', 'copy')
|
2017-07-03 14:19:17 +00:00
|
|
|
}
|
|
|
|
|
2017-07-26 14:55:39 +00:00
|
|
|
request.onload = () => {
|
|
|
|
if (request.status === 200) {
|
|
|
|
resolve(request.responseText)
|
|
|
|
} else {
|
|
|
|
reject(request.responseText)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
request.onerror = (error) => reject(error)
|
|
|
|
request.send()
|
|
|
|
}))
|
|
|
|
}
|
|
|
|
|
|
|
|
return Promise.all(promises)
|
|
|
|
}
|
|
|
|
|
|
|
|
function move (items) {
|
|
|
|
return moveCopy(items)
|
|
|
|
}
|
|
|
|
|
|
|
|
function copy (items) {
|
|
|
|
return moveCopy(items, true)
|
2017-07-03 14:19:17 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function checksum (url, algo) {
|
|
|
|
url = removePrefix(url)
|
|
|
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
let request = new window.XMLHttpRequest()
|
|
|
|
request.open('GET', `${store.state.baseURL}/api/checksum${url}?algo=${algo}`, true)
|
|
|
|
request.setRequestHeader('Authorization', `Bearer ${store.state.jwt}`)
|
|
|
|
|
2017-07-03 10:04:14 +00:00
|
|
|
request.onload = () => {
|
|
|
|
if (request.status === 200) {
|
2017-07-03 14:19:17 +00:00
|
|
|
resolve(request.responseText)
|
2017-07-03 10:04:14 +00:00
|
|
|
} else {
|
2017-07-03 14:19:17 +00:00
|
|
|
reject(request.responseText)
|
2017-07-03 10:04:14 +00:00
|
|
|
}
|
|
|
|
}
|
2017-07-03 14:19:17 +00:00
|
|
|
request.onerror = (error) => reject(error)
|
2017-07-03 10:04:14 +00:00
|
|
|
request.send()
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2017-07-03 17:07:14 +00:00
|
|
|
function command (url, command, onmessage, onclose) {
|
2017-07-04 15:43:31 +00:00
|
|
|
let protocol = (ssl ? 'wss:' : 'ws:')
|
2017-07-03 17:07:14 +00:00
|
|
|
url = removePrefix(url)
|
2017-07-27 13:02:50 +00:00
|
|
|
url = `${protocol}//${window.location.host}${store.state.baseURL}/api/command${url}`
|
2017-07-03 17:07:14 +00:00
|
|
|
|
|
|
|
let conn = new window.WebSocket(url)
|
|
|
|
conn.onopen = () => conn.send(command)
|
|
|
|
conn.onmessage = onmessage
|
|
|
|
conn.onclose = onclose
|
|
|
|
}
|
|
|
|
|
|
|
|
function search (url, search, onmessage, onclose) {
|
2017-07-04 15:43:31 +00:00
|
|
|
let protocol = (ssl ? 'wss:' : 'ws:')
|
2017-07-03 17:07:14 +00:00
|
|
|
url = removePrefix(url)
|
2017-07-27 13:02:50 +00:00
|
|
|
url = `${protocol}//${window.location.host}${store.state.baseURL}/api/search${url}`
|
2017-07-03 17:07:14 +00:00
|
|
|
|
|
|
|
let conn = new window.WebSocket(url)
|
|
|
|
conn.onopen = () => conn.send(search)
|
|
|
|
conn.onmessage = onmessage
|
|
|
|
conn.onclose = onclose
|
|
|
|
}
|
|
|
|
|
2017-07-03 20:33:21 +00:00
|
|
|
function download (format, ...files) {
|
|
|
|
let url = `${store.state.baseURL}/api/download`
|
|
|
|
|
|
|
|
if (files.length === 1) {
|
|
|
|
url += removePrefix(files[0]) + '?'
|
|
|
|
} else {
|
|
|
|
let arg = ''
|
|
|
|
|
|
|
|
for (let file of files) {
|
|
|
|
arg += removePrefix(file) + ','
|
|
|
|
}
|
|
|
|
|
|
|
|
arg = arg.substring(0, arg.length - 1)
|
|
|
|
arg = encodeURIComponent(arg)
|
|
|
|
url += `/?files=${arg}&`
|
|
|
|
}
|
|
|
|
|
|
|
|
if (format !== null) {
|
|
|
|
url += `&format=${format}`
|
|
|
|
}
|
|
|
|
|
|
|
|
window.open(url)
|
|
|
|
}
|
|
|
|
|
2017-07-07 19:00:32 +00:00
|
|
|
function getUsers () {
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
let request = new window.XMLHttpRequest()
|
|
|
|
request.open('GET', `${store.state.baseURL}/api/users/`, true)
|
|
|
|
request.setRequestHeader('Authorization', `Bearer ${store.state.jwt}`)
|
|
|
|
|
|
|
|
request.onload = () => {
|
|
|
|
switch (request.status) {
|
|
|
|
case 200:
|
|
|
|
resolve(JSON.parse(request.responseText))
|
|
|
|
break
|
|
|
|
default:
|
|
|
|
reject(request.responseText)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
request.onerror = (error) => reject(error)
|
|
|
|
request.send()
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2017-07-06 20:18:34 +00:00
|
|
|
function getUser (id) {
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
let request = new window.XMLHttpRequest()
|
|
|
|
request.open('GET', `${store.state.baseURL}/api/users/${id}`, true)
|
|
|
|
request.setRequestHeader('Authorization', `Bearer ${store.state.jwt}`)
|
|
|
|
|
|
|
|
request.onload = () => {
|
|
|
|
switch (request.status) {
|
|
|
|
case 200:
|
|
|
|
resolve(JSON.parse(request.responseText))
|
|
|
|
break
|
|
|
|
default:
|
|
|
|
reject(request.responseText)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
request.onerror = (error) => reject(error)
|
|
|
|
request.send()
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2017-07-07 19:00:32 +00:00
|
|
|
function newUser (user) {
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
let request = new window.XMLHttpRequest()
|
|
|
|
request.open('POST', `${store.state.baseURL}/api/users/`, true)
|
|
|
|
request.setRequestHeader('Authorization', `Bearer ${store.state.jwt}`)
|
|
|
|
|
|
|
|
request.onload = () => {
|
|
|
|
switch (request.status) {
|
|
|
|
case 201:
|
|
|
|
resolve(request.getResponseHeader('Location'))
|
|
|
|
break
|
|
|
|
default:
|
|
|
|
reject(request.responseText)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
request.onerror = (error) => reject(error)
|
|
|
|
request.send(JSON.stringify(user))
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
function updateUser (user) {
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
let request = new window.XMLHttpRequest()
|
|
|
|
request.open('PUT', `${store.state.baseURL}/api/users/${user.ID}`, true)
|
|
|
|
request.setRequestHeader('Authorization', `Bearer ${store.state.jwt}`)
|
|
|
|
|
|
|
|
request.onload = () => {
|
|
|
|
switch (request.status) {
|
|
|
|
case 200:
|
|
|
|
resolve(request.getResponseHeader('Location'))
|
|
|
|
break
|
|
|
|
default:
|
|
|
|
reject(request.responseText)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
request.onerror = (error) => reject(error)
|
|
|
|
request.send(JSON.stringify(user))
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2017-07-20 09:12:45 +00:00
|
|
|
function deleteUser (id) {
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
let request = new window.XMLHttpRequest()
|
|
|
|
request.open('DELETE', `${store.state.baseURL}/api/users/${id}`, true)
|
|
|
|
request.setRequestHeader('Authorization', `Bearer ${store.state.jwt}`)
|
|
|
|
|
|
|
|
request.onload = () => {
|
|
|
|
switch (request.status) {
|
|
|
|
case 200:
|
|
|
|
resolve()
|
|
|
|
break
|
|
|
|
default:
|
|
|
|
reject(request.responseText)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
request.onerror = (error) => reject(error)
|
|
|
|
request.send()
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2017-07-07 19:00:32 +00:00
|
|
|
function updatePassword (password) {
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
let request = new window.XMLHttpRequest()
|
2017-07-08 13:43:08 +00:00
|
|
|
request.open('PUT', `${store.state.baseURL}/api/users/change-password`, true)
|
2017-07-07 19:00:32 +00:00
|
|
|
request.setRequestHeader('Authorization', `Bearer ${store.state.jwt}`)
|
|
|
|
|
|
|
|
request.onload = () => {
|
|
|
|
switch (request.status) {
|
|
|
|
case 200:
|
|
|
|
resolve()
|
|
|
|
break
|
|
|
|
default:
|
|
|
|
reject(request.responseText)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
request.onerror = (error) => reject(error)
|
|
|
|
request.send(JSON.stringify({ 'password': password }))
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
function updateCSS (css) {
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
let request = new window.XMLHttpRequest()
|
2017-07-08 13:43:08 +00:00
|
|
|
request.open('PUT', `${store.state.baseURL}/api/users/change-css`, true)
|
2017-07-07 19:00:32 +00:00
|
|
|
request.setRequestHeader('Authorization', `Bearer ${store.state.jwt}`)
|
|
|
|
|
|
|
|
request.onload = () => {
|
|
|
|
switch (request.status) {
|
|
|
|
case 200:
|
|
|
|
resolve()
|
|
|
|
break
|
|
|
|
default:
|
|
|
|
reject(request.responseText)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
request.onerror = (error) => reject(error)
|
|
|
|
request.send(JSON.stringify({ 'css': css }))
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2017-07-08 19:27:26 +00:00
|
|
|
function getCommands () {
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
let request = new window.XMLHttpRequest()
|
|
|
|
request.open('GET', `${store.state.baseURL}/api/commands/`, true)
|
|
|
|
request.setRequestHeader('Authorization', `Bearer ${store.state.jwt}`)
|
|
|
|
|
|
|
|
request.onload = () => {
|
|
|
|
switch (request.status) {
|
|
|
|
case 200:
|
|
|
|
resolve(JSON.parse(request.responseText))
|
|
|
|
break
|
|
|
|
default:
|
|
|
|
reject(request.responseText)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
request.onerror = (error) => reject(error)
|
|
|
|
request.send()
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
function updateCommands (commands) {
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
let request = new window.XMLHttpRequest()
|
|
|
|
request.open('PUT', `${store.state.baseURL}/api/commands/`, true)
|
|
|
|
request.setRequestHeader('Authorization', `Bearer ${store.state.jwt}`)
|
|
|
|
|
|
|
|
request.onload = () => {
|
|
|
|
switch (request.status) {
|
|
|
|
case 200:
|
|
|
|
resolve()
|
|
|
|
break
|
|
|
|
default:
|
|
|
|
reject(request.responseText)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
request.onerror = (error) => reject(error)
|
|
|
|
request.send(JSON.stringify(commands))
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2017-07-12 15:18:13 +00:00
|
|
|
function getPlugins () {
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
let request = new window.XMLHttpRequest()
|
|
|
|
request.open('GET', `${store.state.baseURL}/api/plugins/`, true)
|
|
|
|
request.setRequestHeader('Authorization', `Bearer ${store.state.jwt}`)
|
|
|
|
|
|
|
|
request.onload = () => {
|
|
|
|
switch (request.status) {
|
|
|
|
case 200:
|
|
|
|
resolve(JSON.parse(request.responseText))
|
|
|
|
break
|
|
|
|
default:
|
|
|
|
reject(request.responseText)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
request.onerror = (error) => reject(error)
|
|
|
|
request.send()
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2017-07-18 13:43:16 +00:00
|
|
|
function updatePlugins (data) {
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
let request = new window.XMLHttpRequest()
|
|
|
|
request.open('PUT', `${store.state.baseURL}/api/plugins/`, true)
|
|
|
|
request.setRequestHeader('Authorization', `Bearer ${store.state.jwt}`)
|
|
|
|
|
|
|
|
request.onload = () => {
|
|
|
|
switch (request.status) {
|
|
|
|
case 200:
|
|
|
|
resolve()
|
|
|
|
break
|
|
|
|
default:
|
|
|
|
reject(request.responseText)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
request.onerror = (error) => reject(error)
|
|
|
|
request.send(JSON.stringify(data))
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2017-07-03 10:04:14 +00:00
|
|
|
export default {
|
2017-07-03 14:19:17 +00:00
|
|
|
delete: rm,
|
|
|
|
fetch,
|
|
|
|
checksum,
|
|
|
|
move,
|
2017-07-03 17:07:14 +00:00
|
|
|
put,
|
2017-07-26 14:55:39 +00:00
|
|
|
copy,
|
2017-07-04 20:02:46 +00:00
|
|
|
post,
|
2017-07-03 17:07:14 +00:00
|
|
|
command,
|
2017-07-03 20:33:21 +00:00
|
|
|
search,
|
2017-07-06 20:18:34 +00:00
|
|
|
download,
|
2017-07-07 19:00:32 +00:00
|
|
|
getUser,
|
|
|
|
newUser,
|
|
|
|
updateUser,
|
|
|
|
getUsers,
|
|
|
|
updatePassword,
|
2017-07-08 19:27:26 +00:00
|
|
|
updateCSS,
|
|
|
|
getCommands,
|
2017-07-11 15:58:18 +00:00
|
|
|
updateCommands,
|
2017-07-12 15:18:13 +00:00
|
|
|
removePrefix,
|
2017-07-18 13:43:16 +00:00
|
|
|
getPlugins,
|
2017-07-20 09:12:45 +00:00
|
|
|
updatePlugins,
|
|
|
|
deleteUser
|
2017-07-03 10:04:14 +00:00
|
|
|
}
|