UNPKG

n8n-nodes-awx

Version:

n8n node to interact with Ansible AWX/Tower with improved type safety

76 lines 2.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.JobTemplateResources = void 0; class JobTemplateResources { constructor(apiClient) { this.apiClient = apiClient; } buildUrl(path, params) { if (!params) return path; const queryParts = []; Object.entries(params).forEach(([key, value]) => { if (value !== undefined && value !== null) { const encodedKey = encodeURIComponent(key); const encodedValue = encodeURIComponent(String(value)); queryParts.push(`${encodedKey}=${encodedValue}`); } }); const queryString = queryParts.join('&'); return queryString ? `${path}?${queryString}` : path; } async list(params) { const url = this.buildUrl('/api/v2/job_templates/', params); const response = await this.apiClient.get(url); return response.data.results; } async get(id) { if (!id) { throw new Error('Job Template ID is required'); } const response = await this.apiClient.get(`/api/v2/job_templates/${id}/`); return response.data; } async getByName(name) { const url = this.buildUrl('/api/v2/job_templates/', { name }); const response = await this.apiClient.get(url); if (response.data.count === 0) { return null; } if (response.data.count > 1) { throw new Error(`Multiple job templates found with name: ${name}`); } return response.data.results[0]; } async create(data) { const requiredFields = ['name', 'job_type', 'inventory', 'project', 'playbook']; const missingFields = requiredFields.filter(field => data[field] === undefined || data[field] === null); if (missingFields.length > 0) { throw new Error(`Missing required fields: ${missingFields.join(', ')}`); } const response = await this.apiClient.post('/api/v2/job_templates/', data); return response.data; } async update(id, data) { if (!id) { throw new Error('Job Template ID is required'); } const response = await this.apiClient.put(`/api/v2/job_templates/${id}/`, data); return response.data; } async delete(id) { if (!id) { throw new Error('Job Template ID is required'); } await this.apiClient.delete(`/api/v2/job_templates/${id}/`); } async launch(id, params = {}) { if (!id) { throw new Error('Job Template ID is required'); } const response = await this.apiClient.post(`/api/v2/job_templates/${id}/launch/`, params); return response.data; } } exports.JobTemplateResources = JobTemplateResources; //# sourceMappingURL=JobTemplateResources.js.map