UNPKG

@takashito/linode-mcp-server

Version:

MCP server for Linode API

135 lines 5.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createObjectStorageClient = createObjectStorageClient; function createObjectStorageClient(axios) { return { // Clusters getClusters: async () => { const response = await axios.get('/object-storage/clusters'); return response.data.data; }, // Endpoints getEndpoints: async (params) => { const response = await axios.get('/object-storage/endpoints', { params }); return response.data; }, // Buckets getBuckets: async (params) => { const response = await axios.get('/object-storage/buckets', { params }); return response.data; }, getBucket: async (cluster, label) => { const response = await axios.get(`/object-storage/buckets/${cluster}/${label}`); return response.data; }, createBucket: async (data) => { try { // The Linode API actually wants 'region' but our client interface uses 'cluster' // This inconsistency exists because of legacy Linode API compatibility const requestData = { label: data.label, region: data.cluster, // Map cluster to region for API consistency endpoint_type: data.endpoint_type, acl: data.acl, cors_enabled: data.cors_enabled }; const response = await axios.post('/object-storage/buckets', requestData); return response.data; } catch (error) { console.error("Error creating bucket:", error?.message || error); if (error?.response?.data) { console.error("API error response:", JSON.stringify(error.response.data)); } throw error; } }, deleteBucket: async (cluster, label) => { await axios.delete(`/object-storage/buckets/${cluster}/${label}`); }, getBucketAccess: async (cluster, label) => { const response = await axios.get(`/object-storage/buckets/${cluster}/${label}/access`); return response.data; }, updateBucketAccess: async (cluster, label, data) => { const response = await axios.post(`/object-storage/buckets/${cluster}/${label}/access`, data); return response.data; }, // Objects getObjects: async (cluster, bucket, params) => { const response = await axios.get(`/object-storage/buckets/${cluster}/${bucket}/object-list`, { params }); return response.data; }, // New Object ACL method updateObjectACL: async (cluster, bucket, name, data) => { await axios.put(`/object-storage/buckets/${cluster}/${bucket}/object-acl`, { name, acl: data.acl }); }, // New Object URL generation method getObjectURL: async (cluster, bucket, data) => { // Create a new object with all properties except 'name' const { ...requestData } = data; // According to OpenAPI spec, we need to include the object name in the path for some methods const response = await axios.post(`/object-storage/buckets/${cluster}/${bucket}/object-url`, requestData); return response.data; }, // SSL/TLS certificates getBucketCertificate: async (cluster, bucket) => { const response = await axios.get(`/object-storage/buckets/${cluster}/${bucket}/ssl`); return response.data; }, uploadBucketCertificate: async (cluster, bucket, data) => { const response = await axios.post(`/object-storage/buckets/${cluster}/${bucket}/ssl`, data); return response.data; }, deleteBucketCertificate: async (cluster, bucket) => { await axios.delete(`/object-storage/buckets/${cluster}/${bucket}/ssl`); }, // Access keys getKeys: async (params) => { const response = await axios.get('/object-storage/keys', { params }); return response.data; }, getKey: async (id) => { const response = await axios.get(`/object-storage/keys/${id}`); return response.data; }, createKey: async (data) => { const response = await axios.post('/object-storage/keys', data); return response.data; }, updateKey: async (id, data) => { const response = await axios.put(`/object-storage/keys/${id}`, data); return response.data; }, deleteKey: async (id) => { await axios.delete(`/object-storage/keys/${id}`); }, // Default bucket access getDefaultBucketAccess: async () => { const response = await axios.get('/object-storage/bucket-access'); return response.data; }, updateDefaultBucketAccess: async (data) => { const response = await axios.put('/object-storage/bucket-access', data); return response.data; }, // New Transfer statistics method getTransferStats: async () => { const response = await axios.get('/object-storage/transfer'); return response.data; }, // New Object Storage types method getTypes: async () => { const response = await axios.get('/object-storage/types'); return response.data.data; }, // Cancellation cancelObjectStorage: async () => { await axios.post('/object-storage/cancel'); } }; } //# sourceMappingURL=objectStorage.js.map