mirror of
https://github.com/gyurix1968/guacamole-client.git
synced 2025-09-07 13:41:21 +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 java.util.List;
|
||||||
import org.glyptodon.guacamole.GuacamoleException;
|
import org.glyptodon.guacamole.GuacamoleException;
|
||||||
|
import org.glyptodon.guacamole.net.auth.Connection;
|
||||||
import org.glyptodon.guacamole.net.auth.ConnectionRecord;
|
import org.glyptodon.guacamole.net.auth.ConnectionRecord;
|
||||||
import org.glyptodon.guacamole.protocol.GuacamoleConfiguration;
|
import org.glyptodon.guacamole.protocol.GuacamoleConfiguration;
|
||||||
|
|
||||||
@@ -28,7 +29,7 @@ import org.glyptodon.guacamole.protocol.GuacamoleConfiguration;
|
|||||||
*
|
*
|
||||||
* @author James Muehlner
|
* @author James Muehlner
|
||||||
*/
|
*/
|
||||||
public class Connection {
|
public class APIConnection {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The name of this connection.
|
* The name of this connection.
|
||||||
@@ -51,17 +52,17 @@ public class Connection {
|
|||||||
private List<? extends ConnectionRecord> history;
|
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.
|
* Create an APIConnection from a Connection record.
|
||||||
* @param connection The connection to create this Connection from.
|
* @param connection The connection to create this APIConnection from.
|
||||||
* @throws GuacamoleException If a problem is encountered while
|
* @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 {
|
throws GuacamoleException {
|
||||||
this.name = connection.getName();
|
this.name = connection.getName();
|
||||||
this.identifier = connection.getIdentifier();
|
this.identifier = connection.getIdentifier();
|
@@ -23,6 +23,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import javax.ws.rs.GET;
|
import javax.ws.rs.GET;
|
||||||
import javax.ws.rs.Path;
|
import javax.ws.rs.Path;
|
||||||
|
import javax.ws.rs.PathParam;
|
||||||
import javax.ws.rs.Produces;
|
import javax.ws.rs.Produces;
|
||||||
import javax.ws.rs.QueryParam;
|
import javax.ws.rs.QueryParam;
|
||||||
import javax.ws.rs.WebApplicationException;
|
import javax.ws.rs.WebApplicationException;
|
||||||
@@ -30,6 +31,7 @@ import javax.ws.rs.core.MediaType;
|
|||||||
import javax.ws.rs.core.Response;
|
import javax.ws.rs.core.Response;
|
||||||
import org.glyptodon.guacamole.GuacamoleException;
|
import org.glyptodon.guacamole.GuacamoleException;
|
||||||
import org.glyptodon.guacamole.GuacamoleSecurityException;
|
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.ConnectionGroup;
|
||||||
import org.glyptodon.guacamole.net.auth.Directory;
|
import org.glyptodon.guacamole.net.auth.Directory;
|
||||||
import org.glyptodon.guacamole.net.auth.UserContext;
|
import org.glyptodon.guacamole.net.auth.UserContext;
|
||||||
@@ -52,13 +54,23 @@ public class ConnectionRESTService {
|
|||||||
private AuthenticationService authenticationService;
|
private AuthenticationService authenticationService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A service for managing the REST endpoint Connection objects.
|
* A service for managing the REST endpoint APIConnection objects.
|
||||||
*/
|
*/
|
||||||
@Inject
|
@Inject
|
||||||
private ConnectionService connectionService;
|
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
|
@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);
|
UserContext userContext = authenticationService.getUserContextFromAuthToken(authToken);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -78,12 +90,11 @@ public class ConnectionRESTService {
|
|||||||
.entity(new APIError("No ConnectionGroup found with the provided parentID."))
|
.entity(new APIError("No ConnectionGroup found with the provided parentID."))
|
||||||
.build());
|
.build());
|
||||||
|
|
||||||
Directory<String, org.glyptodon.guacamole.net.auth.Connection> connectionDirectory =
|
Directory<String, Connection> connectionDirectory =
|
||||||
parentConnectionGroup.getConnectionDirectory();
|
parentConnectionGroup.getConnectionDirectory();
|
||||||
|
|
||||||
// Get the list of connection names
|
// Get the list of connection names
|
||||||
List<org.glyptodon.guacamole.net.auth.Connection> connections
|
List<Connection> connections = new ArrayList<Connection>();
|
||||||
= new ArrayList<org.glyptodon.guacamole.net.auth.Connection>();
|
|
||||||
Iterable<String> identifiers = connectionDirectory.getIdentifiers();
|
Iterable<String> identifiers = connectionDirectory.getIdentifiers();
|
||||||
|
|
||||||
// Get the connection for each name
|
// Get the connection for each name
|
||||||
@@ -101,5 +112,46 @@ public class ConnectionRESTService {
|
|||||||
.entity(e).build());
|
.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 {
|
public class ConnectionService {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts a list of org.glyptodon.guacamole.net.auth.Connection to
|
* Converts a list of org.glyptodon.guacamole.net.auth.APIConnection to
|
||||||
* Connection objects for exposure with the REST endpoints.
|
* 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.
|
* 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
|
* @throws GuacamoleException If an error occurs while converting the
|
||||||
* connections.
|
* 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 {
|
throws GuacamoleException {
|
||||||
List<Connection> restConnections = new ArrayList<Connection>();
|
List<APIConnection> restConnections = new ArrayList<APIConnection>();
|
||||||
|
|
||||||
for(org.glyptodon.guacamole.net.auth.Connection connection : connections) {
|
for(org.glyptodon.guacamole.net.auth.Connection connection : connections) {
|
||||||
restConnections.add(new Connection(connection));
|
restConnections.add(new APIConnection(connection));
|
||||||
}
|
}
|
||||||
|
|
||||||
return restConnections;
|
return restConnections;
|
||||||
|
Reference in New Issue
Block a user