@esponjosin/pokeapi.js
Version:
pokeapi.js is a module that obtains the data from the page https://pokeapi.co and that allows the user to interact with the page in an easier way
74 lines (49 loc) • 1.82 kB
JavaScript
const { writeFileSync, lstatSync, readFileSync, readdirSync } = require('fs'),
{ resolve } = require('path');
class Utils {
upperFirst(str) {
return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase()
}
formatName(str) {
return str.split(' ').join('')
.split('-').join('')
.split('_').join('')
.toLowerCase()
}
createCache(name, id, cacheDir, buffer) {
let self = this;
let mPath = resolve(cacheDir, `./${self.formatName(name)}.${id}.cache`)
try {
writeFileSync(mPath, buffer)
return true
} catch(e) {
return false
}
}
findCache(name, dir) {
let self = this;
let files = readdirSync(dir)
.filter(x => self.isFile(resolve(dir, `./${x}`)))
return files.some(file => isNaN(name) ? file.startsWith(self.formatName(name))
: file.split('.')[1].length == String(name).length && file.split('.')[1] == name)
}
getCache(name, dir) {
let self = this;
let files = readdirSync(dir)
.filter(x => self.isFile(resolve(dir, `./${x}`)))
let file = files[files.findIndex(file => isNaN(name) ? file.startsWith(self.formatName(name)) :
file.split('.')[1].length == String(name).length && file.split('.')[1] == name)]
dir = resolve(dir, `./${file}`)
return JSON.parse(readFileSync(dir, 'utf-8'))
}
checkDir(path) {
return lstatSync(path).isDirectory()
}
isFile(path) {
return lstatSync(path).isFile()
}
wait(ms) {
return new Promise((resolve, reject) => setTimeout(resolve, ms))
}
}
module.exports = Utils;