UNPKG

@roxza/snow.js

Version:

API that provides many features

229 lines (221 loc) 6.51 kB
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;