Files
fuyouawa-comfyui-easytoolkit/web/api_utils.js
T

143 lines
4.6 KiB
JavaScript

// /**
// * API Utilities - Fetch wrapper functions
// */
// /**
// * Generic fetch request wrapper
// * @param {string} url - Request URL
// * @param {Object} options - Configuration options
// * @param {string} options.method - HTTP method (GET, POST, etc.)
// * @param {Object|FormData} options.data - Request data
// * @param {Object} options.headers - Custom headers
// * @param {boolean} options.silent - Whether to fail silently (no error thrown)
// * @param {number} options.timeout - Timeout in milliseconds
// * @returns {Promise<Object>} Parsed JSON response data
// */
// export async function apiRequest(url, options = {}) {
// const {
// method = "GET",
// data = null,
// headers = {},
// silent = false,
// timeout = 30000
// } = options;
// const isFormData = data instanceof FormData;
// // Build fetch configuration
// const fetchOptions = {
// method: method.toUpperCase()
// };
// // Handle request body and headers
// if (data) {
// if (isFormData) {
// fetchOptions.body = data;
// // FormData will automatically set Content-Type
// } else {
// fetchOptions.body = JSON.stringify(data);
// fetchOptions.headers = {
// "Content-Type": "application/json",
// ...headers
// };
// }
// } else if (Object.keys(headers).length > 0) {
// fetchOptions.headers = headers;
// }
// try {
// // Add timeout control
// const controller = new AbortController();
// const timeoutId = setTimeout(() => controller.abort(), timeout);
// fetchOptions.signal = controller.signal;
// const response = await fetch(url, fetchOptions);
// clearTimeout(timeoutId);
// if (!response.ok) {
// const error = new Error(`HTTP error! status: ${response.status}`);
// error.status = response.status;
// error.response = response;
// throw error;
// }
// const result = await response.json();
// // Check if business logic succeeded
// if (result.success === false && !silent) {
// const error = new Error(result.error || "Request failed");
// error.result = result;
// throw error;
// }
// return result;
// } catch (error) {
// if (error.name === 'AbortError') {
// const timeoutError = new Error(`Request timeout after ${timeout}ms`);
// timeoutError.isTimeout = true;
// if (!silent) throw timeoutError;
// return { success: false, error: timeoutError.message };
// }
// if (!silent) {
// console.error(`API request failed [${method} ${url}]:`, error);
// throw error;
// }
// return { success: false, error: error.message };
// }
// }
// /**
// * Simplified GET request
// * @param {string} url - Request URL
// * @param {Object} options - Additional configuration options
// * @returns {Promise<Object>}
// */
// export async function apiGet(url, options = {}) {
// return apiRequest(url, { ...options, method: "GET" });
// }
// /**
// * Simplified POST request
// * @param {string} url - Request URL
// * @param {Object|FormData} data - Request data
// * @param {Object} options - Additional configuration options
// * @returns {Promise<Object>}
// */
// export async function apiPost(url, data = null, options = {}) {
// return apiRequest(url, { ...options, method: "POST", data });
// }
// /**
// * Simplified PUT request
// * @param {string} url - Request URL
// * @param {Object|FormData} data - Request data
// * @param {Object} options - Additional configuration options
// * @returns {Promise<Object>}
// */
// export async function apiPut(url, data = null, options = {}) {
// return apiRequest(url, { ...options, method: "PUT", data });
// }
// /**
// * Simplified DELETE request
// * @param {string} url - Request URL
// * @param {Object} options - Additional configuration options
// * @returns {Promise<Object>}
// */
// export async function apiDelete(url, options = {}) {
// return apiRequest(url, { ...options, method: "DELETE" });
// }
// /**
// * Silent request - does not throw errors on failure
// * @param {string} url - Request URL
// * @param {Object} options - Configuration options
// * @returns {Promise<Object>}
// */
// export async function apiSilent(url, options = {}) {
// return apiRequest(url, { ...options, silent: true });
// }