gplayapi-ts
Version:
Google Play API wrapper in TypeScript
1 lines • 4.02 kB
Source Map (JSON)
{"version":3,"sources":["../../../src/api/endpoints/library.ts"],"sourcesContent":["/**\n * Library endpoint handlers for app purchases and delivery\n */\n\nimport { GPNilPayloadError, GPMissingAppDeliveryDataError } from \"../../errors\";\nimport { URL_PURCHASE, URL_DELIVERY } from \"../constants\";\nimport type { \n BuyResponse, \n DeliveryResponse, \n AndroidAppDeliveryData,\n Payload \n} from \"../../gen_proto/googleplay_pb\";\n\nexport class LibraryEndpoint {\n constructor(\n private doAuthedReq: (url: string, options?: RequestInit) => Promise<Payload | null>,\n private getAppDetails: (packageName: string) => Promise<{ versionCode: number }>\n ) {}\n\n async getBuyResponse(packageName: string, version: number): Promise<BuyResponse> {\n const params = new URLSearchParams();\n params.set(\"ot\", \"1\");\n params.set(\"doc\", packageName);\n params.set(\"vc\", version.toString());\n\n const payload = await this.doAuthedReq(`${URL_PURCHASE}?${params.toString()}`, {\n method: \"POST\",\n });\n\n if (!payload) {\n throw new GPNilPayloadError();\n }\n\n if (!payload.buyResponse) {\n throw new GPNilPayloadError(\"Buy response is missing\");\n }\n\n return payload.buyResponse;\n }\n\n async getDeliveryResponse(packageName: string, version: number): Promise<DeliveryResponse> {\n const params = new URLSearchParams();\n params.set(\"ot\", \"1\");\n params.set(\"doc\", packageName);\n params.set(\"vc\", version.toString());\n\n const payload = await this.doAuthedReq(`${URL_DELIVERY}?${params.toString()}`, {\n method: \"GET\",\n });\n\n if (!payload) {\n throw new GPNilPayloadError();\n }\n\n if (!payload.deliveryResponse) {\n throw new GPNilPayloadError(\"Delivery response is missing\");\n }\n\n return payload.deliveryResponse;\n }\n\n async purchase(packageName: string, version?: number): Promise<AndroidAppDeliveryData> {\n let actualVersion = version;\n \n if (!actualVersion) {\n const app = await this.getAppDetails(packageName);\n actualVersion = app.versionCode;\n }\n\n // First, make the buy request\n await this.getBuyResponse(packageName, actualVersion);\n\n // Then, get the delivery response\n const deliveryResponse = await this.getDeliveryResponse(packageName, actualVersion);\n\n const appDeliveryData = deliveryResponse.appDeliveryData;\n if (!appDeliveryData) {\n throw new GPMissingAppDeliveryDataError();\n }\n\n return appDeliveryData;\n }\n}\n"],"mappings":"AAIA,SAAS,mBAAmB,qCAAqC;AACjE,SAAS,cAAc,oBAAoB;AAQpC,MAAM,gBAAgB;AAAA,EACzB,YACY,aACA,eACV;AAFU;AACA;AAAA,EACT;AAAA,EAEH,MAAM,eAAe,aAAqB,SAAuC;AAC7E,UAAM,SAAS,IAAI,gBAAgB;AACnC,WAAO,IAAI,MAAM,GAAG;AACpB,WAAO,IAAI,OAAO,WAAW;AAC7B,WAAO,IAAI,MAAM,QAAQ,SAAS,CAAC;AAEnC,UAAM,UAAU,MAAM,KAAK,YAAY,GAAG,YAAY,IAAI,OAAO,SAAS,CAAC,IAAI;AAAA,MAC3E,QAAQ;AAAA,IACZ,CAAC;AAED,QAAI,CAAC,SAAS;AACV,YAAM,IAAI,kBAAkB;AAAA,IAChC;AAEA,QAAI,CAAC,QAAQ,aAAa;AACtB,YAAM,IAAI,kBAAkB,yBAAyB;AAAA,IACzD;AAEA,WAAO,QAAQ;AAAA,EACnB;AAAA,EAEA,MAAM,oBAAoB,aAAqB,SAA4C;AACvF,UAAM,SAAS,IAAI,gBAAgB;AACnC,WAAO,IAAI,MAAM,GAAG;AACpB,WAAO,IAAI,OAAO,WAAW;AAC7B,WAAO,IAAI,MAAM,QAAQ,SAAS,CAAC;AAEnC,UAAM,UAAU,MAAM,KAAK,YAAY,GAAG,YAAY,IAAI,OAAO,SAAS,CAAC,IAAI;AAAA,MAC3E,QAAQ;AAAA,IACZ,CAAC;AAED,QAAI,CAAC,SAAS;AACV,YAAM,IAAI,kBAAkB;AAAA,IAChC;AAEA,QAAI,CAAC,QAAQ,kBAAkB;AAC3B,YAAM,IAAI,kBAAkB,8BAA8B;AAAA,IAC9D;AAEA,WAAO,QAAQ;AAAA,EACnB;AAAA,EAEA,MAAM,SAAS,aAAqB,SAAmD;AACnF,QAAI,gBAAgB;AAEpB,QAAI,CAAC,eAAe;AAChB,YAAM,MAAM,MAAM,KAAK,cAAc,WAAW;AAChD,sBAAgB,IAAI;AAAA,IACxB;AAGA,UAAM,KAAK,eAAe,aAAa,aAAa;AAGpD,UAAM,mBAAmB,MAAM,KAAK,oBAAoB,aAAa,aAAa;AAElF,UAAM,kBAAkB,iBAAiB;AACzC,QAAI,CAAC,iBAAiB;AAClB,YAAM,IAAI,8BAA8B;AAAA,IAC5C;AAEA,WAAO;AAAA,EACX;AACJ;","names":[]}