gplayapi-ts
Version:
Google Play API wrapper in TypeScript
58 lines • 1.92 kB
JavaScript
import { GPNilPayloadError, GPMissingAppDeliveryDataError } from "../../errors";
import { URL_PURCHASE, URL_DELIVERY } from "../constants";
class LibraryEndpoint {
constructor(doAuthedReq, getAppDetails) {
this.doAuthedReq = doAuthedReq;
this.getAppDetails = getAppDetails;
}
async getBuyResponse(packageName, version) {
const params = new URLSearchParams();
params.set("ot", "1");
params.set("doc", packageName);
params.set("vc", version.toString());
const payload = await this.doAuthedReq(`${URL_PURCHASE}?${params.toString()}`, {
method: "POST"
});
if (!payload) {
throw new GPNilPayloadError();
}
if (!payload.buyResponse) {
throw new GPNilPayloadError("Buy response is missing");
}
return payload.buyResponse;
}
async getDeliveryResponse(packageName, version) {
const params = new URLSearchParams();
params.set("ot", "1");
params.set("doc", packageName);
params.set("vc", version.toString());
const payload = await this.doAuthedReq(`${URL_DELIVERY}?${params.toString()}`, {
method: "GET"
});
if (!payload) {
throw new GPNilPayloadError();
}
if (!payload.deliveryResponse) {
throw new GPNilPayloadError("Delivery response is missing");
}
return payload.deliveryResponse;
}
async purchase(packageName, version) {
let actualVersion = version;
if (!actualVersion) {
const app = await this.getAppDetails(packageName);
actualVersion = app.versionCode;
}
await this.getBuyResponse(packageName, actualVersion);
const deliveryResponse = await this.getDeliveryResponse(packageName, actualVersion);
const appDeliveryData = deliveryResponse.appDeliveryData;
if (!appDeliveryData) {
throw new GPMissingAppDeliveryDataError();
}
return appDeliveryData;
}
}
export {
LibraryEndpoint
};
//# sourceMappingURL=library.mjs.map