sonatype-mcp
Version:
Model Context Protocol server for Sonatype Nexus Repository Manager
67 lines (66 loc) • 2.05 kB
JavaScript
/**
* Repository service for managing Nexus repositories
*/
export class RepositoryService {
nexusClient;
constructor(nexusClient) {
this.nexusClient = nexusClient;
}
/**
* List all repositories
*/
async listRepositories(params = {}) {
const queryParams = {};
if (params.format) {
queryParams.format = params.format;
}
if (params.type) {
queryParams.type = params.type;
}
const repositories = await this.nexusClient.get('/service/rest/v1/repositories', {
params: queryParams
});
return repositories;
}
/**
* Get repository details by name
*/
async getRepository(name) {
const repository = await this.nexusClient.get(`/service/rest/v1/repositories/${encodeURIComponent(name)}`);
return repository;
}
/**
* Create a new repository
*/
async createRepository(repositoryConfig) {
const repository = await this.nexusClient.post('/service/rest/v1/repositories', repositoryConfig);
return repository;
}
/**
* Update repository configuration
*/
async updateRepository(name, repositoryConfig) {
const repository = await this.nexusClient.put(`/service/rest/v1/repositories/${encodeURIComponent(name)}`, repositoryConfig);
return repository;
}
/**
* Delete a repository
*/
async deleteRepository(name) {
await this.nexusClient.delete(`/service/rest/v1/repositories/${encodeURIComponent(name)}`);
}
/**
* Get repository health check
*/
async getRepositoryHealth(name) {
const health = await this.nexusClient.get(`/service/rest/v1/repositories/${encodeURIComponent(name)}/health-check`);
return health;
}
/**
* Get repository status
*/
async getRepositoryStatus(name) {
const status = await this.nexusClient.get(`/service/rest/v1/repositories/${encodeURIComponent(name)}/status`);
return status;
}
}