@brianveltman/sonatype-mcp
Version:
Model Context Protocol server for Sonatype Nexus Repository Manager
68 lines • 2.53 kB
JavaScript
export class ComponentService {
nexusClient;
constructor(nexusClient) {
this.nexusClient = nexusClient;
}
async searchComponents(params = {}) {
const queryParams = {};
if (params.repository)
queryParams.repository = params.repository;
if (params.format)
queryParams.format = params.format;
if (params.group)
queryParams.group = params.group;
if (params.name)
queryParams.name = params.name;
if (params.version)
queryParams.version = params.version;
if (params.prerelease !== undefined)
queryParams.prerelease = params.prerelease.toString();
if (params.sort)
queryParams.sort = params.sort;
if (params.direction)
queryParams.direction = params.direction;
const response = await this.nexusClient.get('/service/rest/v1/search', {
params: queryParams
});
return response;
}
async getComponent(id) {
const component = await this.nexusClient.get(`/service/rest/v1/components/${encodeURIComponent(id)}`);
return component;
}
async uploadComponent(repository, formData) {
const component = await this.nexusClient.post(`/service/rest/v1/components?repository=${encodeURIComponent(repository)}`, formData, {
headers: formData.getHeaders ? formData.getHeaders() : {
'Content-Type': 'multipart/form-data'
}
});
return component;
}
async deleteComponent(id) {
await this.nexusClient.delete(`/service/rest/v1/components/${encodeURIComponent(id)}`);
}
async getComponentVersions(repository, format, group, name) {
const searchParams = {
repository,
format,
group,
name,
sort: 'version',
direction: 'desc'
};
const response = await this.searchComponents(searchParams);
return response.items.map(component => component.version);
}
async getAssets(componentId) {
const component = await this.getComponent(componentId);
return component.assets;
}
async getAsset(id) {
const asset = await this.nexusClient.get(`/service/rest/v1/assets/${encodeURIComponent(id)}`);
return asset;
}
async deleteAsset(id) {
await this.nexusClient.delete(`/service/rest/v1/assets/${encodeURIComponent(id)}`);
}
}
//# sourceMappingURL=components.js.map