154 lines
3.8 KiB
JavaScript
154 lines
3.8 KiB
JavaScript
"use strict";
|
|
|
|
const api = require("../api.js");
|
|
const uri = require("../util/uri.js");
|
|
const events = require("../events.js");
|
|
|
|
class UserToken extends events.EventTarget {
|
|
constructor() {
|
|
super();
|
|
this._orig = {};
|
|
this._updateFromResponse({});
|
|
}
|
|
|
|
get token() {
|
|
return this._token;
|
|
}
|
|
|
|
get note() {
|
|
return this._note;
|
|
}
|
|
|
|
get enabled() {
|
|
return this._enabled;
|
|
}
|
|
|
|
get version() {
|
|
return this._version;
|
|
}
|
|
|
|
get expirationTime() {
|
|
return this._expirationTime;
|
|
}
|
|
|
|
get creationTime() {
|
|
return this._creationTime;
|
|
}
|
|
|
|
get lastEditTime() {
|
|
return this._lastEditTime;
|
|
}
|
|
|
|
get lastUsageTime() {
|
|
return this._lastUsageTime;
|
|
}
|
|
|
|
set note(value) {
|
|
this._note = value;
|
|
}
|
|
|
|
static fromResponse(response) {
|
|
if (typeof response.results !== "undefined") {
|
|
let tokenList = [];
|
|
for (let responseToken of response.results) {
|
|
const token = new UserToken();
|
|
token._updateFromResponse(responseToken);
|
|
tokenList.push(token);
|
|
}
|
|
return tokenList;
|
|
} else {
|
|
const ret = new UserToken();
|
|
ret._updateFromResponse(response);
|
|
return ret;
|
|
}
|
|
}
|
|
|
|
static get(userName) {
|
|
return api
|
|
.get(uri.formatApiLink("user-tokens", userName))
|
|
.then((response) => {
|
|
return Promise.resolve(UserToken.fromResponse(response));
|
|
});
|
|
}
|
|
|
|
static create(userName, note, expirationTime) {
|
|
let userTokenRequest = {
|
|
enabled: true,
|
|
};
|
|
if (note) {
|
|
userTokenRequest.note = note;
|
|
}
|
|
if (expirationTime) {
|
|
userTokenRequest.expirationTime = expirationTime;
|
|
}
|
|
return api
|
|
.post(uri.formatApiLink("user-token", userName), userTokenRequest)
|
|
.then((response) => {
|
|
return Promise.resolve(UserToken.fromResponse(response));
|
|
});
|
|
}
|
|
|
|
save(userName) {
|
|
const detail = { version: this._version };
|
|
|
|
if (this._note !== this._orig._note) {
|
|
detail.note = this._note;
|
|
}
|
|
|
|
return api
|
|
.put(
|
|
uri.formatApiLink("user-token", userName, this._orig._token),
|
|
detail
|
|
)
|
|
.then((response) => {
|
|
this._updateFromResponse(response);
|
|
this.dispatchEvent(
|
|
new CustomEvent("change", {
|
|
detail: {
|
|
userToken: this,
|
|
},
|
|
})
|
|
);
|
|
return Promise.resolve(this);
|
|
});
|
|
}
|
|
|
|
delete(userName) {
|
|
return api
|
|
.delete(
|
|
uri.formatApiLink("user-token", userName, this._orig._token),
|
|
{
|
|
version: this._version,
|
|
}
|
|
)
|
|
.then((response) => {
|
|
this.dispatchEvent(
|
|
new CustomEvent("delete", {
|
|
detail: {
|
|
userToken: this,
|
|
},
|
|
})
|
|
);
|
|
return Promise.resolve();
|
|
});
|
|
}
|
|
|
|
_updateFromResponse(response) {
|
|
const map = {
|
|
_token: response.token,
|
|
_note: response.note,
|
|
_enabled: response.enabled,
|
|
_expirationTime: response.expirationTime,
|
|
_version: response.version,
|
|
_creationTime: response.creationTime,
|
|
_lastEditTime: response.lastEditTime,
|
|
_lastUsageTime: response.lastUsageTime,
|
|
};
|
|
|
|
Object.assign(this, map);
|
|
Object.assign(this._orig, map);
|
|
}
|
|
}
|
|
|
|
module.exports = UserToken;
|