bibliogram/src/lib/structures/Assistant.js

48 lines
1.5 KiB
JavaScript
Raw Normal View History

2020-04-07 06:30:00 +00:00
const {request} = require("../utils/request")
const constants = require("../constants")
class Assistant {
constructor(origin) {
this.origin = origin
this.lastRequest = 0
this.lastRequestStatus = constants.symbols.assistant_statuses.NONE
}
available() {
if (this.lastRequestStatus === constants.symbols.assistant_statuses.OFFLINE) {
return Date.now() - this.lastRequest > constants.assistant.offline_request_cooldown
} else if (this.lastRequestStatus === constants.symbols.assistant_statuses.BLOCKED) {
return Date.now() - this.lastRequest > constants.assistant.blocked_request_cooldown
} else {
return true
}
}
requestUser(username) {
this.lastRequest = Date.now()
return new Promise((resolve, reject) => {
request(`${this.origin}/api/user/v1/${username}`).json().then(root => {
2020-04-07 06:33:35 +00:00
// console.log(root)
2020-04-07 06:30:00 +00:00
if (root.status === "ok") {
this.lastRequestStatus = constants.symbols.assistant_statuses.OK
resolve(root.data.user)
2020-04-08 03:11:49 +00:00
} else { // "fail"
if (root.identifier === "NOT_FOUND") {
this.lastRequestStatus = constants.symbols.assistant_statuses.OK
reject(constants.symbols.NOT_FOUND)
} else { // blocked
this.lastRequestStatus = constants.symbols.assistant_statuses.BLOCKED
reject(constants.symbols.assistant_statuses.BLOCKED)
}
2020-04-07 06:30:00 +00:00
}
}).catch(error => {
2020-04-07 06:33:35 +00:00
// console.error(error)
2020-04-07 06:30:00 +00:00
this.lastRequestStatus = constants.symbols.assistant_statuses.OFFLINE
reject(constants.symbols.assistant_statuses.OFFLINE)
})
})
}
}
module.exports = Assistant