mirror of
https://github.com/gyurix1968/guacamole-client.git
synced 2025-09-06 13:17:41 +00:00
Ticket #362: Added getConnection() with path-params.
This commit is contained in:
@@ -20,6 +20,7 @@ package org.glyptodon.guacamole.net.basic.rest.connection;
|
||||
|
||||
import java.util.List;
|
||||
import org.glyptodon.guacamole.GuacamoleException;
|
||||
import org.glyptodon.guacamole.net.auth.Connection;
|
||||
import org.glyptodon.guacamole.net.auth.ConnectionRecord;
|
||||
import org.glyptodon.guacamole.protocol.GuacamoleConfiguration;
|
||||
|
||||
@@ -28,7 +29,7 @@ import org.glyptodon.guacamole.protocol.GuacamoleConfiguration;
|
||||
*
|
||||
* @author James Muehlner
|
||||
*/
|
||||
public class Connection {
|
||||
public class APIConnection {
|
||||
|
||||
/**
|
||||
* The name of this connection.
|
||||
@@ -51,17 +52,17 @@ public class Connection {
|
||||
private List<? extends ConnectionRecord> history;
|
||||
|
||||
/**
|
||||
* Create an empty Connection.
|
||||
* Create an empty APIConnection.
|
||||
*/
|
||||
public Connection() {}
|
||||
public APIConnection() {}
|
||||
|
||||
/**
|
||||
* Create a Connection from a org.glyptodon.guacamole.net.auth.Connection.
|
||||
* @param connection The connection to create this Connection from.
|
||||
* Create an APIConnection from a Connection record.
|
||||
* @param connection The connection to create this APIConnection from.
|
||||
* @throws GuacamoleException If a problem is encountered while
|
||||
* instantiating this new Connection.
|
||||
* instantiating this new APIConnection.
|
||||
*/
|
||||
public Connection(org.glyptodon.guacamole.net.auth.Connection connection)
|
||||
public APIConnection(Connection connection)
|
||||
throws GuacamoleException {
|
||||
this.name = connection.getName();
|
||||
this.identifier = connection.getIdentifier();
|
@@ -23,6 +23,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.PathParam;
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.QueryParam;
|
||||
import javax.ws.rs.WebApplicationException;
|
||||
@@ -30,6 +31,7 @@ import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
import org.glyptodon.guacamole.GuacamoleException;
|
||||
import org.glyptodon.guacamole.GuacamoleSecurityException;
|
||||
import org.glyptodon.guacamole.net.auth.Connection;
|
||||
import org.glyptodon.guacamole.net.auth.ConnectionGroup;
|
||||
import org.glyptodon.guacamole.net.auth.Directory;
|
||||
import org.glyptodon.guacamole.net.auth.UserContext;
|
||||
@@ -52,13 +54,23 @@ public class ConnectionRESTService {
|
||||
private AuthenticationService authenticationService;
|
||||
|
||||
/**
|
||||
* A service for managing the REST endpoint Connection objects.
|
||||
* A service for managing the REST endpoint APIConnection objects.
|
||||
*/
|
||||
@Inject
|
||||
private ConnectionService connectionService;
|
||||
|
||||
/**
|
||||
* Gets a list of connections with the given ConnectionGroup parentID.
|
||||
* If no parentID is provided, returns the connections from the root group.
|
||||
*
|
||||
* @param authToken The authentication token that is used to authenticate
|
||||
* the user performing the operation.
|
||||
* @param parentID The ID of the ConnectionGroup the connections
|
||||
* belong to. If null, the root connection group will be used.
|
||||
* @return The connection list.
|
||||
*/
|
||||
@GET
|
||||
public List<Connection> getConnections(@QueryParam("token") String authToken, @QueryParam("parentID") String parentID) {
|
||||
public List<APIConnection> getConnections(@QueryParam("token") String authToken, @QueryParam("parentID") String parentID) {
|
||||
UserContext userContext = authenticationService.getUserContextFromAuthToken(authToken);
|
||||
|
||||
try {
|
||||
@@ -78,12 +90,11 @@ public class ConnectionRESTService {
|
||||
.entity(new APIError("No ConnectionGroup found with the provided parentID."))
|
||||
.build());
|
||||
|
||||
Directory<String, org.glyptodon.guacamole.net.auth.Connection> connectionDirectory =
|
||||
Directory<String, Connection> connectionDirectory =
|
||||
parentConnectionGroup.getConnectionDirectory();
|
||||
|
||||
// Get the list of connection names
|
||||
List<org.glyptodon.guacamole.net.auth.Connection> connections
|
||||
= new ArrayList<org.glyptodon.guacamole.net.auth.Connection>();
|
||||
List<Connection> connections = new ArrayList<Connection>();
|
||||
Iterable<String> identifiers = connectionDirectory.getIdentifiers();
|
||||
|
||||
// Get the connection for each name
|
||||
@@ -101,5 +112,46 @@ public class ConnectionRESTService {
|
||||
.entity(e).build());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets an individual connection.
|
||||
*
|
||||
* @param authToken The authentication token that is used to authenticate
|
||||
* the user performing the operation.
|
||||
* @param connectionID The ID of the APIConnection..
|
||||
* @return The connection.
|
||||
*/
|
||||
@GET
|
||||
@Path("/{connectionID}")
|
||||
public APIConnection getConnection(@QueryParam("token") String authToken, @PathParam("connectionID") String connectionID) {
|
||||
UserContext userContext = authenticationService.getUserContextFromAuthToken(authToken);
|
||||
|
||||
try {
|
||||
|
||||
// Get the connection directory
|
||||
ConnectionGroup rootGroup = userContext.getRootConnectionGroup();
|
||||
Directory<String, Connection> connectionDirectory =
|
||||
rootGroup.getConnectionDirectory();
|
||||
|
||||
// Get the connection
|
||||
Connection connection = connectionDirectory.get(connectionID);
|
||||
|
||||
if(connection == null)
|
||||
throw new WebApplicationException(
|
||||
Response.status(Response.Status.BAD_REQUEST)
|
||||
.entity(new APIError("No Connection found with the provided ID."))
|
||||
.build());
|
||||
|
||||
return new APIConnection(connection);
|
||||
} catch(GuacamoleSecurityException e) {
|
||||
throw new WebApplicationException(
|
||||
Response.status(Response.Status.UNAUTHORIZED)
|
||||
.entity(new APIError("Permission Denied.")).build());
|
||||
} catch(GuacamoleException e) {
|
||||
throw new WebApplicationException(
|
||||
Response.status(Response.Status.INTERNAL_SERVER_ERROR)
|
||||
.entity(e).build());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -30,21 +30,21 @@ import org.glyptodon.guacamole.GuacamoleException;
|
||||
public class ConnectionService {
|
||||
|
||||
/**
|
||||
* Converts a list of org.glyptodon.guacamole.net.auth.Connection to
|
||||
* Connection objects for exposure with the REST endpoints.
|
||||
* Converts a list of org.glyptodon.guacamole.net.auth.APIConnection to
|
||||
* APIConnection objects for exposure with the REST endpoints.
|
||||
*
|
||||
* @param connections The org.glyptodon.guacamole.net.auth.Connection to
|
||||
* @param connections The org.glyptodon.guacamole.net.auth.APIConnection to
|
||||
* convert for REST endpoint use.
|
||||
* @return A List of Connection objects for use with the REST endpoint.
|
||||
* @return A List of APIConnection objects for use with the REST endpoint.
|
||||
* @throws GuacamoleException If an error occurs while converting the
|
||||
* connections.
|
||||
*/
|
||||
public List<Connection> convertConnectionList(List<? extends org.glyptodon.guacamole.net.auth.Connection> connections)
|
||||
public List<APIConnection> convertConnectionList(List<? extends org.glyptodon.guacamole.net.auth.Connection> connections)
|
||||
throws GuacamoleException {
|
||||
List<Connection> restConnections = new ArrayList<Connection>();
|
||||
List<APIConnection> restConnections = new ArrayList<APIConnection>();
|
||||
|
||||
for(org.glyptodon.guacamole.net.auth.Connection connection : connections) {
|
||||
restConnections.add(new Connection(connection));
|
||||
restConnections.add(new APIConnection(connection));
|
||||
}
|
||||
|
||||
return restConnections;
|
||||
|
Reference in New Issue
Block a user