UNPKG

@vegaci_shared/vsplit-payment-gateway

Version:

A B2B payment gateway integration package for Stripe with split payment capabilities

115 lines (114 loc) 3.48 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ApiClient = void 0; /** * API Client for backend communication */ class ApiClient { constructor(config) { this.config = config; this.baseHeaders = { 'Content-Type': 'application/json', ...(config.apiKey && { Authorization: `Bearer ${config.apiKey}` }), }; } /** * Make a GET request */ async get(endpoint) { return this.request('GET', endpoint); } /** * Make a POST request */ async post(endpoint, data) { return this.request('POST', endpoint, data); } /** * Make a PUT request */ async put(endpoint, data) { return this.request('PUT', endpoint, data); } /** * Make a DELETE request */ async delete(endpoint) { return this.request('DELETE', endpoint); } /** * Generic request method */ async request(method, endpoint, data) { try { const url = `${this.config.apiEndpoint}${endpoint}`; const options = { method, headers: this.baseHeaders, ...(data && { body: JSON.stringify(data) }), }; const response = await fetch(url, options); const responseData = await response.json(); if (!response.ok) { return { success: false, error: responseData.error || `HTTP ${response.status}: ${response.statusText}`, code: responseData.code || response.status.toString(), }; } return { success: true, data: responseData.data || responseData, metadata: responseData.metadata, }; } catch (error) { return { success: false, error: error instanceof Error ? error.message : 'Network error', code: 'NETWORK_ERROR', }; } } /** * Upload file (for future use) */ async uploadFile(endpoint, file) { try { const formData = new FormData(); formData.append('file', file); const response = await fetch(`${this.config.apiEndpoint}${endpoint}`, { method: 'POST', headers: { ...(this.config.apiKey && { Authorization: `Bearer ${this.config.apiKey}`, }), }, body: formData, }); const responseData = await response.json(); if (!response.ok) { return { success: false, error: responseData.error || `HTTP ${response.status}: ${response.statusText}`, code: responseData.code || response.status.toString(), }; } return { success: true, data: responseData.data || responseData, metadata: responseData.metadata, }; } catch (error) { return { success: false, error: error instanceof Error ? error.message : 'Upload error', code: 'UPLOAD_ERROR', }; } } } exports.ApiClient = ApiClient;