52 строки
1.3 KiB
JavaScript
52 строки
1.3 KiB
JavaScript
const packageJson = require("./package.json");
|
|
|
|
module.exports = {
|
|
async request(verb, url, requestBody, callback) {
|
|
if (typeof requestBody === "function") {
|
|
callback = requestBody;
|
|
requestBody = null;
|
|
}
|
|
|
|
const headers = {
|
|
"Accept": "application/json",
|
|
"Content-Type": "application/json",
|
|
"X-CodePush-Plugin-Name": packageJson.name,
|
|
"X-CodePush-Plugin-Version": packageJson.version,
|
|
"X-CodePush-SDK-Version": packageJson.dependencies["code-push"]
|
|
};
|
|
|
|
if (requestBody && typeof requestBody === "object") {
|
|
requestBody = JSON.stringify(requestBody);
|
|
}
|
|
|
|
try {
|
|
const response = await fetch(url, {
|
|
method: getHttpMethodName(verb),
|
|
headers: headers,
|
|
body: requestBody
|
|
});
|
|
|
|
const statusCode = response.status;
|
|
const body = await response.text();
|
|
callback(null, { statusCode, body });
|
|
} catch (err) {
|
|
callback(err);
|
|
}
|
|
}
|
|
};
|
|
|
|
function getHttpMethodName(verb) {
|
|
// Note: This should stay in sync with the enum definition in
|
|
// https://github.com/microsoft/code-push/blob/master/sdk/script/acquisition-sdk.ts#L6
|
|
return [
|
|
"GET",
|
|
"HEAD",
|
|
"POST",
|
|
"PUT",
|
|
"DELETE",
|
|
"TRACE",
|
|
"OPTIONS",
|
|
"CONNECT",
|
|
"PATCH"
|
|
][verb];
|
|
} |