package com.github.jmchilton.blend4j.galaxy;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.codehaus.jackson.type.TypeReference;
import com.github.jmchilton.blend4j.galaxy.beans.User;
import com.github.jmchilton.blend4j.galaxy.beans.UserCreate;
import com.sun.jersey.api.client.ClientResponse;
class UsersClientImpl extends Client implements UsersClient {
private static final TypeReference<List<User>> USER_LIST_TYPE_REFERENCE = new TypeReference<List<User>>() {
};
UsersClientImpl(GalaxyInstanceImpl galaxyInstance) {
super(galaxyInstance, "users");
}
public List<User> getUsers() {
// Handles both User lists and single user retrieval
try {
return super.get(USER_LIST_TYPE_REFERENCE);
} catch(RuntimeException e) {
List out = new ArrayList();
out.add(super.getWebResource().get(User.class));
return out;
}
}
public ClientResponse createUserRequest(final String remoteUserEmail) {
final Map<String, String> map = new HashMap<String, String>();
map.put("remote_user_email", remoteUserEmail);
return super.getWebResource().post(ClientResponse.class, write(map));
}
public User createUser(final String remoteUserEmail) {
return createUserRequest(remoteUserEmail).getEntity(User.class);
}
public User showUser(String id) {
return super.show(id, User.class);
}
@Override
public User createUser(UserCreate userCreate) {
return createUserRequest(userCreate).getEntity(User.class);
}
@Override
public String createApiKey(String userId) {
return super.read(super.getWebResource().path(userId).path("api_key").post(ClientResponse.class), String.class);
}
@Override
public ClientResponse createUserRequest(UserCreate userCreate) {
return super.getWebResource().post(ClientResponse.class, write(userCreate));
}
}