diff --git a/src/main/java/eu/hbp/mip/controllers/RequestsApi.java b/src/main/java/eu/hbp/mip/controllers/RequestsApi.java deleted file mode 100644 index a848ff951f77bbff853780347731a55cb71c3eb3..0000000000000000000000000000000000000000 --- a/src/main/java/eu/hbp/mip/controllers/RequestsApi.java +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Created by mirco on 18.01.16. - */ - -package eu.hbp.mip.controllers; - -import com.google.gson.Gson; -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import eu.hbp.mip.model.Dataset; -import eu.hbp.mip.model.Query; -import eu.hbp.mip.model.StringDtoResponse; -import io.swagger.annotations.*; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; - -import java.util.Base64; -import java.util.Date; -import java.util.LinkedList; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE; - -@RestController -@RequestMapping(value = "/queries/requests", produces = {APPLICATION_JSON_VALUE}) -@Api(value = "/queries/requests", description = "the requests API") -public class RequestsApi { - - private static final Logger LOGGER = LoggerFactory.getLogger(RequestsApi.class); - - private static final Gson gson = new Gson(); - - private static final Pattern variableExpression = Pattern.compile("\\w+"); - - @ApiOperation(value = "Post a request", response = Dataset.class) - @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) - @RequestMapping(method = RequestMethod.POST) - @Deprecated - public ResponseEntity<Object> postRequests( - @RequestBody @ApiParam(value = "Query to process", required = true) Query query - ) { - LOGGER.info("Post a request"); - - JsonObject dataset = new JsonObject(); - - String code = generateDSCode(query); - Date date = new Date(); - - JsonObject q = gson.fromJson(gson.toJson(query, Query.class), JsonObject.class); - - List<String> variables = extractVarCodes(q, "variables"); - List<String> groupings = extractVarCodes(q, "grouping"); - List<String> covariables = extractVarCodes(q, "covariables"); - - String filters = extractFilters(q); - - List<String> allVars = new LinkedList<>(); - allVars.addAll(variables); - allVars.addAll(groupings); - allVars.addAll(covariables); - - dataset.addProperty("code", code); - dataset.addProperty("date", date.getTime()); - dataset.add("variable", gson.toJsonTree(variables)); - dataset.add("grouping", gson.toJsonTree(groupings)); - dataset.add("header", gson.toJsonTree(covariables)); - - return ResponseEntity.ok(gson.fromJson(dataset, Object.class)); - } - - private List<String> extractVarCodes(JsonObject q, String field) throws IllegalArgumentException { - List<String> codes = new LinkedList<>(); - JsonArray elements = q.getAsJsonArray(field) != null ? q.getAsJsonArray(field) : new JsonArray(); - - for (JsonElement var : elements) { - String varCode = var.getAsJsonObject().get("code").getAsString(); - - Boolean isValidString = variableExpression.matcher(varCode).matches(); - if (!isValidString) { - throw new IllegalArgumentException("You must provide valid variables"); - } - - codes.add(varCode); - } - return codes; - } - - private String extractFilters(JsonObject q) { - return q.getAsJsonPrimitive("filters").getAsString(); - } - - private String generateDSCode(Query query) { - String prefix = "DS"; - String queryStr = Integer.toString(query.hashCode()); - - Pattern p = Pattern.compile("@(\\w+)"); - Matcher m = p.matcher(queryStr); - - String memId; - if (m.find()) { - memId = m.group(1); - } else { - memId = Long.toString(new Date().getTime()); // "This should never happen" - } - - return prefix + memId; - } - - @Value("#{'${services.galaxy.galaxyUsername:admin}'}") - private String galaxyUsername; - - @Value("#{'${services.galaxy.galaxyPassword:admin}'}") - private String galaxyPassword; - - /** - * Get Galaxy Reverse Proxy basic access token. - * - * @return Return a @{@link ResponseEntity} with the token. - */ - @RequestMapping(method = RequestMethod.GET, produces = "application/json") - @ResponseStatus(value = HttpStatus.OK) - public ResponseEntity getGalaxyBasicAccessToken(){ - String stringEncoded = Base64.getEncoder().encodeToString((galaxyUsername + ":" + galaxyPassword).getBytes()); - return ResponseEntity.ok(new StringDtoResponse(stringEncoded)); - } - -} diff --git a/src/main/java/eu/hbp/mip/controllers/SecurityApi.java b/src/main/java/eu/hbp/mip/controllers/SecurityApi.java index 1902f84532eb79d75a900544ef2ef1ce8ec8a074..f949f16ac9dea9a422e5494984080cadb10d089b 100644 --- a/src/main/java/eu/hbp/mip/controllers/SecurityApi.java +++ b/src/main/java/eu/hbp/mip/controllers/SecurityApi.java @@ -4,9 +4,10 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.Gson; import eu.hbp.mip.configuration.SecurityConfiguration; -import eu.hbp.mip.model.StringDtoResponse; +import org.springframework.beans.factory.annotation.Value; import eu.hbp.mip.model.User; import eu.hbp.mip.model.UserInfo; +import eu.hbp.mip.model.StringDtoResponse; import eu.hbp.mip.repositories.UserRepository; import io.swagger.annotations.ApiParam; import org.slf4j.Logger; @@ -57,8 +58,8 @@ public class SecurityApi { if (userInfo.isFakeAuth()) { response.setStatus(401); } - String principalJson = "{\"principal\": \"anonymous\", \"name\": \"anonymous\", \"userAuthentication\": {" + - "\"details\": {\"preferred_username\": \"anonymous\"}}}"; + String principalJson = "{\"principal\": \"anonymous\", \"name\": \"anonymous\", \"userAuthentication\": {" + + "\"details\": {\"preferred_username\": \"anonymous\"}}}"; return new Gson().fromJson(principalJson, Object.class); } @@ -66,7 +67,8 @@ public class SecurityApi { } @RequestMapping(path = "/user", method = RequestMethod.POST) - public ResponseEntity<Void> postUser(@ApiParam(value = "Has the user agreed on the NDA") @RequestParam(value = "agreeNDA") Boolean agreeNDA) { + public ResponseEntity<Void> postUser( + @ApiParam(value = "Has the user agreed on the NDA") @RequestParam(value = "agreeNDA") Boolean agreeNDA) { User user = userInfo.getUser(); if (user != null) { user.setAgreeNDA(agreeNDA); @@ -82,4 +84,23 @@ public class SecurityApi { httpServletResponse.sendRedirect(securityConfiguration.getFrontendRedirectAfterLogin()); } + @Value("#{'${services.galaxy.galaxyUsername:admin}'}") + private String galaxyUsername; + + @Value("#{'${services.galaxy.galaxyPassword:password}'}") + private String galaxyPassword; + + /** + * Get Galaxy Reverse Proxy basic access token. + * + * @return Return a @{@link ResponseEntity} with the token. + */ + + @RequestMapping(path = "/galaxy/token", method = RequestMethod.GET, produces = "application/json") + @ResponseStatus(value = HttpStatus.OK) + public ResponseEntity getGalaxyBasicAccessToken(){ + String stringEncoded = Base64.getEncoder().encodeToString((galaxyUsername + ":" + galaxyPassword).getBytes()); + return ResponseEntity.ok(new StringDtoResponse(stringEncoded)); + } + }