@isor/sink
Version:
Library for working with sms-activate.ru
68 lines (53 loc) • 1.44 kB
text/typescript
import Axios from "axios";
import { Equal } from "./equal";
import { ServiceOverseer } from "./overseer";
import { Service } from "./service";
const BASE_URL = "https://api.sms-activate.org/stubs/handler_api.php";
export class Sink {
constructor(private accessToken: string) {}
async balance() {
const response = await Axios.get(BASE_URL, {
params: {
api_key: this.accessToken,
action: "getBalance",
},
});
const [targetId, balance] = response.data.split(":");
Equal(targetId);
return {
raw: response.data,
balance: parseFloat(balance),
currency: "RUB",
};
}
async serviceInfo(service: Service) {
const response = await Axios.get(BASE_URL, {
params: {
api_key: this.accessToken,
action: "getPrices",
service: service,
country: 0,
},
});
Equal(response.data);
const { cost, count } = response.data["0"][service];
return {
price: cost,
currency: "RUB",
stock: count,
};
}
async lease(service: Service): Promise<ServiceOverseer> {
const response = await Axios.get(BASE_URL, {
params: {
api_key: this.accessToken,
action: "getNumber",
service,
forward: 0,
},
});
const [targetId, id, phone] = response.data.split(":");
Equal(targetId);
return new ServiceOverseer(this.accessToken, id, phone);
}
}