``` ~/go/bin/sourcemapper -output ddb -jsurl https://media.dndbeyond.com/character-app/static/js/main.90aa78c5.js ```
145 lines
6.2 KiB
JavaScript
145 lines
6.2 KiB
JavaScript
import { merge } from 'lodash';
|
|
import { ApiTypeEnum } from '../api/constants';
|
|
import { generateCharacterServiceApiPath } from '../api/generators';
|
|
import { ConfigUtils } from '../config';
|
|
import { rulesEngineSelectors } from '../selectors';
|
|
let emptyPromise = new Promise((resolve, reject) => {
|
|
resolve({
|
|
data: {
|
|
success: false,
|
|
},
|
|
headers: {},
|
|
status: -1,
|
|
statusText: 'EMPTY_PROMISE',
|
|
});
|
|
});
|
|
export function getApiBaseUrl(apiType) {
|
|
const config = ConfigUtils.getCurrentRulesEngineConfig();
|
|
switch (apiType) {
|
|
case ApiTypeEnum.HACK__CHARACTER_SERVICE_GAME_DATA:
|
|
return config.apiInfo[ApiTypeEnum.CHARACTER_SERVICE];
|
|
default:
|
|
// not implemented
|
|
}
|
|
return config.apiInfo[apiType];
|
|
}
|
|
export function generateApiUrl(apiType, apiPath, apiVersionOverride) {
|
|
return [getApiBaseUrl(apiType), transformApiPath(apiType, apiPath, apiVersionOverride)].join('/');
|
|
}
|
|
export function generateDefaultRequestParams(apiType, requestConfig) {
|
|
const config = ConfigUtils.getCurrentRulesEngineConfig();
|
|
if (config.store === undefined || requestConfig.removeDefaultParams) {
|
|
return {};
|
|
}
|
|
switch (apiType) {
|
|
case ApiTypeEnum.CHARACTER_SERVICE:
|
|
return rulesEngineSelectors.getRequiredCharacterServiceParams(config.store.getState());
|
|
case ApiTypeEnum.GAME_DATA_SERVICE:
|
|
case ApiTypeEnum.HACK__CHARACTER_SERVICE_GAME_DATA:
|
|
return rulesEngineSelectors.getRequiredGameDataServiceParams(config.store.getState());
|
|
default:
|
|
// not implemented
|
|
}
|
|
return {};
|
|
}
|
|
export function transformApiPath(apiType, apiPath, apiVersionOverride) {
|
|
switch (apiType) {
|
|
case ApiTypeEnum.CHARACTER_SERVICE:
|
|
case ApiTypeEnum.HACK__CHARACTER_SERVICE_GAME_DATA:
|
|
return generateCharacterServiceApiPath(apiPath, apiVersionOverride);
|
|
default:
|
|
//not implemented
|
|
}
|
|
return apiPath;
|
|
}
|
|
export function makeGet(apiType, apiPath, config, apiVersionOverride) {
|
|
return (additionalConfig = {}) => {
|
|
const rulesEngineConfig = ConfigUtils.getCurrentRulesEngineConfig();
|
|
if (rulesEngineConfig.apiAdapter) {
|
|
const initialRequestConfig = merge({}, config, additionalConfig);
|
|
const defaultRequestParams = generateDefaultRequestParams(apiType, initialRequestConfig);
|
|
const defaultRequestConfig = {
|
|
params: defaultRequestParams,
|
|
};
|
|
const requestConfig = merge({}, defaultRequestConfig, initialRequestConfig);
|
|
return rulesEngineConfig.apiAdapter.get(generateApiUrl(apiType, apiPath, apiVersionOverride), requestConfig);
|
|
}
|
|
return emptyPromise;
|
|
};
|
|
}
|
|
export function makeInterpolatedGet(apiType, apiPath, config, apiVersionOverride) {
|
|
return (data, additionalConfig = {}) => {
|
|
const rulesEngineConfig = ConfigUtils.getCurrentRulesEngineConfig();
|
|
if (rulesEngineConfig.apiAdapter) {
|
|
const initialRequestConfig = merge({}, config, additionalConfig);
|
|
const defaultRequestParams = generateDefaultRequestParams(apiType, initialRequestConfig);
|
|
const defaultRequestConfig = {
|
|
params: defaultRequestParams,
|
|
};
|
|
const requestConfig = merge({}, defaultRequestConfig, initialRequestConfig);
|
|
let interpolatedPath = `${apiPath}`;
|
|
Object.keys(data).forEach((key) => {
|
|
if (!data[key]) {
|
|
throw new Error(`Key: ${key} was not provided to makeInterpolatedGet`);
|
|
}
|
|
interpolatedPath = interpolatedPath.replace(`{${key}}`, data[key]);
|
|
});
|
|
return rulesEngineConfig.apiAdapter.get(generateApiUrl(apiType, interpolatedPath, apiVersionOverride), requestConfig);
|
|
}
|
|
return emptyPromise;
|
|
};
|
|
}
|
|
export function makePost(apiType, apiPath, config, apiVersionOverride) {
|
|
return (data, additionalConfig = {}) => {
|
|
const rulesEngineConfig = ConfigUtils.getCurrentRulesEngineConfig();
|
|
if (rulesEngineConfig.apiAdapter) {
|
|
const requestConfig = merge({}, config, additionalConfig);
|
|
const defaultRequestParams = generateDefaultRequestParams(apiType, requestConfig);
|
|
const requestData = merge({}, defaultRequestParams, data);
|
|
return rulesEngineConfig.apiAdapter.post(generateApiUrl(apiType, apiPath, apiVersionOverride), requestData, requestConfig);
|
|
}
|
|
return emptyPromise;
|
|
};
|
|
}
|
|
export function makePut(apiType, apiPath, config, apiVersionOverride) {
|
|
return (data, additionalConfig = {}) => {
|
|
const rulesEngineConfig = ConfigUtils.getCurrentRulesEngineConfig();
|
|
if (rulesEngineConfig.apiAdapter) {
|
|
const requestConfig = merge({}, config, additionalConfig);
|
|
const defaultRequestParams = generateDefaultRequestParams(apiType, requestConfig);
|
|
const requestData = merge({}, defaultRequestParams, data);
|
|
return rulesEngineConfig.apiAdapter.put(generateApiUrl(apiType, apiPath, apiVersionOverride), requestData, requestConfig);
|
|
}
|
|
return emptyPromise;
|
|
};
|
|
}
|
|
export function makeDelete(apiType, apiPath, config, apiVersionOverride) {
|
|
return (data, additionalConfig = {}) => {
|
|
const rulesEngineConfig = ConfigUtils.getCurrentRulesEngineConfig();
|
|
if (rulesEngineConfig.apiAdapter) {
|
|
const initialRequestConfig = merge({}, config, additionalConfig);
|
|
const defaultRequestParams = generateDefaultRequestParams(apiType, initialRequestConfig);
|
|
const defaultRequestConfig = {
|
|
data: defaultRequestParams,
|
|
};
|
|
const paramConfig = {
|
|
data: data ? data : {},
|
|
};
|
|
const requestConfig = merge({}, defaultRequestConfig, paramConfig);
|
|
return rulesEngineConfig.apiAdapter.delete(generateApiUrl(apiType, apiPath, apiVersionOverride), requestConfig);
|
|
}
|
|
return emptyPromise;
|
|
};
|
|
}
|
|
/**
|
|
*
|
|
* @param response
|
|
*/
|
|
export function getResponseData(response) {
|
|
var _a;
|
|
if (((_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.data) !== undefined) {
|
|
return response.data.data;
|
|
}
|
|
return null;
|
|
}
|