minio/browser/app/js/web.js

139 lines
3.5 KiB
JavaScript
Raw Normal View History

/*
* Minio Cloud Storage (C) 2016, 2018 Minio, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import JSONrpc from "./jsonrpc"
import { minioBrowserPrefix } from "./constants.js"
import Moment from "moment"
import storage from "local-storage-fallback"
class Web {
constructor(endpoint) {
const namespace = "Web"
this.JSONrpc = new JSONrpc({
endpoint,
namespace,
})
}
makeCall(method, options) {
return this.JSONrpc.call(
method,
{
params: options,
},
storage.getItem("token"),
)
.catch(err => {
if (err.status === 401) {
storage.removeItem("token")
location.reload()
throw new Error("Please re-login.")
}
if (err.status) throw new Error(`Server returned error [${err.status}]`)
throw new Error("Minio server is unreachable")
})
.then(res => {
let json = JSON.parse(res.text)
let result = json.result
let error = json.error
if (error) {
throw new Error(error.message)
}
if (!Moment(result.uiVersion).isValid()) {
throw new Error("Invalid UI version in the JSON-RPC response")
}
if (
result.uiVersion !== currentUiVersion &&
currentUiVersion !== "MINIO_UI_VERSION"
) {
storage.setItem("newlyUpdated", true)
location.reload()
}
return result
})
}
LoggedIn() {
return !!storage.getItem("token")
}
Login(args) {
return this.makeCall("Login", args).then(res => {
storage.setItem("token", `${res.token}`)
return res
})
}
Logout() {
storage.removeItem("token")
}
ServerInfo() {
return this.makeCall("ServerInfo")
}
StorageInfo() {
return this.makeCall("StorageInfo")
}
ListBuckets() {
return this.makeCall("ListBuckets")
}
MakeBucket(args) {
return this.makeCall("MakeBucket", args)
}
DeleteBucket(args) {
return this.makeCall("DeleteBucket", args)
}
ListObjects(args) {
return this.makeCall("ListObjects", args)
}
PresignedGet(args) {
return this.makeCall("PresignedGet", args)
}
PutObjectURL(args) {
return this.makeCall("PutObjectURL", args)
}
RemoveObject(args) {
return this.makeCall("RemoveObject", args)
}
GetAuth() {
return this.makeCall("GetAuth")
}
GenerateAuth() {
return this.makeCall("GenerateAuth")
}
SetAuth(args) {
return this.makeCall("SetAuth", args).then(res => {
storage.setItem("token", `${res.token}`)
return res
})
}
CreateURLToken() {
return this.makeCall("CreateURLToken")
}
GetBucketPolicy(args) {
return this.makeCall("GetBucketPolicy", args)
}
SetBucketPolicy(args) {
return this.makeCall("SetBucketPolicy", args)
}
ListAllBucketPolicies(args) {
return this.makeCall("ListAllBucketPolicies", args)
}
}
const web = new Web(
`${window.location.protocol}//${
window.location.host
}${minioBrowserPrefix}/webrpc`,
)
export default web