refactor: replace deprecated request library with got

Closes #35
This commit is contained in:
Jovan Krunić
2020-12-17 10:38:30 +01:00
parent dfc0a3aed9
commit 9a939e9ccd
4 changed files with 202 additions and 167 deletions

286
package-lock.json generated
View File

@@ -733,16 +733,48 @@
"resolved": "https://registry.npmjs.org/@krlwlfrt/async-pool/-/async-pool-0.3.0.tgz", "resolved": "https://registry.npmjs.org/@krlwlfrt/async-pool/-/async-pool-0.3.0.tgz",
"integrity": "sha512-N4uQIfGTsVw1/fE3Z7DWh878dyFhVkuFYyMiQyW8QTd21yjn91rlub5SERssQXMPKDzYKNGrban3FKSQAtXisQ==" "integrity": "sha512-N4uQIfGTsVw1/fE3Z7DWh878dyFhVkuFYyMiQyW8QTd21yjn91rlub5SERssQXMPKDzYKNGrban3FKSQAtXisQ=="
}, },
"@sindresorhus/is": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-1.2.0.tgz",
"integrity": "sha512-mwhXGkRV5dlvQc4EgPDxDxO6WuMBVymGFd1CA+2Y+z5dG9MNspoQ+AWjl/Ld1MnpCL8AKbosZlDVohqcIwuWsw=="
},
"@types/got": {
"version": "9.6.9",
"resolved": "https://registry.npmjs.org/@types/got/-/got-9.6.9.tgz",
"integrity": "sha512-w+ZE+Ovp6fM+1sHwJB7RN3f3pTJHZkyABuULqbtknqezQyWadFEp5BzOXaZzRqAw2md6/d3ybxQJt+BNgpvzOg==",
"requires": {
"@types/node": "*",
"@types/tough-cookie": "*",
"form-data": "^2.5.0"
}
},
"@types/node": { "@types/node": {
"version": "10.17.21", "version": "10.17.21",
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.21.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.21.tgz",
"integrity": "sha512-PQKsydPxYxF1DsAFWmunaxd3sOi3iMt6Zmx/tgaagHYmwJ/9cRH91hQkeJZaUGWbvn0K5HlSVEXkn5U/llWPpQ==" "integrity": "sha512-PQKsydPxYxF1DsAFWmunaxd3sOi3iMt6Zmx/tgaagHYmwJ/9cRH91hQkeJZaUGWbvn0K5HlSVEXkn5U/llWPpQ=="
}, },
"cacheable-lookup": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-2.0.1.tgz",
"integrity": "sha512-EMMbsiOTcdngM/K6gV/OxF2x0t07+vMOWxZNSCRQMjO2MY2nhZQ6OYhOOpyQrbhqsgtvKGI7hcq6xjnA92USjg==",
"requires": {
"@types/keyv": "^3.1.1",
"keyv": "^4.0.0"
}
},
"commander": { "commander": {
"version": "4.1.1", "version": "4.1.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
"integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA=="
}, },
"decompress-response": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-5.0.0.tgz",
"integrity": "sha512-TLZWWybuxWgoW7Lykv+gq9xvzOsUjQ9tF09Tj6NSTYGMTCHNXzrPnD6Hi+TgZq19PyTAGH4Ll/NIM/eTGglnMw==",
"requires": {
"mimic-response": "^2.0.0"
}
},
"fs-extra": { "fs-extra": {
"version": "9.0.1", "version": "9.0.1",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz",
@@ -754,6 +786,28 @@
"universalify": "^1.0.0" "universalify": "^1.0.0"
} }
}, },
"got": {
"version": "10.5.5",
"resolved": "https://registry.npmjs.org/got/-/got-10.5.5.tgz",
"integrity": "sha512-B13HHkCkTA7KxyxTrFoZfrurBX1fZxjMTKpmIfoVzh0Xfs9aZV7xEfI6EKuERQOIPbomh5LE4xDkfK6o2VXksw==",
"requires": {
"@sindresorhus/is": "^1.0.0",
"@szmarczak/http-timer": "^4.0.0",
"@types/cacheable-request": "^6.0.1",
"cacheable-lookup": "^2.0.0",
"cacheable-request": "^7.0.1",
"decompress-response": "^5.0.0",
"duplexer3": "^0.1.4",
"get-stream": "^5.0.0",
"lowercase-keys": "^2.0.0",
"mimic-response": "^2.0.0",
"p-cancelable": "^2.0.0",
"p-event": "^4.0.0",
"responselike": "^2.0.0",
"to-readable-stream": "^2.0.0",
"type-fest": "^0.9.0"
}
},
"highlight.js": { "highlight.js": {
"version": "10.3.2", "version": "10.3.2",
"resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.3.2.tgz", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.3.2.tgz",
@@ -768,6 +822,11 @@
"universalify": "^1.0.0" "universalify": "^1.0.0"
} }
}, },
"mimic-response": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz",
"integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA=="
},
"shelljs": { "shelljs": {
"version": "0.8.4", "version": "0.8.4",
"resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz",
@@ -790,6 +849,11 @@
"yn": "3.1.1" "yn": "3.1.1"
} }
}, },
"type-fest": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.9.0.tgz",
"integrity": "sha512-j55pzONIdg7rdtJTRZPKIbV0FosUqYdhHK1aAYJIrUvejv1VVyBokrILE8KQDT4emW/1Ev9tx+yZG+AxuSBMmA=="
},
"typedoc": { "typedoc": {
"version": "0.18.0", "version": "0.18.0",
"resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.18.0.tgz", "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.18.0.tgz",
@@ -902,9 +966,9 @@
} }
}, },
"@sindresorhus/is": { "@sindresorhus/is": {
"version": "1.2.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-1.2.0.tgz", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.0.0.tgz",
"integrity": "sha512-mwhXGkRV5dlvQc4EgPDxDxO6WuMBVymGFd1CA+2Y+z5dG9MNspoQ+AWjl/Ld1MnpCL8AKbosZlDVohqcIwuWsw==" "integrity": "sha512-FyD2meJpDPjyNQejSjvnhpgI/azsQkA4lGbuu5BQZfjvJ9cbRZXzeWL2HceCekW4lixO9JPesIIQkSoLjeJHNQ=="
}, },
"@szmarczak/http-timer": { "@szmarczak/http-timer": {
"version": "4.0.5", "version": "4.0.5",
@@ -1049,16 +1113,6 @@
"@types/node": "*" "@types/node": "*"
} }
}, },
"@types/got": {
"version": "9.6.9",
"resolved": "https://registry.npmjs.org/@types/got/-/got-9.6.9.tgz",
"integrity": "sha512-w+ZE+Ovp6fM+1sHwJB7RN3f3pTJHZkyABuULqbtknqezQyWadFEp5BzOXaZzRqAw2md6/d3ybxQJt+BNgpvzOg==",
"requires": {
"@types/node": "*",
"@types/tough-cookie": "*",
"form-data": "^2.5.0"
}
},
"@types/http-cache-semantics": { "@types/http-cache-semantics": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz", "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz",
@@ -1117,15 +1171,6 @@
"resolved": "https://registry.npmjs.org/@types/mustache/-/mustache-4.0.0.tgz", "resolved": "https://registry.npmjs.org/@types/mustache/-/mustache-4.0.0.tgz",
"integrity": "sha512-AVBOcLJenbpCIJcHUvGWj+YMlaiwcFlGK1YEH2mePXkB5B/vQLrFkHG9IpBH71mXnkbibc4V8Nnn1wJSxcgCEA==" "integrity": "sha512-AVBOcLJenbpCIJcHUvGWj+YMlaiwcFlGK1YEH2mePXkB5B/vQLrFkHG9IpBH71mXnkbibc4V8Nnn1wJSxcgCEA=="
}, },
"@types/nock": {
"version": "10.0.3",
"resolved": "https://registry.npmjs.org/@types/nock/-/nock-10.0.3.tgz",
"integrity": "sha512-OthuN+2FuzfZO3yONJ/QVjKmLEuRagS9TV9lEId+WHL9KhftYG+/2z+pxlr0UgVVXSpVD8woie/3fzQn8ft/Ow==",
"dev": true,
"requires": {
"@types/node": "*"
}
},
"@types/node": { "@types/node": {
"version": "10.17.44", "version": "10.17.44",
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.44.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.44.tgz",
@@ -1388,9 +1433,9 @@
"integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
}, },
"aws4": { "aws4": {
"version": "1.9.1", "version": "1.11.0",
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
"integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==" "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA=="
}, },
"balanced-match": { "balanced-match": {
"version": "1.0.0", "version": "1.0.0",
@@ -1490,13 +1535,9 @@
"integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
}, },
"cacheable-lookup": { "cacheable-lookup": {
"version": "2.0.1", "version": "5.0.4",
"resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-2.0.1.tgz", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz",
"integrity": "sha512-EMMbsiOTcdngM/K6gV/OxF2x0t07+vMOWxZNSCRQMjO2MY2nhZQ6OYhOOpyQrbhqsgtvKGI7hcq6xjnA92USjg==", "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA=="
"requires": {
"@types/keyv": "^3.1.1",
"keyv": "^4.0.0"
}
}, },
"cacheable-request": { "cacheable-request": {
"version": "7.0.1", "version": "7.0.1",
@@ -1707,13 +1748,6 @@
"integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=",
"requires": { "requires": {
"mimic-response": "^1.0.0" "mimic-response": "^1.0.0"
},
"dependencies": {
"mimic-response": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
"integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ=="
}
} }
}, },
"code-error-fragment": { "code-error-fragment": {
@@ -2085,11 +2119,18 @@
} }
}, },
"decompress-response": { "decompress-response": {
"version": "5.0.0", "version": "6.0.0",
"resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-5.0.0.tgz", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
"integrity": "sha512-TLZWWybuxWgoW7Lykv+gq9xvzOsUjQ9tF09Tj6NSTYGMTCHNXzrPnD6Hi+TgZq19PyTAGH4Ll/NIM/eTGglnMw==", "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
"requires": { "requires": {
"mimic-response": "^2.0.0" "mimic-response": "^3.1.0"
},
"dependencies": {
"mimic-response": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
"integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ=="
}
} }
}, },
"deep-eql": { "deep-eql": {
@@ -2100,20 +2141,6 @@
"type-detect": "^4.0.0" "type-detect": "^4.0.0"
} }
}, },
"deep-equal": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz",
"integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==",
"dev": true,
"requires": {
"is-arguments": "^1.0.4",
"is-date-object": "^1.0.1",
"is-regex": "^1.0.4",
"object-is": "^1.0.1",
"object-keys": "^1.1.1",
"regexp.prototype.flags": "^1.2.0"
}
},
"deepmerge": { "deepmerge": {
"version": "4.2.2", "version": "4.2.2",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
@@ -3099,32 +3126,21 @@
} }
}, },
"got": { "got": {
"version": "10.5.5", "version": "11.8.1",
"resolved": "https://registry.npmjs.org/got/-/got-10.5.5.tgz", "resolved": "https://registry.npmjs.org/got/-/got-11.8.1.tgz",
"integrity": "sha512-B13HHkCkTA7KxyxTrFoZfrurBX1fZxjMTKpmIfoVzh0Xfs9aZV7xEfI6EKuERQOIPbomh5LE4xDkfK6o2VXksw==", "integrity": "sha512-9aYdZL+6nHmvJwHALLwKSUZ0hMwGaJGYv3hoPLPgnT8BoBXm1SjnZeky+91tfwJaDzun2s4RsBRy48IEYv2q2Q==",
"requires": { "requires": {
"@sindresorhus/is": "^1.0.0", "@sindresorhus/is": "^4.0.0",
"@szmarczak/http-timer": "^4.0.0", "@szmarczak/http-timer": "^4.0.5",
"@types/cacheable-request": "^6.0.1", "@types/cacheable-request": "^6.0.1",
"cacheable-lookup": "^2.0.0", "@types/responselike": "^1.0.0",
"cacheable-lookup": "^5.0.3",
"cacheable-request": "^7.0.1", "cacheable-request": "^7.0.1",
"decompress-response": "^5.0.0", "decompress-response": "^6.0.0",
"duplexer3": "^0.1.4", "http2-wrapper": "^1.0.0-beta.5.2",
"get-stream": "^5.0.0",
"lowercase-keys": "^2.0.0", "lowercase-keys": "^2.0.0",
"mimic-response": "^2.0.0",
"p-cancelable": "^2.0.0", "p-cancelable": "^2.0.0",
"p-event": "^4.0.0", "responselike": "^2.0.0"
"responselike": "^2.0.0",
"to-readable-stream": "^2.0.0",
"type-fest": "^0.9.0"
},
"dependencies": {
"type-fest": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.9.0.tgz",
"integrity": "sha512-j55pzONIdg7rdtJTRZPKIbV0FosUqYdhHK1aAYJIrUvejv1VVyBokrILE8KQDT4emW/1Ev9tx+yZG+AxuSBMmA=="
}
} }
}, },
"graceful-fs": { "graceful-fs": {
@@ -3161,12 +3177,25 @@
"integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
}, },
"har-validator": { "har-validator": {
"version": "5.1.3", "version": "5.1.5",
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
"integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
"requires": { "requires": {
"ajv": "^6.5.5", "ajv": "^6.12.3",
"har-schema": "^2.0.0" "har-schema": "^2.0.0"
},
"dependencies": {
"ajv": {
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"requires": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
}
}
} }
}, },
"hard-rejection": { "hard-rejection": {
@@ -3282,6 +3311,22 @@
"resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.1.4.tgz", "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.1.4.tgz",
"integrity": "sha512-MZVIsLKGVOVE1KEnldppe6Ij+vmemMuApDfjhVSLzyYP+td0bREEYyAoIw9yFePoBXManCuBqmiNP5FqJS5Xkg==" "integrity": "sha512-MZVIsLKGVOVE1KEnldppe6Ij+vmemMuApDfjhVSLzyYP+td0bREEYyAoIw9yFePoBXManCuBqmiNP5FqJS5Xkg=="
}, },
"http2-wrapper": {
"version": "1.0.0-beta.5.2",
"resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.0-beta.5.2.tgz",
"integrity": "sha512-xYz9goEyBnC8XwXDTuC/MZ6t+MrKVQZOk4s7+PaDkwIsQd8IwqvM+0M6bA/2lvG8GHXcPdf+MejTUeO2LCPCeQ==",
"requires": {
"quick-lru": "^5.1.1",
"resolve-alpn": "^1.0.0"
},
"dependencies": {
"quick-lru": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
"integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA=="
}
}
},
"humanize-string": { "humanize-string": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/humanize-string/-/humanize-string-2.1.0.tgz", "resolved": "https://registry.npmjs.org/humanize-string/-/humanize-string-2.1.0.tgz",
@@ -3914,6 +3959,12 @@
"integrity": "sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=", "integrity": "sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=",
"dev": true "dev": true
}, },
"lodash.set": {
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz",
"integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=",
"dev": true
},
"lodash.template": { "lodash.template": {
"version": "4.5.0", "version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz",
@@ -4215,9 +4266,9 @@
} }
}, },
"mimic-response": { "mimic-response": {
"version": "2.1.0", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
"integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==" "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ=="
}, },
"min-indent": { "min-indent": {
"version": "1.0.1", "version": "1.0.1",
@@ -4461,29 +4512,24 @@
"integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw=="
}, },
"nock": { "nock": {
"version": "10.0.6", "version": "13.0.5",
"resolved": "https://registry.npmjs.org/nock/-/nock-10.0.6.tgz", "resolved": "https://registry.npmjs.org/nock/-/nock-13.0.5.tgz",
"integrity": "sha512-b47OWj1qf/LqSQYnmokNWM8D88KvUl2y7jT0567NB3ZBAZFz2bWp2PC81Xn7u8F2/vJxzkzNZybnemeFa7AZ2w==", "integrity": "sha512-1ILZl0zfFm2G4TIeJFW0iHknxr2NyA+aGCMTjDVUsBY4CkMRispF1pfIYkTRdAR/3Bg+UzdEuK0B6HczMQZcCg==",
"dev": true, "dev": true,
"requires": { "requires": {
"chai": "^4.1.2",
"debug": "^4.1.0", "debug": "^4.1.0",
"deep-equal": "^1.0.0",
"json-stringify-safe": "^5.0.1", "json-stringify-safe": "^5.0.1",
"lodash": "^4.17.5", "lodash.set": "^4.3.2",
"mkdirp": "^0.5.0", "propagate": "^2.0.0"
"propagate": "^1.0.0",
"qs": "^6.5.1",
"semver": "^5.5.0"
}, },
"dependencies": { "dependencies": {
"debug": { "debug": {
"version": "4.1.1", "version": "4.3.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"ms": "^2.1.1" "ms": "2.1.2"
} }
}, },
"ms": { "ms": {
@@ -4491,12 +4537,6 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true "dev": true
},
"semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"dev": true
} }
} }
}, },
@@ -4767,16 +4807,6 @@
"integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==",
"dev": true "dev": true
}, },
"object-is": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz",
"integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==",
"dev": true,
"requires": {
"define-properties": "^1.1.3",
"es-abstract": "^1.17.5"
}
},
"object-keys": { "object-keys": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
@@ -5099,9 +5129,9 @@
} }
}, },
"propagate": { "propagate": {
"version": "1.0.0", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/propagate/-/propagate-1.0.0.tgz", "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz",
"integrity": "sha1-AMLa7t2iDofjeCs0Stuhzd1q1wk=", "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==",
"dev": true "dev": true
}, },
"proxy-addr": { "proxy-addr": {
@@ -5238,16 +5268,6 @@
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz",
"integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew=="
}, },
"regexp.prototype.flags": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz",
"integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==",
"dev": true,
"requires": {
"define-properties": "^1.1.3",
"es-abstract": "^1.17.0-next.1"
}
},
"release-zalgo": { "release-zalgo": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz",
@@ -5307,11 +5327,6 @@
"version": "6.5.2", "version": "6.5.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
},
"uuid": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
"integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
} }
} }
}, },
@@ -5353,6 +5368,11 @@
"path-parse": "^1.0.6" "path-parse": "^1.0.6"
} }
}, },
"resolve-alpn": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.0.0.tgz",
"integrity": "sha512-rTuiIEqFmGxne4IovivKSDzld2lWW9QCjqv80SYjPgf+gS35eaCAjaP54CCwGAwBtnCsvNLYtqxe1Nw+i6JEmA=="
},
"resolve-from": { "resolve-from": {
"version": "5.0.0", "version": "5.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",

View File

@@ -24,7 +24,6 @@
"@types/express": "4.17.8", "@types/express": "4.17.8",
"@types/morgan": "1.9.2", "@types/morgan": "1.9.2",
"@types/node": "10.17.44", "@types/node": "10.17.44",
"@types/request": "2.48.5",
"@types/traverse": "0.6.32", "@types/traverse": "0.6.32",
"@types/uuid": "3.4.7", "@types/uuid": "3.4.7",
"@types/wait-on": "4.0.0", "@types/wait-on": "4.0.0",
@@ -33,10 +32,10 @@
"commander": "6.2.0", "commander": "6.2.0",
"express": "4.17.1", "express": "4.17.1",
"fast-clone": "1.5.13", "fast-clone": "1.5.13",
"got": "11.8.1",
"json-schema": "0.2.5", "json-schema": "0.2.5",
"moment": "2.29.1", "moment": "2.29.1",
"morgan": "1.10.0", "morgan": "1.10.0",
"request": "2.88.2",
"traverse": "0.6.6", "traverse": "0.6.6",
"uuid": "3.4.0", "uuid": "3.4.0",
"wait-on": "4.0.2" "wait-on": "4.0.2"
@@ -50,14 +49,13 @@
"@types/chai-spies": "1.0.2", "@types/chai-spies": "1.0.2",
"@types/fs-extra": "8.1.1", "@types/fs-extra": "8.1.1",
"@types/mocha": "8.0.3", "@types/mocha": "8.0.3",
"@types/nock": "10.0.3",
"chai": "4.2.0", "chai": "4.2.0",
"chai-as-promised": "7.1.1", "chai-as-promised": "7.1.1",
"chai-spies": "1.0.0", "chai-spies": "1.0.0",
"conventional-changelog-cli": "2.1.0", "conventional-changelog-cli": "2.1.0",
"fs-extra": "8.1.0", "fs-extra": "8.1.0",
"mocha": "8.1.3", "mocha": "8.1.3",
"nock": "10.0.6", "nock": "13.0.5",
"nyc": "15.1.0", "nyc": "15.1.0",
"prepend-file-cli": "1.0.6", "prepend-file-cli": "1.0.6",
"rimraf": "3.0.2", "rimraf": "3.0.2",

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (C) 2019 StApps * Copyright (C) 2019-2020 StApps
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free * under the terms of the GNU General Public License as published by the Free
* Software Foundation, version 3. * Software Foundation, version 3.
@@ -12,12 +12,18 @@
* You should have received a copy of the GNU General Public License along with * You should have received a copy of the GNU General Public License along with
* this program. If not, see <https://www.gnu.org/licenses/>. * this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
import request from 'request'; import got, {OptionsOfJSONResponseBody, Response as GotResponse} from 'got';
/** /**
* Request options that requires a url * Request options that requires a url
* Note: adjust request options of got library for backward compatibility
*/ */
export interface RequestOptions extends request.CoreOptions { export interface RequestOptions extends Omit<OptionsOfJSONResponseBody, 'json' | 'body'> {
/**
* Body of the request
*/
// tslint:disable-next-line:no-any TODO: Use a specific type?
body?: any;
/** /**
* Target URL of the request * Target URL of the request
*/ */
@@ -27,7 +33,7 @@ export interface RequestOptions extends request.CoreOptions {
/** /**
* Response with generic for the type of body that is returned from the request * Response with generic for the type of body that is returned from the request
*/ */
export interface Response<TYPE_OF_BODY> extends request.Response { export interface Response<TYPE_OF_BODY> extends GotResponse {
/** /**
* Typed body of the response * Typed body of the response
*/ */
@@ -46,33 +52,34 @@ export class HttpClient {
async request<TYPE_OF_BODY>( async request<TYPE_OF_BODY>(
requestConfig: RequestOptions, requestConfig: RequestOptions,
): Promise<Response<TYPE_OF_BODY>> { ): Promise<Response<TYPE_OF_BODY>> {
const params: request.CoreOptions = { const params: OptionsOfJSONResponseBody = {
body: {}, followRedirect: true,
followAllRedirects: true,
json: true,
method: 'GET', method: 'GET',
responseType: 'json',
}; };
if (typeof requestConfig.body !== 'undefined') { if (typeof requestConfig.body !== 'undefined') {
params.body = requestConfig.body; params.json = requestConfig.body;
} }
if (typeof requestConfig.headers !== 'undefined') { if (typeof requestConfig.headers !== 'undefined') {
params.headers = requestConfig.headers; params.headers = requestConfig.headers;
} }
if (requestConfig.method !== 'GET') { if (typeof requestConfig.method !== 'undefined') {
params.method = requestConfig.method; params.method = requestConfig.method;
} }
let response: Response<TYPE_OF_BODY>;
try {
response = await got(requestConfig.url.toString(), params);
} catch (err) {
if (typeof err.response === 'undefined') {
throw err;
}
// if there is a response (e.g. response with statusCode 404 etc.) provide it
response = err.response;
}
return new Promise((resolve, reject) => { return response;
request(requestConfig.url.toString(), params, (err, response) => {
if (err) {
return reject(err);
}
resolve(response);
});
});
} }
} }

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (C) 2018 StApps * Copyright (C) 2018-2020 StApps
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free * under the terms of the GNU General Public License as published by the Free
* Software Foundation, version 3. * Software Foundation, version 3.
@@ -17,6 +17,8 @@ import {suite, test} from '@testdeck/mocha';
import nock from 'nock'; import nock from 'nock';
import {HttpClient} from '../src/http-client'; import {HttpClient} from '../src/http-client';
// TODO: use after each to clean up the nock (then there is no need for numerated resource links)
@suite() @suite()
export class HttpClientSpec { export class HttpClientSpec {
@@ -27,6 +29,10 @@ export class HttpClientSpec {
}).not.to.throw(); }).not.to.throw();
} }
async after() {
nock.cleanAll();
}
@test @test
async request() { async request() {
const client = new HttpClient(); const client = new HttpClient();
@@ -51,10 +57,7 @@ export class HttpClientSpec {
.reply(200, 'foo'); .reply(200, 'foo');
const response = await client.request({ const response = await client.request({
body: { url: new URL('http://www.example.com/resource')
foo: 'bar',
},
url: new URL('http://www.example.com/resource'),
}); });
expect(response.body).to.be.equal('foo'); expect(response.body).to.be.equal('foo');
@@ -63,17 +66,24 @@ export class HttpClientSpec {
@test @test
async requestWithError() { async requestWithError() {
const client = new HttpClient(); const client = new HttpClient();
let caughtErr;
nock('http://www.example.com') nock('http://www.example.com')
.get('/resource') .get('/resource')
.replyWithError('foo'); .replyWithError('foo');
return client.request({ try {
body: { await client.request({
foo: 'bar', body: {
}, foo: 'bar',
url: new URL('http://www.example.com/resource'), },
}).should.be.rejected; url: new URL('http://www.example.com/resource'),
});
} catch (err) {
caughtErr = err;
}
expect(caughtErr).not.to.be.undefined;
} }
@test @test