sms-activate-org
Version:
A full NodeJS API for sms-activate.org
42 lines (35 loc) • 1.09 kB
text/typescript
import { readFileSync, existsSync } from 'fs';
import { singleton } from 'tsyringe';
export interface IService {
code: string;
name: string;
f: string;
}
()
export class Services {
private services: IService[] = [];
constructor() {
const SERVICE_FILE = `${__dirname}/services.json`;
if (!existsSync(SERVICE_FILE)) throw new Error('Services file not found.');
try {
const data = readFileSync(SERVICE_FILE, 'utf8');
this.services = JSON.parse(data);
} catch (err) {
throw err;
}
}
public get(name: string) {
const lowered = name.toLowerCase();
if (lowered.length == 2) return lowered;
const services = this.services.filter((service) =>
service.name.toLowerCase().includes(lowered)
);
if (services.length == 1) return services[0].code;
if (services.length == 0) throw new Error(`Service not found: ${name}`);
throw new Error(
`Multiple services found: ${services
.map((s) => `[${s.name}] (${s.code})`)
.join(', ')}`
);
}
}