dff-util
Version:
DesignForFeature Utilities
214 lines (213 loc) • 10.2 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Http = exports.HttpMethods = exports.BaseHeaders = exports.HttpHeaders = exports.RespType = void 0;
const util_1 = require("./util");
var RespType;
(function (RespType) {
RespType["JSON"] = "json";
RespType["TEXT"] = "text";
RespType["BLOB"] = "blob";
RespType["FORM_DATA"] = "formData";
RespType["ARRAY_BUFFER"] = "arrayBuffer";
})(RespType || (exports.RespType = RespType = {}));
exports.HttpHeaders = {
'Content-Type': 'application/json',
authorization: null,
'request-id': null,
};
exports.BaseHeaders = {
authorization: null,
'request-id': null,
};
exports.HttpMethods = {
GET: "GET",
POST: "POST",
PUT: "PUT",
DELETE: "DELETE"
};
class Http {
static RespData(response_1) {
return __awaiter(this, arguments, void 0, function* (response, type = RespType.JSON) {
if (!response.ok) {
const data = yield response.text();
if ((data && data.startsWith('{')) || data.startsWith('[')) {
throw JSON.parse(data);
}
else {
throw data;
}
}
switch (type) {
case RespType.JSON:
return yield (response === null || response === void 0 ? void 0 : response.json());
case RespType.TEXT:
return yield (response === null || response === void 0 ? void 0 : response.text());
case RespType.BLOB:
return yield (response === null || response === void 0 ? void 0 : response.blob());
case RespType.FORM_DATA:
return yield (response === null || response === void 0 ? void 0 : response.formData());
case RespType.ARRAY_BUFFER:
return yield (response === null || response === void 0 ? void 0 : response.arrayBuffer());
case RespType.BLOB:
return yield (response === null || response === void 0 ? void 0 : response.blob());
default:
return null;
}
});
}
static Get(url_1, params_1, headers_1) {
return __awaiter(this, arguments, void 0, function* (url, params, headers, type = RespType.JSON) {
url = url.startsWith('http') ? url : Http.API_BASE_URL + url;
const fullUrl = params ? `${url}?${new URLSearchParams(params).toString()}` : url;
headers = headers || exports.HttpHeaders;
headers['request-id'] = headers['request-id'] || (0, util_1.AppUUID4)();
try {
const requestOptions = { method: 'GET', headers: headers };
const response = yield fetch(fullUrl, requestOptions);
return yield Http.RespData(response, type);
}
catch (error) {
throw { url: fullUrl, requestId: headers['request-id'], error: error };
}
});
}
static Post(url_1, data_1, headers_1) {
return __awaiter(this, arguments, void 0, function* (url, data, headers, type = RespType.JSON) {
url = url.startsWith('http') ? url : Http.API_BASE_URL + url;
headers = headers || exports.HttpHeaders;
headers['request-id'] = headers['request-id'] || (0, util_1.AppUUID4)();
try {
const requestOptions = { method: 'POST', body: JSON.stringify(data), headers: headers };
const response = yield fetch(url, requestOptions);
return yield Http.RespData(response, type);
}
catch (error) {
throw { url: url, requestId: headers['request-id'], body: data, error: error };
}
});
}
static Put(url_1, data_1, headers_1) {
return __awaiter(this, arguments, void 0, function* (url, data, headers, type = RespType.JSON) {
url = url.startsWith('http') ? url : Http.API_BASE_URL + url;
headers = headers || exports.HttpHeaders;
headers['request-id'] = headers['request-id'] || (0, util_1.AppUUID4)();
try {
const requestOptions = { method: 'PUT', body: JSON.stringify(data), headers: headers };
const response = yield fetch(url, requestOptions);
return yield Http.RespData(response, type);
}
catch (error) {
throw { url: url, requestId: headers['request-id'], body: data, error: error };
}
});
}
static Delete(url_1, params_1, headers_1) {
return __awaiter(this, arguments, void 0, function* (url, params, headers, type = RespType.JSON) {
url = url.startsWith('http') ? url : Http.API_BASE_URL + url;
const fullUrl = params ? `${url}?${new URLSearchParams(params).toString()}` : url;
headers = headers || exports.HttpHeaders;
headers['request-id'] = headers['request-id'] || (0, util_1.AppUUID4)();
try {
const requestOptions = { method: 'DELETE', headers: headers };
const response = yield fetch(fullUrl, requestOptions);
return yield Http.RespData(response, type);
}
catch (error) {
throw { url: fullUrl, requestId: headers['request-id'], error: error };
}
});
}
static Token(sessionInfo_1, appKey_1, apiKey_1) {
return __awaiter(this, arguments, void 0, function* (sessionInfo, appKey, apiKey, type = RespType.TEXT) {
const url = `${Http.API_BASE_URL}${Http.TOKEN_URL}`;
const params = { key: appKey, payload: JSON.stringify(sessionInfo) };
const fullUrl = `${url}?${new URLSearchParams(params).toString()}`;
const headers = Object.assign(Object.assign({}, Headers), { 'X-API-KEY': apiKey || '' });
headers['request-id'] = headers['request-id'] || (0, util_1.AppUUID4)();
try {
const requestOptions = { method: 'GET', headers: headers };
const response = yield fetch(fullUrl, requestOptions);
return yield Http.RespData(response, type);
}
catch (error) {
throw { url: fullUrl, requestId: headers['request-id'], error: error };
}
});
}
static FormUpload(url_1, file_1) {
return __awaiter(this, arguments, void 0, function* (url, file, isHeadersAddMultiForm = false, data = {}, headers = exports.BaseHeaders, method = 'PUT', type = RespType.JSON) {
url = url.startsWith('http') ? url : Http.API_BASE_URL + url;
const formData = new FormData();
formData.append('file', file);
for (const key in data) {
if (data[key] !== undefined && data[key] !== null) {
formData.append(key, data[key]);
}
}
if (isHeadersAddMultiForm) {
headers = Object.assign(Object.assign({}, headers), { 'Content-Type': headers['Content-Type'] || 'multipart/form-data' });
}
headers['request-id'] = headers['request-id'] || (0, util_1.AppUUID4)();
try {
const requestOptions = {
method: method,
body: formData,
headers: Object.assign({}, headers),
};
const response = yield fetch(url, requestOptions);
return yield Http.RespData(response, type);
}
catch (error) {
throw { url: url, requestId: headers['request-id'], error: error };
}
});
}
static CloudUpload(fullUrl_1, file_1) {
return __awaiter(this, arguments, void 0, function* (fullUrl, file, headers = null, method = 'PUT') {
headers = headers || {
'Content-Type': file.type,
};
headers['request-id'] = headers['request-id'] || (0, util_1.AppUUID4)();
try {
const requestOptions = {
method: method,
body: file,
headers: Object.assign({}, headers),
};
const response = yield fetch(fullUrl, requestOptions);
return response;
}
catch (error) {
throw { url: fullUrl, requestId: headers['request-id'], error: error };
}
});
}
static FileDownload(fullUrl_1, params_1) {
return __awaiter(this, arguments, void 0, function* (fullUrl, params, headers = exports.HttpHeaders, method = 'GET') {
fullUrl = params ? `${fullUrl}?${new URLSearchParams(params).toString()}` : fullUrl;
headers = headers || exports.HttpHeaders;
headers['request-id'] = headers['request-id'] || (0, util_1.AppUUID4)();
try {
const requestOptions = { method: method, headers: headers };
const response = yield fetch(fullUrl, requestOptions);
const blob = yield response.blob();
return blob;
}
catch (error) {
throw { url: fullUrl, requestId: headers['request-id'], error: error };
}
});
}
}
exports.Http = Http;
Http.API_BASE_URL = "";
Http.TOKEN_URL = `/apisix/plugin/jwt/sign`;