aboutsummaryrefslogtreecommitdiff
path: root/src/uk/org/ury/server/ServerRequestHandler.java
blob: df67faf8471d8772d7350d1214209e063e6471eb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/**
 * 
 */
package uk.org.ury.server;

import java.util.HashMap;
import java.util.Map;

import uk.org.ury.server.Server;
import uk.org.ury.server.ApiRequestHandler;
import uk.org.ury.server.exceptions.HandleFailureException;


/**
 * A request handler for server queries.
 * 
 * @author Matt Windsor
 */

public class ServerRequestHandler implements ApiRequestHandler
{
  /**
   * Handle a server GET request (that is, a request for data 
   * output).
   * 
   * @param parameters  A key-value map of parameters supplied with
   *                    the server request.  Typically, the function 
   *                    parameter will detail the function that the 
   *                    request handler is expected to perform.
   *                    
   * @param server      The server from which the request originated.
   *                    This will be able to provide the handler with 
   *                    pooled resources, for example the database.
   * 
   * @return            A list of lines to return in the body of the 
   *                    server's response to the client.
   *                  
   * @throws            HandleFailureException if the handler cannot 
   *                    handle the request.
   */
  
  @Override
  public Map<String, Object>
  handleGetRequest (Map<String, String> parameters, Server server)
  throws HandleFailureException
  {
    Map<String, Object> response = new HashMap<String, Object> ();
    
    if (parameters.containsKey ("function"))
      {
        String function = parameters.get ("function");
        
        if (function.equals ("info"))
          {
            getInfo (response, server);
          }
        else if (function.equals ("help"))
          {
            response.put ("INFO", "Available functions:");
            response.put ("INFO", "info - Get server information.");
          }
        else if (function.equals ("test"))
          response.put ("INFO", "Test succeeded.");
        else
          throw new HandleFailureException ("Unknown function: "
                                            + function + ". (Try 'function=help'.)");
            
      }
    else
      throw new HandleFailureException ("No function provided.  (Try 'function=help'.)");
    
    return response;
  }

  
  /**
   * Retrieve information about the server.
   * 
   * @param response    The response list to populate.
   * 
   * @param server      The server providing database resources.
   * 
   * @throws            HandleFailureException if an error occurs
   *                    that thwarts the handling of the request.
   */
  
  private void
  getInfo (Map<String, Object> response, Server server)
  throws HandleFailureException
  {
    response.put ("INFO", "University Radio York BAPS Replacement");
    response.put ("INFO", "Server version is " + server.getVersion ());
  }
    
}