siputzx-api
Version:
Module Wrapper For Siputzx API
78 lines • 2.66 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ApiHelper = void 0;
/**
* Helper class for API utilities
*/
class ApiHelper {
/**
* Extract example parameters from an endpoint's example string
* @param example Example string from API (e.g., "param1=value1¶m2=value2")
* @returns Object containing the parameters
*/
static parseExampleParams(example) {
if (!example)
return {};
if (typeof example === 'object') {
return example;
}
if (typeof example === 'string') {
const params = {};
const pairs = example.split('&');
pairs.forEach(pair => {
const [key, value] = pair.split('=');
if (key && value) {
params[key] = value;
}
});
return params;
}
// Fallback: return empty
return {};
}
/**
* Create a camelCase function name from an endpoint title
* @param name The endpoint name
* @returns Camelcase function name
*/
static createFunctionName(name) {
// Remove special characters, replace spaces with underscores
const cleanName = name.replace(/[^\w\s]/gi, '').replace(/\s+/g, '_');
// Convert to camelCase
return cleanName.split('_')
.map((word, index) => {
if (index === 0) {
return word.toLowerCase();
}
return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
})
.join('');
}
/**
* Generate TypeScript interface from example parameters
* @param endpoint API endpoint data
* @returns TypeScript interface definition as string
*/
static generateTypeInterface(endpoint) {
const params = ApiHelper.parseExampleParams(endpoint.example);
const interfaceName = `${ApiHelper.createFunctionName(endpoint.name)}Params`;
let interfaceCode = `export interface ${interfaceName} {\n`;
Object.keys(params).forEach(key => {
interfaceCode += ` ${key}: string;\n`;
});
interfaceCode += '}\n';
return interfaceCode;
}
/**
* Create query string from parameters
* @param params Object containing query parameters
* @returns URL query string
*/
static createQueryString(params) {
return Object.entries(params)
.map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)
.join('&');
}
}
exports.ApiHelper = ApiHelper;
//# sourceMappingURL=api.js.map