@takashito/linode-mcp-server
Version:
MCP server for Linode API
138 lines • 5.95 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createObjectStorageClient = createObjectStorageClient;
function createObjectStorageClient(axios) {
return {
// 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 (region, label) => {
const response = await axios.get(`/object-storage/buckets/${region}/${label}`);
return response.data;
},
createBucket: async (data) => {
const response = await axios.post('/object-storage/buckets', data);
return response.data;
},
deleteBucket: async (region, label) => {
const response = await axios.delete(`/object-storage/buckets/${region}/${label}`);
return response.data;
},
getBucketAccess: async (region, label) => {
const response = await axios.get(`/object-storage/buckets/${region}/${label}/access`);
return response.data;
},
updateBucketAccess: async (region, label, data) => {
const response = await axios.post(`/object-storage/buckets/${region}/${label}/access`, data);
return response.data;
},
// Objects
getObjects: async (region, bucket, params) => {
const response = await axios.get(`/object-storage/buckets/${region}/${bucket}/object-list`, { params });
return response.data;
},
// New Object ACL method
updateObjectACL: async (region, bucket, name, data) => {
const response = await axios.put(`/object-storage/buckets/${region}/${bucket}/object-acl`, {
name,
acl: data.acl
});
return response.data;
},
// New Object URL generation method
getObjectURL: async (region, 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/${region}/${bucket}/object-url`, requestData);
return response.data;
},
// SSL/TLS certificates
getBucketCertificate: async (region, bucket) => {
const response = await axios.get(`/object-storage/buckets/${region}/${bucket}/ssl`);
return response.data;
},
uploadBucketCertificate: async (region, bucket, data) => {
const response = await axios.post(`/object-storage/buckets/${region}/${bucket}/ssl`, data);
return response.data;
},
deleteBucketCertificate: async (region, bucket) => {
const response = await axios.delete(`/object-storage/buckets/${region}/${bucket}/ssl`);
return response.data;
},
// 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) => {
const response = await axios.delete(`/object-storage/keys/${id}`);
return response.data;
},
// Per-region bucket listing
getBucketsInRegion: async (regionId, params) => {
const response = await axios.get(`/object-storage/buckets/${regionId}`, { params });
return response.data;
},
// Object ACL Get
getObjectACL: async (region, bucket, name) => {
const response = await axios.get(`/object-storage/buckets/${region}/${bucket}/object-acl`, {
params: { name }
});
return response.data;
},
// Bucket Access Update (PUT)
putBucketAccess: async (region, label, data) => {
const response = await axios.put(`/object-storage/buckets/${region}/${label}/access`, data);
return response.data;
},
// Quotas
getQuotas: async (params) => {
const response = await axios.get('/object-storage/quotas', { params });
return response.data;
},
getQuota: async (quotaId) => {
const response = await axios.get(`/object-storage/quotas/${quotaId}`);
return response.data;
},
getQuotaUsage: async (quotaId) => {
const response = await axios.get(`/object-storage/quotas/${quotaId}/usage`);
return response.data;
},
// Transfer statistics
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;
},
// Cancellation
cancelObjectStorage: async () => {
const response = await axios.post('/object-storage/cancel');
return response.data;
}
};
}
//# sourceMappingURL=objectStorage.js.map