1896b652239a05e429460a79ea1a471c3085d64f
[jalview.git] / src / jalview / javascript / web / WebResource.java
1 package jalview.javascript.web;
2
3 import jalview.util.Platform;
4
5 import java.net.MalformedURLException;
6 import java.net.URI;
7 import java.net.URISyntaxException;
8 import java.net.URL;
9
10 /*
11  *  A JavaScript-only proxy for com.sun.jersey.api.client.WebResource
12  * 
13  */
14 public class WebResource
15 {
16
17   private String endpoint, params = "";
18
19   public WebResource(String endpoint)
20   {
21     this.endpoint = endpoint;
22   }
23
24   public WebResource queryParam(String key, String value)
25   {
26     params += (params == "" ? "?" : "&") + key + "="
27             + Platform.encodeURI(value);
28     return this;
29   }
30
31   public URI getURI()
32   {
33     try
34     {
35       return new URI(endpoint + params);
36     } catch (URISyntaxException e)
37     {
38       e.printStackTrace();
39       return null;
40     }
41   }
42
43   public Builder accept(String... encoding)
44   {
45     return new Builder(getURI(), encoding);
46   }
47
48   public static class Builder
49   {
50     private URI uri;
51
52     private String[] encoding;
53
54     public Builder(URI uri, String... encoding)
55     {
56       this.uri = uri;
57       this.encoding = encoding; // application/json
58     }
59
60     /**
61      * Get the response
62      * 
63      * @param c
64      *          must be ClientResponse
65      * @return
66      */
67     public ClientResponse get(Class<?> c)
68     {
69       try
70       {
71         return new ClientResponse(new URL(uri.toString()), encoding);
72       } catch (MalformedURLException e)
73       {
74         return null;
75       }
76     }
77   }
78
79 }