mirror of https://git.sr.ht/~cadence/bibliogram
43 lines
1.3 KiB
JavaScript
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
|