/**
* Copyright (c) 2012 Cloudsmith Inc. and other contributors, as listed below.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Cloudsmith
*
*/
package org.cloudsmith.geppetto.forge.v2.service;
import java.io.IOException;
import java.util.Collections;
import java.util.List;
import org.apache.http.HttpStatus;
import org.apache.http.client.HttpResponseException;
import org.cloudsmith.geppetto.forge.model.Constants;
import org.cloudsmith.geppetto.forge.v2.model.Module;
import org.cloudsmith.geppetto.forge.v2.model.Release;
import org.cloudsmith.geppetto.forge.v2.model.User;
/**
* A CRUD service for {@link User} objects
*/
public class UserService extends ForgeService {
private static String getUserPath(String name) {
return Constants.COMMAND_GROUP_USERS + '/' + name;
}
/**
*
* @param name
* The name of the user
* @return Details for a particular user
* @throws IOException
*/
public User get(String name) throws IOException {
return getClient(false).get(getUserPath(name), null, User.class);
}
/**
* @param name
* The name of the user
* @param listPreferences
* Pagination preferences or <code>null</code> to get all in no particular order
* @return Modules for a particular user
* @throws IOException
*/
public List<Module> getModules(String name, ListPreferences listPreferences) throws IOException {
List<Module> modules = null;
try {
modules = getClient(false).get(
getUserPath(name) + "/modules", toQueryMap(listPreferences), Constants.LIST_MODULE);
}
catch(HttpResponseException e) {
if(e.getStatusCode() != HttpStatus.SC_NOT_FOUND)
throw e;
}
if(modules == null)
modules = Collections.emptyList();
return modules;
}
/**
* @param name
* The name of the user
* @param listPreferences
* Pagination preferences or <code>null</code> to get all in no particular order
* @return Releases for a particular user
* @throws IOException
*/
public List<Release> getReleases(String name, ListPreferences listPreferences) throws IOException {
List<Release> releases = null;
try {
releases = getClient(false).get(
getUserPath(name) + "/releases", toQueryMap(listPreferences), Constants.LIST_RELEASE);
}
catch(HttpResponseException e) {
if(e.getStatusCode() != HttpStatus.SC_NOT_FOUND)
throw e;
}
if(releases == null)
releases = Collections.emptyList();
return releases;
}
/**
* @param listPreferences
* @return All users
* @throws IOException
*/
public List<User> list(ListPreferences listPreferences) throws IOException {
List<User> users = null;
try {
users = getClient(false).get(
Constants.COMMAND_GROUP_USERS, toQueryMap(listPreferences), Constants.LIST_USER);
}
catch(HttpResponseException e) {
if(e.getStatusCode() != HttpStatus.SC_NOT_FOUND)
throw e;
}
if(users == null)
users = Collections.emptyList();
return users;
}
}