retrofit-axios-ts
Version:
A declarative and axios based retrofit implementation for JavaScript and TypeScript.
33 lines (32 loc) • 1.53 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const constants_1 = require("../constants");
const FormUrlencoded_1 = __importDefault(require("./FormUrlencoded"));
const Json_1 = __importDefault(require("./Json"));
const MultiPart_1 = __importDefault(require("./MultiPart"));
const TextXml_1 = __importDefault(require("./TextXml"));
const dataResolverMap = new Map();
dataResolverMap.set("application/x-www-form-urlencoded", FormUrlencoded_1.default);
dataResolverMap.set("multipart/form-data", MultiPart_1.default);
dataResolverMap.set("application/json", Json_1.default);
dataResolverMap.set("text/xml", TextXml_1.default);
class DataResolverFactory {
createDataResolver(contentType) {
const contentTypeLowCased = contentType.toLowerCase();
for (const dataContentType of constants_1.DATA_CONTENT_TYPES) {
if (contentTypeLowCased.includes(dataContentType)) {
const ResolverCls = this._getDataResolverCls(dataContentType);
return new ResolverCls();
}
}
return new (this._getDataResolverCls("application/json"))();
}
_getDataResolverCls(dataContentType) {
var _a;
return (_a = dataResolverMap.get(dataContentType)) !== null && _a !== void 0 ? _a : Json_1.default;
}
}
exports.default = DataResolverFactory;