UNPKG

cloudkit-js

Version:

A JS library for managing a CloudKit container

85 lines (84 loc) 3.42 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.RequestService = void 0; const https_1 = __importDefault(require("https")); const zlib_1 = __importDefault(require("zlib")); class RequestService { constructor(signService) { this.signService = signService; this.hostname = "api.apple-cloudkit.com"; this.port = 443; } makeRequest(requestPath, payload) { const { dateString, signature } = this.signService.signRequest(payload, requestPath); const requestOptions = { hostname: this.hostname, port: this.port, path: requestPath, method: "POST", headers: { "X-Apple-CloudKit-Request-KeyID": this.signService.getKeyId(), "X-Apple-CloudKit-Request-ISO8601Date": dateString, "X-Apple-CloudKit-Request-SignatureV1": signature } }; return new Promise((resolve, reject) => { const request = https_1.default.request(requestOptions, function (response) { const responseBody = []; response.on("data", function (chunk) { responseBody.push(chunk); }); response.on("end", function () { let buffer = Buffer.concat(responseBody); const encoding = response.headers['content-encoding']; let responseObject = {}; if (encoding === 'gzip') { zlib_1.default.gunzip(buffer, (err, decoded) => { if (err) { return reject(err); } try { responseObject = JSON.parse(decoded.toString('utf8')); } catch (e) { return reject(e); } resolve(responseObject); }); } else if (encoding === 'deflate') { zlib_1.default.inflate(buffer, (err, decoded) => { if (err) { return reject(err); } try { responseObject = JSON.parse(decoded.toString('utf8')); } catch (e) { return reject(e); } resolve(responseObject); }); } else { try { responseObject = JSON.parse(buffer.toString('utf8')); } catch (e) { return reject(e); } resolve(responseObject); } }); }); request.on("error", function (err) { reject(err); }); request.end(payload); }); } } exports.RequestService = RequestService;