spookvooper-api/modules/group.js

113 lines
3.9 KiB
JavaScript
Raw Normal View History

2020-12-03 06:43:50 +00:00
// SpookVooper API - modules/Group.js
// Written by Brendan Lane - https://brndnln.dev/
2020-12-03 06:43:50 +00:00
const axios = require('axios');
const groupURL = 'https://api.spookvooper.com/group'
const ecoURL = 'https://api.spookvooper.com/eco'
2020-12-03 06:43:50 +00:00
class Group {
svid = undefined;
#apikey = undefined;
2020-12-03 06:43:50 +00:00
constructor(svid) {
this.svid = svid;
2020-12-03 06:43:50 +00:00
if (!this.svid.startsWith('g-')) {
throw "Error: A group must have a 'g-' or else it is not a group!"
2020-11-28 00:23:10 +00:00
}
2020-12-03 06:43:50 +00:00
}
2020-12-03 06:43:50 +00:00
getGroup() {
return new Promise((resolve, reject) => {
axios.get(`${groupURL}/getGroup?svid=${this.svid}`)
.then(function (response) {
resolve(response.data);
})
.catch(function (error) {
reject(error);
});
});
}
set setApiKey(key) {
this.#apikey = key;
}
2020-12-03 06:43:50 +00:00
sendCredits(amount, to, reason) {
if (typeof to === "string") {
return new Promise((resolve, reject) => {
axios.get(`${ecoURL}/sendTransactionByIds?from=${this.svid}&to=${to}&amount=${amount}&auth=${this.#apikey}&detail=${reason}`)
.then(function (response) {
resolve(response.data);
})
.catch(function (error) {
reject(error);
});
});
} else if (typeof to === "object") {
return new Promise((resolve, reject) => {
axios.get(`${ecoURL}/sendTransactionByIds?from=${this.svid}&to=${to.svid}&amount=${amount}&auth=${this.#apikey}&detail=${reason}`)
.then(function (response) {
resolve(response.data);
})
.catch(function (error) {
reject(error);
});
});
2020-11-28 00:23:10 +00:00
} else {
2020-12-03 06:43:50 +00:00
throw "The 'to' parameter must be a string or an object!";
2020-11-28 00:23:10 +00:00
}
2020-12-03 06:43:50 +00:00
}
doesGroupExist() {
return new Promise((resolve, reject) => {
axios.get(`${groupURL}/doesGroupExist?svid=${this.svid}`)
.then(function (response) {
resolve(response.data);
})
.catch(function (error) {
reject(error);
});
});
}
getGroupMembers() {
return new Promise((resolve, reject) => {
axios.get(`${groupURL}/getGroupMembers?svid=${this.svid}`)
.then(function (response) {
resolve(response.data);
})
.catch(function (error) {
reject(error);
});
});
}
2020-12-03 06:43:50 +00:00
hasGroupPermission(user, permission) {
if (typeof to === "string") {
return new Promise((resolve, reject) => {
axios.get(`${groupURL}/hasGroupPermission?svid=${this.svid}&usersvid=${user}&permission=${permission}`)
.then(function (response) {
resolve(response.data);
})
.catch(function (error) {
reject(error);
});
});
} else if (typeof to === "object") {
return new Promise((resolve, reject) => {
axios.get(`${groupURL}/hasGroupPermission?svid=${this.svid}&usersvid=${user.svid}&permission=${permission}`)
.then(function (response) {
resolve(response.data);
})
.catch(function (error) {
reject(error);
});
});
2020-11-28 00:23:10 +00:00
} else {
2020-12-03 06:43:50 +00:00
throw "Argument user must either be a string or an object"
2020-11-28 00:23:10 +00:00
}
2020-12-03 06:43:50 +00:00
}
}
2020-12-03 06:43:50 +00:00
module.exports = Group