Skip to content

Commit

Permalink
made BRAVA ready for validatation of BrAPI 1.2 endpoints and resources
Browse files Browse the repository at this point in the history
  • Loading branch information
Patrick König committed Jun 12, 2018
1 parent 8d3187f commit 6569844
Show file tree
Hide file tree
Showing 60 changed files with 5,164 additions and 35 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -73,22 +73,22 @@ public Response createEndpoint(@Context HttpHeaders headers,
}

LOGGER.debug("New POST /admin/resources call.");

Dao<Resource, UUID> endpointDao = DataSourceManager.getDao(Resource.class);

try {

//Check auth header
if (!auth(headers)) {
String e = JsonMessageManager.jsonMessage(401, "unauthorized", 4001);
return Response.status(Status.UNAUTHORIZED).entity(e).build();
}

res.setEmail(null);
res.setPublic(true);
endpointDao.create(res);
return Response.status(Status.ACCEPTED).entity(JsonMessageManager.jsonMessage(200, "Public endpoint added.", 2101)).build();

} catch (SQLException e) {
e.printStackTrace();
String e1 = JsonMessageManager.jsonMessage(500, "Internal server error", 5002);
Expand All @@ -114,11 +114,11 @@ public Response createProvider(@Context HttpHeaders headers,
}

LOGGER.debug("New POST /admin/provider call.");

Dao<Provider, UUID> providerDao = DataSourceManager.getDao(Provider.class);

try {

//Check auth header
if (!auth(headers)) {
String e = JsonMessageManager.jsonMessage(401, "unauthorized", 4002);
Expand All @@ -127,14 +127,14 @@ public Response createProvider(@Context HttpHeaders headers,

providerDao.create(prov);
return Response.status(Status.ACCEPTED).entity(JsonMessageManager.jsonMessage(200, "Provider added.", 2102)).build();

} catch (SQLException e) {
e.printStackTrace();
String e1 = JsonMessageManager.jsonMessage(500, "Internal server error", 5002);
return Response.status(Status.INTERNAL_SERVER_ERROR).entity(e1).build();
}
}

/**
* Run the default test on all public resources
*
Expand All @@ -156,15 +156,15 @@ public Response generalTest(@Context HttpHeaders headers, @QueryParam("version")
String e = JsonMessageManager.jsonMessage(401, "unauthorized", 4002);
return Response.status(Status.UNAUTHORIZED).entity(e).build();
}
if (!version.equals("v1.0") && !version.equals("v1.1")) {
if (!version.equals("v1.0") && !version.equals("v1.1") && !version.equals("v1.2")) {
String jsonError = JsonMessageManager.jsonMessage(400, "Missing or invalid version parameter", 4202);
return Response.status(Status.BAD_REQUEST).encoding(jsonError).build();
}

ObjectMapper mapper = new ObjectMapper();

boolean allowAdditional = false; // Strict mode by default -- No additional fields allowed.
boolean allowAdditional = false; // Strict mode by default -- No additional fields allowed.

InputStream inJson = TestCollection.class.getResourceAsStream("/collections/CompleteBrapiTest." + version +".json");
TestCollection tc = mapper.readValue(inJson, TestCollection.class);
List<Resource> publicResources = ResourceService.getAllPublicEndpoints();
Expand All @@ -173,7 +173,7 @@ public Response generalTest(@Context HttpHeaders headers, @QueryParam("version")
RunnerService.TestEndpointWithCallAndSaveReport(resource, tc, allowAdditional);
} catch (SQLException | JsonProcessingException e) {
e.printStackTrace();
}
}
});
System.out.println("Done");
return Response.ok().build();
Expand All @@ -183,7 +183,7 @@ public Response generalTest(@Context HttpHeaders headers, @QueryParam("version")
return Response.status(Status.INTERNAL_SERVER_ERROR).entity(e1).build();
}
}

/**
* Update database information using public json document.
*
Expand All @@ -192,53 +192,53 @@ public Response generalTest(@Context HttpHeaders headers, @QueryParam("version")
@POST
@Path("/updateproviders")
public Response updateProviders(@Context HttpHeaders headers) {

if (Config.get("advancedMode") == null) {
return Response.status(Status.NOT_FOUND).build();
}

LOGGER.debug("New GET /admin/testallpublic call.");

int resourcesUpdated = 0;

try {

//Check auth header
if (!auth(headers)) {
String e = JsonMessageManager.jsonMessage(401, "unauthorized", 4002);
return Response.status(Status.UNAUTHORIZED).entity(e).build();
}

ObjectMapper mapper = new ObjectMapper();
// Required because some resource properties are arrays and some objects.
mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);

// Download Json
URL url = new URL(Config.get("resourceJsonUrl"));

URLConnection connection;
if (!Config.get("http.proxyHost").equals("")) {
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(Config.get("http.proxyHost"), Integer.parseInt(Config.get("http.proxyPort"))));
connection = url.openConnection(proxy);
} else {
connection = url.openConnection();
}

connection.connect();
InputStream is = connection.getInputStream();
JsonNode node = mapper.readTree(is).at("/brapi-providers/category");

Dao<Provider, UUID> providerDao = DataSourceManager.getDao(Provider.class);
Dao<Resource, UUID> resourceDao = DataSourceManager.getDao(Resource.class);

// Iterate through providers.
for (int i = 0; i < node.size(); i++) {
Provider providerJson = mapper.treeToValue(node.get(i), Provider.class);
// Check if provider existed (by name)
Provider providerDb = providerDao.queryBuilder().where()
Provider providerDb = providerDao.queryBuilder().where()
.eq(Provider.NAME_FIELD_NAME, providerJson.getName())
.queryForFirst();

if (providerDb == null) {
//Not found in DB, generate
providerDao.create(providerJson);
Expand All @@ -251,7 +251,7 @@ public Response updateProviders(@Context HttpHeaders headers) {
resourceDao.create(res);
resourcesUpdated++;
}

} else {
// Found in DB, update.
providerDb.setDescription(providerJson.getDescription());
Expand All @@ -264,7 +264,7 @@ public Response updateProviders(@Context HttpHeaders headers) {
.eq(Resource.URL_FIELD_NAME, res.getUrl()).and()
.eq(Resource.PROVIDER_FIELD_NAME, providerDb.getId())
.queryForFirst();

if (resDb == null) {
// Not found, create
res.setProvider(providerDb);
Expand Down Expand Up @@ -293,8 +293,8 @@ public Response updateProviders(@Context HttpHeaders headers) {
return Response.status(Status.INTERNAL_SERVER_ERROR).entity(e1).build();
}
}


private boolean auth(HttpHeaders headers) {
String[] auth = ApiResourceService.getAuth(headers);
//Check auth header
Expand All @@ -306,7 +306,7 @@ private boolean auth(HttpHeaders headers) {
if (!auth[1].equals(Config.get("adminkey"))) {
return false;
}

return true;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ public Response callTest(@QueryParam("url") String url,
String jsonError = JsonMessageManager.jsonMessage(400, "Missing or invalid url parameter", 4202);
return Response.status(Status.BAD_REQUEST).encoding(jsonError).build();
}
if (!version.equals("v1.0") && !version.equals("v1.1")) {
if (!version.equals("v1.0") && !version.equals("v1.1") && !version.equals("v1.2")) {
String jsonError = JsonMessageManager.jsonMessage(400, "Missing or invalid version parameter", 4202);
return Response.status(Status.BAD_REQUEST).encoding(jsonError).build();
}
Expand Down
Loading

0 comments on commit 6569844

Please sign in to comment.