/** * @return A Jersey WebResource setup to target http://<galaxy_url>/api and with the key query parameter set to * desired Galaxy key. */ public WebResource get() { final String apiKey = getApiKey(); WebResource resource = getRawWebResource(); if(apiKey != null) { resource = resource.queryParam("key", apiKey); } return resource; }
@Override public synchronized String getApiKey() { if(key == null) { final String unencodedCredentials = email + ":" + password; final String encodedCredentials = javax.xml.bind.DatatypeConverter.printBase64Binary(unencodedCredentials.getBytes()); final WebResource resource = super.getRawWebResource(); final ClientResponse response = resource.path("authenticate") .path("baseauth") .header("Authorization", encodedCredentials) .get(ClientResponse.class); if(response.getStatus() != 200) { throw new RuntimeException("Failed to build Galaxy API key for supplied user e-mail and password."); } final Map<String, Object> responseObjects = response.getEntity(Map.class); key = responseObjects.get("api_key").toString(); } return key; }