@roxza/snow.js
Version:
API that provides many features
229 lines (221 loc) • 6.51 kB
JavaScript
const axios = require("axios");
const fs = require("fs");
const base64 = require("base64-tools");
const uri = "https://api.roxza.me/v1/";
class snowApi {
static animal(animal) {
if (!animal) throw new Error("Animal Name is required");
return new Promise((resolve, reject) => {
axios
.get(`${uri}/animals?animal=${animal}`)
.then((res) => {
const data = res.data;
resolve(data);
})
.catch((err) => {
reject(err);
});
});
}
static anime(anime) {
if (!anime) throw new Error("Anime type is required");
return new Promise((resolve, reject) => {
axios
.get(`${uri}/anime?anime=${anime}`)
.then((res) => {
const data = res.data;
resolve(data);
})
.catch((err) => {
reject(err);
});
});
}
static canvas(type, image, path) {
if (!type) throw new Error("Canvas type is required");
if (!image) throw new Error("Image is required");
if (!path) throw new Error("Path is required");
if (!["lesbian", "nonbinary", "bisexual", "pansexual"].includes(type))
throw new Error("invalid type");
return new Promise((resolve, reject) => {
axios
.get(`${uri}/canvas?type=${type}&image=${image}`, {
responseType: "arraybuffer",
})
.then((res) => {
const data = res.data;
fs.writeFile(path, data, (err) => {
if (err) throw err;
resolve(data);
});
})
.catch((err) => {
throw new Error("Image given has not completed loading");
});
});
}
static captcha(difficulty, length, path) {
if (!difficulty) throw new Error("Difficulty is required");
if (!length) throw new Error("Length is required");
return new Promise((resolve, reject) => {
axios
.get(`${uri}/captcha?difficulty=${difficulty}&length=${length}`)
.then((res) => {
const data = res.data;
if (path && data.status == true) {
base64.decode(data.data.image.url, path, function (err, name) {
if (err) return;
});
}
resolve(data);
})
.catch((err) => {
reject(err);
});
});
}
static capture(url, path) {
if (!uri) throw new Error("URI is required");
return new Promise((resolve, reject) => {
axios
.get(`${uri}/capture?link=${url}`, {
responseType: "arraybuffer",
})
.then((getData) => {
const data = getData.data;
try {
if (path) {
fs.writeFile(path, data, (err) => {
if (err) throw err;
resolve(data);
});
}
resolve(data);
} catch (e) {
throw new Error("Something went wrong.");
}
})
.catch((err) => {
throw new Error("Unable to connect to website.");
});
});
}
static covid(country) {
if (!country) throw new Error("Country is required");
if (!["turkey", "world"].includes(country))
throw new Error("Invalid country");
return new Promise((resolve, reject) => {
axios
.get(`${uri}/covid19?countries=${country}`)
.then((res) => {
const data = res.data;
resolve(data);
})
.catch((err) => {
reject(err);
});
});
}
static discord(type, value) {
if (!type) throw new Error("Type is required");
if (!value) throw new Error("Value is required");
if (!["user", "invite"].includes(type)) throw new Error("Invalid type");
return new Promise((resolve, reject) => {
axios
.get(
`${uri}/discord?q=${type}&${
type === "invite" ? "code" : "id"
}=${value}`
)
.then((res) => {
const data = res.data;
resolve(data);
})
.catch((err) => {
reject(err);
});
});
}
static earthquake(country) {
if (!country) throw new Error("Country is required");
if (!["world", "turkey"].includes(country))
throw new Error("Invalid country");
return new Promise((resolve, reject) => {
axios
.get(`${uri}/earthquake?location=${country}`)
.then((res) => {
const data = res.data;
resolve(data);
})
.catch((err) => {
reject(err);
});
});
}
static memes(count) {
if (!count) throw new Error("Count is required");
return new Promise((resolve, reject) => {
axios
.get(`${uri}/memes?count=${count}`)
.then((res) => {
const data = res.data;
resolve(data);
})
.catch((err) => {
reject(err);
});
});
}
static overlay(type, image, path) {
if (!type) throw new Error("Type is required");
if (!image) throw new Error("Image is required");
return new Promise((resolve, reject) => {
axios
.get(`${uri}/overlay?type=${type}&image=${image}`, {
responseType: "arraybuffer",
})
.then((res) => {
const data = res.data;
if (path) {
fs.writeFileSync(path, data);
}
resolve(data);
})
.catch((err) => {
reject(err);
});
});
}
static randomGif(type) {
if (!type) throw new Error("Type is required");
if (!["woman", "man", "anime"].includes(type))
throw new Error("Invalid type");
return new Promise((resolve, reject) => {
axios
.get(`${uri}/random?type=${type}`)
.then((res) => {
const data = res.data;
resolve(data);
})
.catch((err) => {
reject(err);
});
});
}
static csgo(ip, port) {
if (!ip) throw new Error("IP is required");
if (!port) throw new Error("Port is required");
return new Promise((resolve, reject) => {
axios
.get(`${uri}/csgo?ip=${ip}&port=${port}`)
.then((res) => {
const data = res.data;
resolve(data);
})
.catch((err) => {
reject(err);
});
});
}
}
module.exports = snowApi;