@gemeentenijmegen/apiclient
Advanced tools
Comparing version 0.0.0 to 0.0.1
@@ -0,1 +1,3 @@ | ||
/// <reference types="node" /> | ||
import https from 'https'; | ||
export declare class ApiClient { | ||
@@ -36,5 +38,13 @@ private privatekey; | ||
* Request data from the API. | ||
* | ||
* @deprecated This method always performs a POST request. The `postData()` method is | ||
* a drop-in replacement for requestData. For get, use `getData()`. | ||
* | ||
* @returns {string} api response | ||
*/ | ||
requestData(endpoint: string, body: any, headers?: any): Promise<any>; | ||
postData(endpoint: string, body: any, headers?: any): Promise<any>; | ||
getData(endpoint: string, headers?: any): Promise<any>; | ||
private handleErrors; | ||
setupAgent(): Promise<https.Agent>; | ||
} |
@@ -80,16 +80,14 @@ "use strict"; | ||
* Request data from the API. | ||
* | ||
* @deprecated This method always performs a POST request. The `postData()` method is | ||
* a drop-in replacement for requestData. For get, use `getData()`. | ||
* | ||
* @returns {string} api response | ||
*/ | ||
async requestData(endpoint, body, headers) { | ||
if (!this.cert || !this.ca) { | ||
await this.init(); | ||
} | ||
if (!this.cert || !this.ca) { | ||
return Error('Error setting cert or CA'); | ||
} | ||
return this.postData(endpoint, body, headers); | ||
} | ||
async postData(endpoint, body, headers) { | ||
const httpsAgent = await this.setupAgent(); | ||
console.time('request to ' + endpoint); | ||
const key = await this.getPrivateKey(); | ||
const cert = this.cert; | ||
const ca = this.ca; | ||
const httpsAgent = new https_1.default.Agent({ cert, key, ca }); | ||
try { | ||
@@ -106,27 +104,60 @@ const response = await axios_1.default.post(endpoint, body, { | ||
console.timeEnd('request to ' + endpoint); | ||
if (axios_1.default.isAxiosError(error)) { | ||
if (error.response) { | ||
// The request was made and the server responded with a status code | ||
// that falls out of the range of 2xx | ||
console.log('http status for ' + endpoint + ': ' + error.response.status); | ||
} | ||
else if (error.request) { | ||
// The request was made but no response was received | ||
// `error.request` is an instance of XMLHttpRequest in the browser and an instance of | ||
// http.ClientRequest in node.js | ||
console.error(error === null || error === void 0 ? void 0 : error.code); | ||
} | ||
else { | ||
// Something happened in setting up the request that triggered an Error | ||
console.error(error.message); | ||
} | ||
this.handleErrors(error, endpoint); | ||
} | ||
} | ||
async getData(endpoint, headers) { | ||
const httpsAgent = this.setupAgent(); | ||
console.time('GET request to ' + endpoint); | ||
try { | ||
const response = await axios_1.default.get(endpoint, { | ||
httpsAgent: httpsAgent, | ||
headers, | ||
timeout: 2000, | ||
}); | ||
console.timeEnd('GET request to ' + endpoint); | ||
return response.data; | ||
} | ||
catch (error) { | ||
console.timeEnd('GET request to ' + endpoint); | ||
this.handleErrors(error, endpoint); | ||
} | ||
} | ||
handleErrors(error, endpoint) { | ||
if (axios_1.default.isAxiosError(error)) { | ||
if (error.response) { | ||
// The request was made and the server responded with a status code | ||
// that falls out of the range of 2xx | ||
console.log('http status for ' + endpoint + ': ' + error.response.status); | ||
} | ||
else if (error.request) { | ||
// The request was made but no response was received | ||
// `error.request` is an instance of XMLHttpRequest in the browser and an instance of | ||
// http.ClientRequest in node.js | ||
console.error(error === null || error === void 0 ? void 0 : error.code); | ||
} | ||
else { | ||
// Something happened in setting up the request that triggered an Error | ||
console.error(error.message); | ||
} | ||
throw new Error('Het ophalen van gegevens is misgegaan.'); | ||
} | ||
else { | ||
console.error(error.message); | ||
} | ||
throw new Error('Het ophalen van gegevens is misgegaan.'); | ||
} | ||
async setupAgent() { | ||
if (!this.cert || !this.ca) { | ||
await this.init(); | ||
} | ||
if (!this.cert || !this.ca) { | ||
throw Error('Error setting cert or CA'); | ||
} | ||
const key = await this.getPrivateKey(); | ||
const cert = this.cert; | ||
const ca = this.ca; | ||
const httpsAgent = new https_1.default.Agent({ cert, key, ca }); | ||
return httpsAgent; | ||
} | ||
} | ||
exports.ApiClient = ApiClient; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsa0RBQTBCO0FBQzFCLDRFQUE4RjtBQUM5RixvREFBcUUsQ0FBQyxvQkFBb0I7QUFDMUYsa0RBQTBDO0FBRTFDLE1BQWEsU0FBUztJQU1wQjs7Ozs7O01BTUU7SUFDRixZQUFZLElBQWEsRUFBRSxHQUFZLEVBQUUsRUFBVzs7UUFDbEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUM7UUFDdEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDYixJQUFJLENBQUMsUUFBUSxHQUFHLE1BQUEsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsbUNBQUksU0FBUyxDQUFDO1FBQy9ELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBQSxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixtQ0FBSSxTQUFTLENBQUM7SUFDM0QsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxJQUFJO1FBQ1IsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQzlELE1BQU0sS0FBSyxDQUFDLG9FQUFvRSxDQUFDLENBQUM7U0FDbkY7UUFFRCxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzdDLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2hDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJ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Q0gsT0FBTyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDLENBQUM7WUFDMUMsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDO1NBQ3RCO1FBQUMsT0FBTyxLQUF1QixFQUFFO1lBQ2hDLE9BQU8sQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxDQUFDO1lBQzFDLElBQUksZUFBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDN0IsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFO29CQUNsQixtRUFBbUU7b0JBQ25FLHFDQUFxQztvQkFDckMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsR0FBRyxRQUFRLEdBQUcsSUFBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7aUJBRTNFO3FCQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtvQkFDeEIsb0RBQW9EO29CQUNwRCxxRkFBcUY7b0JBQ3JGLGdDQUFnQztvQkFDaEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsSUFBSSxDQUFDLENBQUM7aUJBQzVCO3FCQUFNO29CQUNMLHVFQUF1RTtvQkFDdkUsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7aUJBQzlCO2FBQ0Y7aUJBQU07Z0JBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDOUI7WUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7U0FDM0Q7SUFDSCxDQUFDO0NBQ0Y7QUExSEQsOEJBMEhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGh0dHBzIGZyb20gJ2h0dHBzJztcbmltcG9ydCB7IFNlY3JldHNNYW5hZ2VyQ2xpZW50LCBHZXRTZWNyZXRWYWx1ZUNvbW1hbmQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtc2VjcmV0cy1tYW5hZ2VyJztcbmltcG9ydCB7IFNTTUNsaWVudCwgR2V0UGFyYW1ldGVyQ29tbWFuZCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zc20nOyAvLyBFUyBNb2R1bGVzIGltcG9ydFxuaW1wb3J0IGF4aW9zLCB7IEF4aW9zRXJyb3IgfSBmcm9tICdheGlvcyc7XG5cbmV4cG9ydCBjbGFzcyBBcGlDbGllbnQge1xuICBwcml2YXRlIHByaXZhdGVrZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBjZXJ0bmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGNhbmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGNlcnQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBjYTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogQ29ubmVjdHMgdG8gQVBJJ3MuIFVzZSAucmVxdWVzdERhdGEoKSB0byBnZXQgdGhlIGFjdHVhbCBpbmZvXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfG51bGx9IGNlcnQgb3B0aW9uYWwgY2xpZW50IGNlcnQsIGRlZmF1bHQgaXMgZW52IHZhcmlhYmxlIE1UTFNfQ0xJRU5UX0NFUlRcbiAgICogQHBhcmFtIHtzdHJpbmd8bnVsbH0ga2V5IG9wdGlvbmFsIHByaXZhdGUga2V5IGZvciBjbGllbnQgY2VydCwgZGVmYXVsdCB3aWxsIGdldCBrZXkgZnJvbSBzZWNyZXQgc3RvcmVcbiAgICogQHBhcmFtIHtzdHJpbmd8bnVsbH0gY2Egb3B0aW9uYWwgcm9vdCBjYSBidW5kbGUgdG8gdHJ1c3QsIGRlZmF1bHQgaXMgZW52IHZhcmlhYmxlIE1UTFNfUk9PVF9DQVxuICAqL1xuICBjb25zdHJ1Y3RvcihjZXJ0Pzogc3RyaW5nLCBrZXk/OiBzdHJpbmcsIGNhPzogc3RyaW5nKSB7XG4gICAgdGhpcy5wcml2YXRla2V5ID0ga2V5O1xuICAgIHRoaXMuY2VydCA9IGNlcnQ7XG4gICAgdGhpcy5jYSA9IGNhO1xuICAgIHRoaXMuY2VydG5hbWUgPSBwcm9jZXNzLmVudi5NVExTX0NMSUVOVF9DRVJUX05BTUUgPz8gdW5kZWZpbmVkO1xuICAgIHRoaXMuY2FuYW1lID0gcHJvY2Vzcy5lbnYuTVRMU19ST09UX0NBX05BTUUgPz8gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXQga2V5LCBjZXJ0IGFuZCBjYS4gSWYgeW91IGRvIG5vdCBpbml0LCB5b3UgY2FuIHBhc3MgdGhlbSBpbiB0aGUgY29uc3RydWN0b3IsIG9yXG4gICAqIHRoZXkgd2lsbCBiZSBsYXppbHkgaW5pdGlhbGl6ZWQgaW4gdGhlIGZpcnN0IHJlcXVlc3REYXRhIGNhbGxcbiAgICovXG4gIGFzeW5jIGluaXQoKSB7XG4gICAgaWYgKCEodGhpcy5jZXJ0bmFtZSAmJiB0aGlzLmNhbmFtZSkgJiYgISh0aGlzLmNlcnQgJiYgdGhpcy5jYSkpIHtcbiAgICAgIHRocm93IEVycm9yKCdjbGllbnQgY2VydGlmaWNhdGUgYW5kIENBLCBvciBzc20gcGFyYW1ldGVyIG5hbWVzIG11c3QgYmUgcHJvdmlkZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLnByaXZhdGVrZXkgPSBhd2FpdCB0aGlzLmdldFByaXZhdGVLZXkoKTtcbiAgICBpZiAodGhpcy5jZXJ0bmFtZSAmJiB0aGlzLmNhbmFtZSkge1xuICAgICAgdGhpcy5jZXJ0ID0gdGhpcy5jZXJ0ID8gdGhpcy5jZXJ0IDogYXdhaXQgdGhpcy5nZXRQYXJhbWV0ZXJWYWx1ZSh0aGlzLmNlcnRuYW1lKTtcbiAgICAgIHRoaXMuY2EgPSB0aGlzLmNhID8gdGhpcy5jYSA6IGF3YWl0IHRoaXMuZ2V0UGFyYW1ldGVyVmFsdWUodGhpcy5jYW5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSBjZXJ0aWZpY2F0ZSBwcml2YXRlIGtleSBmcm9tIHNlY3JldHMgbWFuYWdlclxuICAgKlxuICAgKiBAcmV0dXJucyBzdHJpbmcgcHJpdmF0ZSBrZXlcbiAgICovXG4gIGFzeW5jIGdldFByaXZhdGVLZXkoKSB7XG4gICAgaWYgKCF0aGlzLnByaXZhdGVrZXkpIHtcbiAgICAgIGlmICghcHJvY2Vzcy5lbnYuTVRMU19QUklWQVRFX0tFWV9BUk4pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdubyBzZWNyZXQgYXJuIHByb3ZpZGVkJyk7XG4gICAgICB9XG4gICAgICBjb25zdCBzZWNyZXRzTWFuYWdlckNsaWVudCA9IG5ldyBTZWNyZXRzTWFuYWdlckNsaWVudCh7fSk7XG4gICAgICBjb25zdCBjb21tYW5kID0gbmV3IEdldFNlY3JldFZhbHVlQ29tbWFuZCh7IFNlY3JldElkOiBwcm9jZXNzLmVudi5NVExTX1BSSVZBVEVfS0VZX0FSTiB9KTtcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBzZWNyZXRzTWFuYWdlckNsaWVudC5zZW5kKGNvbW1hbmQpO1xuICAgICAgLy8gRGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIHNlY3JldCBpcyBhIHN0cmluZyBvciBiaW5hcnksIG9uZSBvZiB0aGVzZSBmaWVsZHMgd2lsbCBiZSBwb3B1bGF0ZWQuXG4gICAgICBpZiAoZGF0YT8uU2VjcmV0U3RyaW5nKSB7XG4gICAgICAgIHRoaXMucHJpdmF0ZWtleSA9IGRhdGEuU2VjcmV0U3RyaW5nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBzZWNyZXQgdmFsdWUgZm91bmQnKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucHJpdmF0ZWtleTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBwYXJhbWV0ZXIgZnJvbSBwYXJhbWV0ZXIgc3RvcmUuIFRoaXMgaXMgdXNlZFxuICAgKiBhcyBhIHdvcmthcm91bmQgZm9yIHRoZSA0a2IgbGltaXQgZm9yIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgTmFtZSBvZiB0aGUgc3NtIHBhcmFtXG4gICAqIEByZXR1cm5zIHBhcmFtIHZhbHVlXG4gICAqL1xuICBhc3luYyBnZXRQYXJhbWV0ZXJWYWx1ZShuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgU1NNQ2xpZW50KHt9KTtcbiAgICBjb25zdCBjb21tYW5kID0gbmV3IEdldFBhcmFtZXRlckNvbW1hbmQoeyBOYW1lOiBuYW1lIH0pO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnNlbmQoY29tbWFuZCk7XG4gICAgcmV0dXJuIHJlc3BvbnNlPy5QYXJhbWV0ZXI/LlZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcXVlc3QgZGF0YSBmcm9tIHRoZSBBUEkuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IGFwaSByZXNwb25zZVxuICAgKi9cbiAgYXN5bmMgcmVxdWVzdERhdGEoZW5kcG9pbnQ6IHN0cmluZywgYm9keTogYW55LCBoZWFkZXJzPzogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICBpZiAoIXRoaXMuY2VydCB8fCAhdGhpcy5jYSkge1xuICAgICAgYXdhaXQgdGhpcy5pbml0KCk7XG4gICAgfVxuICAgIGlmICghdGhpcy5jZXJ0IHx8ICF0aGlzLmNhKSB7XG4gICAgICByZXR1cm4gRXJyb3IoJ0Vycm9yIHNldHRpbmcgY2VydCBvciBDQScpO1xuICAgIH1cbiAgICBjb25zb2xlLnRpbWUoJ3JlcXVlc3QgdG8gJyArIGVuZHBvaW50KTtcbiAgICBjb25zdCBrZXkgPSBhd2FpdCB0aGlzLmdldFByaXZhdGVLZXkoKTtcbiAgICBjb25zdCBjZXJ0ID0gdGhpcy5jZXJ0O1xuICAgIGNvbnN0IGNhID0gdGhpcy5jYTtcbiAgICBjb25zdCBodHRwc0FnZW50ID0gbmV3IGh0dHBzLkFnZW50KHsgY2VydCwga2V5LCBjYSB9KTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5wb3N0KGVuZHBvaW50LCBib2R5LCB7XG4gICAgICAgIGh0dHBzQWdlbnQ6IGh0dHBzQWdlbnQsXG4gICAgICAgIGhlYWRlcnMsXG4gICAgICAgIHRpbWVvdXQ6IDIwMDAsXG4gICAgICB9KTtcbiAgICAgIGNvbnNvbGUudGltZUVuZCgncmVxdWVzdCB0byAnICsgZW5kcG9pbnQpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSB8IEF4aW9zRXJyb3IpIHtcbiAgICAgIGNvbnNvbGUudGltZUVuZCgncmVxdWVzdCB0byAnICsgZW5kcG9pbnQpO1xuICAgICAgaWYgKGF4aW9zLmlzQXhpb3NFcnJvcihlcnJvcikpIHtcbiAgICAgICAgaWYgKGVycm9yLnJlc3BvbnNlKSB7XG4gICAgICAgICAgLy8gVGhlIHJlcXVlc3Qgd2FzIG1hZGUgYW5kIHRoZSBzZXJ2ZXIgcmVzcG9uZGVkIHdpdGggYSBzdGF0dXMgY29kZVxuICAgICAgICAgIC8vIHRoYXQgZmFsbHMgb3V0IG9mIHRoZSByYW5nZSBvZiAyeHhcbiAgICAgICAgICBjb25zb2xlLmxvZygnaHR0cCBzdGF0dXMgZm9yICcgKyBlbmRwb2ludCArICc6ICcgKyBlcnJvci5yZXNwb25zZS5zdGF0dXMpO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoZXJyb3IucmVxdWVzdCkge1xuICAgICAgICAgIC8vIFRoZSByZXF1ZXN0IHdhcyBtYWRlIGJ1dCBubyByZXNwb25zZSB3YXMgcmVjZWl2ZWRcbiAgICAgICAgICAvLyBgZXJyb3IucmVxdWVzdGAgaXMgYW4gaW5zdGFuY2Ugb2YgWE1MSHR0cFJlcXVlc3QgaW4gdGhlIGJyb3dzZXIgYW5kIGFuIGluc3RhbmNlIG9mXG4gICAgICAgICAgLy8gaHR0cC5DbGllbnRSZXF1ZXN0IGluIG5vZGUuanNcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yPy5jb2RlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBTb21ldGhpbmcgaGFwcGVuZWQgaW4gc2V0dGluZyB1cCB0aGUgcmVxdWVzdCB0aGF0IHRyaWdnZXJlZCBhbiBFcnJvclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBFcnJvcignSGV0IG9waGFsZW4gdmFuIGdlZ2V2ZW5zIGlzIG1pc2dlZ2Fhbi4nKTtcbiAgICB9XG4gIH1cbn0iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsa0RBQTBCO0FBQzFCLDRFQUE4RjtBQUM5RixvREFBcUUsQ0FBQyxvQkFBb0I7QUFDMUYsa0RBQTBDO0FBRTFDLE1BQWEsU0FBUztJQU1wQjs7Ozs7O01BTUU7SUFDRixZQUFZLElBQWEsRUFBRSxHQUFZLEVBQUUsRUFBVzs7UUFDbEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUM7UUFDdEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDYixJQUFJLENBQUMsUUFBUSxHQUFHLE1BQUEsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsbUNBQUksU0FBUyxDQUFDO1FBQy9ELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBQSxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixtQ0FBSSxTQUFTLENBQUM7SUFDM0QsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxJQUFJO1FBQ1IsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQzlELE1BQU0sS0FBSyxDQUFDLG9FQUFvRSxDQUFDLENBQUM7U0FDbkY7UUFFRCxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzdDLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2hDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJ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TyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDOUI7U0FDRjthQUFNO1lBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDOUI7UUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQzFCLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ25CO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQzFCLE1BQU0sS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7U0FDekM7UUFDRCxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN2QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDbkIsTUFBTSxVQUFVLEdBQUcsSUFBSSxlQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7Q0FDRjtBQTVKRCw4QkE0SkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaHR0cHMgZnJvbSAnaHR0cHMnO1xuaW1wb3J0IHsgU2VjcmV0c01hbmFnZXJDbGllbnQsIEdldFNlY3JldFZhbHVlQ29tbWFuZCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zZWNyZXRzLW1hbmFnZXInO1xuaW1wb3J0IHsgU1NNQ2xpZW50LCBHZXRQYXJhbWV0ZXJDb21tYW5kIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXNzbSc7IC8vIEVTIE1vZHVsZXMgaW1wb3J0XG5pbXBvcnQgYXhpb3MsIHsgQXhpb3NFcnJvciB9IGZyb20gJ2F4aW9zJztcblxuZXhwb3J0IGNsYXNzIEFwaUNsaWVudCB7XG4gIHByaXZhdGUgcHJpdmF0ZWtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGNlcnRuYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgY2FuYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgY2VydDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGNhOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBDb25uZWN0cyB0byBBUEkncy4gVXNlIC5yZXF1ZXN0RGF0YSgpIHRvIGdldCB0aGUgYWN0dWFsIGluZm9cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd8bnVsbH0gY2VydCBvcHRpb25hbCBjbGllbnQgY2VydCwgZGVmYXVsdCBpcyBlbnYgdmFyaWFibGUgTVRMU19DTElFTlRfQ0VSVFxuICAgKiBAcGFyYW0ge3N0cmluZ3xudWxsfSBrZXkgb3B0aW9uYWwgcHJpdmF0ZSBrZXkgZm9yIGNsaWVudCBjZXJ0LCBkZWZhdWx0IHdpbGwgZ2V0IGtleSBmcm9tIHNlY3JldCBzdG9yZVxuICAgKiBAcGFyYW0ge3N0cmluZ3xudWxsfSBjYSBvcHRpb25hbCByb290IGNhIGJ1bmRsZSB0byB0cnVzdCwgZGVmYXVsdCBpcyBlbnYgdmFyaWFibGUgTVRMU19ST09UX0NBXG4gICovXG4gIGNvbnN0cnVjdG9yKGNlcnQ/OiBzdHJpbmcsIGtleT86IHN0cmluZywgY2E/OiBzdHJpbmcpIHtcbiAgICB0aGlzLnByaXZhdGVrZXkgPSBrZXk7XG4gICAgdGhpcy5jZXJ0ID0gY2VydDtcbiAgICB0aGlzLmNhID0gY2E7XG4gICAgdGhpcy5jZXJ0bmFtZSA9IHByb2Nlc3MuZW52Lk1UTFNfQ0xJRU5UX0NFUlRfTkFNRSA/PyB1bmRlZmluZWQ7XG4gICAgdGhpcy5jYW5hbWUgPSBwcm9jZXNzLmVudi5NVExTX1JPT1RfQ0FfTkFNRSA/PyB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogSW5pdCBrZXksIGNlcnQgYW5kIGNhLiBJZiB5b3UgZG8gbm90IGluaXQsIHlvdSBjYW4gcGFzcyB0aGVtIGluIHRoZSBjb25zdHJ1Y3Rvciwgb3JcbiAgICogdGhleSB3aWxsIGJlIGxhemlseSBpbml0aWFsaXplZCBpbiB0aGUgZmlyc3QgcmVxdWVzdERhdGEgY2FsbFxuICAgKi9cbiAgYXN5bmMgaW5pdCgpIHtcbiAgICBpZiAoISh0aGlzLmNlcnRuYW1lICYmIHRoaXMuY2FuYW1lKSAmJiAhKHRoaXMuY2VydCAmJiB0aGlzLmNhKSkge1xuICAgICAgdGhyb3cgRXJyb3IoJ2NsaWVudCBjZXJ0aWZpY2F0ZSBhbmQgQ0EsIG9yIHNzbSBwYXJhbWV0ZXIgbmFtZXMgbXVzdCBiZSBwcm92aWRlZCcpO1xuICAgIH1cblxuICAgIHRoaXMucHJpdmF0ZWtleSA9IGF3YWl0IHRoaXMuZ2V0UHJpdmF0ZUtleSgpO1xuICAgIGlmICh0aGlzLmNlcnRuYW1lICYmIHRoaXMuY2FuYW1lKSB7XG4gICAgICB0aGlzLmNlcnQgPSB0aGlzLmNlcnQgPyB0aGlzLmNlcnQgOiBhd2FpdCB0aGlzLmdldFBhcmFtZXRlclZhbHVlKHRoaXMuY2VydG5hbWUpO1xuICAgICAgdGhpcy5jYSA9IHRoaXMuY2EgPyB0aGlzLmNhIDogYXdhaXQgdGhpcy5nZXRQYXJhbWV0ZXJWYWx1ZSh0aGlzLmNhbmFtZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIGNlcnRpZmljYXRlIHByaXZhdGUga2V5IGZyb20gc2VjcmV0cyBtYW5hZ2VyXG4gICAqXG4gICAqIEByZXR1cm5zIHN0cmluZyBwcml2YXRlIGtleVxuICAgKi9cbiAgYXN5bmMgZ2V0UHJpdmF0ZUtleSgpIHtcbiAgICBpZiAoIXRoaXMucHJpdmF0ZWtleSkge1xuICAgICAgaWYgKCFwcm9jZXNzLmVudi5NVExTX1BSSVZBVEVfS0VZX0FSTikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vIHNlY3JldCBhcm4gcHJvdmlkZWQnKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNlY3JldHNNYW5hZ2VyQ2xpZW50ID0gbmV3IFNlY3JldHNNYW5hZ2VyQ2xpZW50KHt9KTtcbiAgICAgIGNvbnN0IGNvbW1hbmQgPSBuZXcgR2V0U2VjcmV0VmFsdWVDb21tYW5kKHsgU2VjcmV0SWQ6IHByb2Nlc3MuZW52Lk1UTFNfUFJJVkFURV9LRVlfQVJOIH0pO1xuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHNlY3JldHNNYW5hZ2VyQ2xpZW50LnNlbmQoY29tbWFuZCk7XG4gICAgICAvLyBEZXBlbmRpbmcgb24gd2hldGhlciB0aGUgc2VjcmV0IGlzIGEgc3RyaW5nIG9yIGJpbmFyeSwgb25lIG9mIHRoZXNlIGZpZWxkcyB3aWxsIGJlIHBvcHVsYXRlZC5cbiAgICAgIGlmIChkYXRhPy5TZWNyZXRTdHJpbmcpIHtcbiAgICAgICAgdGhpcy5wcml2YXRla2V5ID0gZGF0YS5TZWNyZXRTdHJpbmc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHNlY3JldCB2YWx1ZSBmb3VuZCcpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wcml2YXRla2V5O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIHBhcmFtZXRlciBmcm9tIHBhcmFtZXRlciBzdG9yZS4gVGhpcyBpcyB1c2VkXG4gICAqIGFzIGEgd29ya2Fyb3VuZCBmb3IgdGhlIDRrYiBsaW1pdCBmb3IgZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBOYW1lIG9mIHRoZSBzc20gcGFyYW1cbiAgICogQHJldHVybnMgcGFyYW0gdmFsdWVcbiAgICovXG4gIGFzeW5jIGdldFBhcmFtZXRlclZhbHVlKG5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBTU01DbGllbnQoe30pO1xuICAgIGNvbnN0IGNvbW1hbmQgPSBuZXcgR2V0UGFyYW1ldGVyQ29tbWFuZCh7IE5hbWU6IG5hbWUgfSk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuc2VuZChjb21tYW5kKTtcbiAgICByZXR1cm4gcmVzcG9uc2U/LlBhcmFtZXRlcj8uVmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogUmVxdWVzdCBkYXRhIGZyb20gdGhlIEFQSS5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgVGhpcyBtZXRob2QgYWx3YXlzIHBlcmZvcm1zIGEgUE9TVCByZXF1ZXN0LiBUaGUgYHBvc3REYXRhKClgIG1ldGhvZCBpc1xuICAgKiBhIGRyb3AtaW4gcmVwbGFjZW1lbnQgZm9yIHJlcXVlc3REYXRhLiBGb3IgZ2V0LCB1c2UgYGdldERhdGEoKWAuXG4gICAqXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IGFwaSByZXNwb25zZVxuICAgKi9cbiAgYXN5bmMgcmVxdWVzdERhdGEoZW5kcG9pbnQ6IHN0cmluZywgYm9keTogYW55LCBoZWFkZXJzPzogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5wb3N0RGF0YShlbmRwb2ludCwgYm9keSwgaGVhZGVycyk7XG4gIH1cblxuICBhc3luYyBwb3N0RGF0YShlbmRwb2ludDogc3RyaW5nLCBib2R5OiBhbnksIGhlYWRlcnM/OiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IGh0dHBzQWdlbnQgPSBhd2FpdCB0aGlzLnNldHVwQWdlbnQoKTtcbiAgICBjb25zb2xlLnRpbWUoJ3JlcXVlc3QgdG8gJyArIGVuZHBvaW50KTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5wb3N0KGVuZHBvaW50LCBib2R5LCB7XG4gICAgICAgIGh0dHBzQWdlbnQ6IGh0dHBzQWdlbnQsXG4gICAgICAgIGhlYWRlcnMsXG4gICAgICAgIHRpbWVvdXQ6IDIwMDAsXG4gICAgICB9KTtcbiAgICAgIGNvbnNvbGUudGltZUVuZCgncmVxdWVzdCB0byAnICsgZW5kcG9pbnQpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSB8IEF4aW9zRXJyb3IpIHtcbiAgICAgIGNvbnNvbGUudGltZUVuZCgncmVxdWVzdCB0byAnICsgZW5kcG9pbnQpO1xuICAgICAgdGhpcy5oYW5kbGVFcnJvcnMoZXJyb3IsIGVuZHBvaW50KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXREYXRhKGVuZHBvaW50OiBzdHJpbmcsIGhlYWRlcnM/OiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IGh0dHBzQWdlbnQgPSB0aGlzLnNldHVwQWdlbnQoKTtcbiAgICBjb25zb2xlLnRpbWUoJ0dFVCByZXF1ZXN0IHRvICcgKyBlbmRwb2ludCk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MuZ2V0KGVuZHBvaW50LCB7XG4gICAgICAgIGh0dHBzQWdlbnQ6IGh0dHBzQWdlbnQsXG4gICAgICAgIGhlYWRlcnMsXG4gICAgICAgIHRpbWVvdXQ6IDIwMDAsXG4gICAgICB9KTtcbiAgICAgIGNvbnNvbGUudGltZUVuZCgnR0VUIHJlcXVlc3QgdG8gJyArIGVuZHBvaW50KTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkgfCBBeGlvc0Vycm9yKSB7XG4gICAgICBjb25zb2xlLnRpbWVFbmQoJ0dFVCByZXF1ZXN0IHRvICcgKyBlbmRwb2ludCk7XG4gICAgICB0aGlzLmhhbmRsZUVycm9ycyhlcnJvciwgZW5kcG9pbnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRXJyb3JzKGVycm9yOiBhbnksIGVuZHBvaW50OiBzdHJpbmcpIHtcbiAgICBpZiAoYXhpb3MuaXNBeGlvc0Vycm9yKGVycm9yKSkge1xuICAgICAgaWYgKGVycm9yLnJlc3BvbnNlKSB7XG4gICAgICAgIC8vIFRoZSByZXF1ZXN0IHdhcyBtYWRlIGFuZCB0aGUgc2VydmVyIHJlc3BvbmRlZCB3aXRoIGEgc3RhdHVzIGNvZGVcbiAgICAgICAgLy8gdGhhdCBmYWxscyBvdXQgb2YgdGhlIHJhbmdlIG9mIDJ4eFxuICAgICAgICBjb25zb2xlLmxvZygnaHR0cCBzdGF0dXMgZm9yICcgKyBlbmRwb2ludCArICc6ICcgKyBlcnJvci5yZXNwb25zZS5zdGF0dXMpO1xuXG4gICAgICB9IGVsc2UgaWYgKGVycm9yLnJlcXVlc3QpIHtcbiAgICAgICAgLy8gVGhlIHJlcXVlc3Qgd2FzIG1hZGUgYnV0IG5vIHJlc3BvbnNlIHdhcyByZWNlaXZlZFxuICAgICAgICAvLyBgZXJyb3IucmVxdWVzdGAgaXMgYW4gaW5zdGFuY2Ugb2YgWE1MSHR0cFJlcXVlc3QgaW4gdGhlIGJyb3dzZXIgYW5kIGFuIGluc3RhbmNlIG9mXG4gICAgICAgIC8vIGh0dHAuQ2xpZW50UmVxdWVzdCBpbiBub2RlLmpzXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3I/LmNvZGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gU29tZXRoaW5nIGhhcHBlbmVkIGluIHNldHRpbmcgdXAgdGhlIHJlcXVlc3QgdGhhdCB0cmlnZ2VyZWQgYW4gRXJyb3JcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0hldCBvcGhhbGVuIHZhbiBnZWdldmVucyBpcyBtaXNnZWdhYW4uJyk7XG4gIH1cblxuICBhc3luYyBzZXR1cEFnZW50KCkge1xuICAgIGlmICghdGhpcy5jZXJ0IHx8ICF0aGlzLmNhKSB7XG4gICAgICBhd2FpdCB0aGlzLmluaXQoKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmNlcnQgfHwgIXRoaXMuY2EpIHtcbiAgICAgIHRocm93IEVycm9yKCdFcnJvciBzZXR0aW5nIGNlcnQgb3IgQ0EnKTtcbiAgICB9XG4gICAgY29uc3Qga2V5ID0gYXdhaXQgdGhpcy5nZXRQcml2YXRlS2V5KCk7XG4gICAgY29uc3QgY2VydCA9IHRoaXMuY2VydDtcbiAgICBjb25zdCBjYSA9IHRoaXMuY2E7XG4gICAgY29uc3QgaHR0cHNBZ2VudCA9IG5ldyBodHRwcy5BZ2VudCh7IGNlcnQsIGtleSwgY2EgfSk7XG4gICAgcmV0dXJuIGh0dHBzQWdlbnQ7XG4gIH1cbn0iXX0= |
@@ -17,3 +17,2 @@ { | ||
"test": "npx projen test", | ||
"test:update": "npx projen test:update", | ||
"test:watch": "npx projen test:watch", | ||
@@ -26,25 +25,24 @@ "unbump": "npx projen unbump", | ||
"devDependencies": { | ||
"@types/jest": "^28.1.1", | ||
"@types/jest": "^28.1.8", | ||
"@types/node": "^14", | ||
"@typescript-eslint/eslint-plugin": "^5", | ||
"@typescript-eslint/parser": "^5", | ||
"axios-mock-adapter": "^1.21.1", | ||
"dotenv": "^16.0.1", | ||
"axios-mock-adapter": "^1.21.2", | ||
"dotenv": "^16.0.3", | ||
"eslint": "^8", | ||
"eslint-import-resolver-node": "^0.3.6", | ||
"eslint-import-resolver-node": "^0.3.7", | ||
"eslint-import-resolver-typescript": "^2.7.1", | ||
"eslint-plugin-import": "^2.26.0", | ||
"eslint-plugin-import": "^2.27.5", | ||
"jest": "^27", | ||
"jest-aws-client-mock": "^0.0.26", | ||
"jest-junit": "^13", | ||
"json-schema": "^0.4.0", | ||
"npm-check-updates": "^12", | ||
"projen": "^0.58.7", | ||
"npm-check-updates": "^16", | ||
"projen": "^0.67.63", | ||
"standard-version": "^9", | ||
"ts-jest": "^27", | ||
"typescript": "^4.7.3" | ||
"typescript": "^4.9.5" | ||
}, | ||
"dependencies": { | ||
"@aws-sdk/client-secrets-manager": "^3.105.0", | ||
"@aws-sdk/client-ssm": "^3.105.0", | ||
"@aws-sdk/client-secrets-manager": "^3.276.0", | ||
"@aws-sdk/client-ssm": "^3.276.0", | ||
"axios": "^0.27.2" | ||
@@ -57,7 +55,7 @@ }, | ||
}, | ||
"version": "0.0.0", | ||
"version": "0.0.1", | ||
"jest": { | ||
"testMatch": [ | ||
"<rootDir>/src/**/__tests__/**/*.ts?(x)", | ||
"<rootDir>/(test|src)/**/?(*.)+(spec|test).ts?(x)" | ||
"<rootDir>/(test|src)/**/*(*.)@(spec|test).ts?(x)" | ||
], | ||
@@ -101,2 +99,2 @@ "clearMocks": true, | ||
"//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"." | ||
} | ||
} |
@@ -13,3 +13,2 @@ # Gemeente Nijmegen Api Client | ||
The client expects either the following environment parameters to be set, or to be provided a client certificate, private key and root ca: | ||
``` | ||
@@ -22,2 +21,5 @@ ``` | ||
``` | ||
Example use: | ||
``` | ||
// create a client | ||
@@ -27,5 +29,8 @@ const apiClient = new ApiClient(); | ||
await apiClient.init(); | ||
// Use the client to request data | ||
const data = await apiClient.requestData('/test', { data: 'test ' }, {'Content-type': 'application/json'}); | ||
// Use the client to perform a POST request and get responses. | ||
const data = await apiClient.postData('/test', { data: 'test ' }, {'Content-type': 'application/json'}); | ||
// Use the client to perform a GET request and get data. | ||
const data = await apiClient.getData('/test', {'Content-type': 'application/json'}); | ||
``` | ||
The request can throw an error, the actual message is logged, a generic Error is thrown. |
40487
18
209
33