1
0
mirror of https://git.sr.ht/~cadence/bibliogram synced 2025-06-29 00:18:25 +00:00
bibliogram/src/lib/structures/Assistant.js
2020-04-07 18:33:35 +12:00

43 lines
1.3 KiB
JavaScript

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 => {
// console.log(root)
if (root.status === "ok") {
this.lastRequestStatus = constants.symbols.assistant_statuses.OK
resolve(root.data.user)
} else {
this.lastRequestStatus = constants.symbols.assistant_statuses.BLOCKED
reject(constants.symbols.assistant_statuses.BLOCKED)
}
}).catch(error => {
// console.error(error)
this.lastRequestStatus = constants.symbols.assistant_statuses.OFFLINE
reject(constants.symbols.assistant_statuses.OFFLINE)
})
})
}
}
module.exports = Assistant