package net.whydah.admin.users.uib;
import net.whydah.admin.AuthenticationFailedException;
import net.whydah.admin.config.AppConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.ws.rs.BadRequestException;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
/**
* Created by baardl on 17.04.14.
*/
@Component
public class UibUsersConnection {
private static final Logger log = LoggerFactory.getLogger(UibUsersConnection.class);
private static final int STATUS_BAD_REQUEST = 400; //Response.Status.BAD_REQUEST.getStatusCode();
private static final int STATUS_OK = 200; //Response.Status.OK.getStatusCode();
private static final int STATUS_FORBIDDEN = 403;
private static final int STATUS_CREATED = 201;
private static final int STATUS_CONFLICT = 409;
private static final int STATUS_NO_CONTENT = 204;
private final WebTarget uib;
@Autowired
public UibUsersConnection(AppConfig appConfig) {
Client client = ClientBuilder.newClient();
// URI useridbackendUri = URI.create(appConfig.getProperty("userIdentityBackendUri"));
// uib = client.target(userIdentityBackendUri);
String uibUrl = appConfig.getProperty("useridentitybackend");
log.info("Connection to UserIdentityBackend on {}" , uibUrl);
uib = client.target(uibUrl);
}
public String findUsers(String userAdminServiceTokenId, String userTokenId, String query) {
WebTarget webResource = uib.path("/" + userAdminServiceTokenId + "/" + userTokenId + "/users/find").path(query);
String resultJson = null;
Response response = webResource.request(MediaType.APPLICATION_JSON).get();
int statusCode = response.getStatus();
String output = response.readEntity(String.class);
switch (statusCode) {
case STATUS_OK:
log.trace("Response from UIB {}", output);
resultJson = output;
break;
case STATUS_BAD_REQUEST:
log.error("Response from UIB: {}: {}", response.getStatus(), output);
throw new BadRequestException("BadRequest for query " + query + ", Status code " + response.getStatus());
default:
log.error("Response from UIB: {}: {}", response.getStatus(), output);
throw new AuthenticationFailedException("Request failed. Status code " + response.getStatus());
}
return resultJson;
}
}