/
HttpClientBase.java
118 lines (95 loc) · 4.48 KB
/
HttpClientBase.java
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
package twitter4j;
import twitter4j.auth.Authorization;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
public abstract class HttpClientBase implements HttpClient, Serializable {
private static final Logger logger = Logger.getLogger(HttpClientBase.class);
private static final long serialVersionUID = -8016974810651763053L;
protected final HttpClientConfiguration CONF;
private final Map<String, String> requestHeaders;
public HttpClientBase(HttpClientConfiguration conf) {
this.CONF = conf;
requestHeaders = new HashMap<String, String>();
requestHeaders.put("X-Twitter-Client-Version", Version.getVersion());
requestHeaders.put("X-Twitter-Client-URL", "http://twitter4j.org/en/twitter4j-" + Version.getVersion() + ".xml");
requestHeaders.put("X-Twitter-Client", "Twitter4J");
requestHeaders.put("User-Agent", "twitter4j http://twitter4j.org/ /" + Version.getVersion());
if (conf.isGZIPEnabled()) {
requestHeaders.put("Accept-Encoding", "gzip");
}
}
protected boolean isProxyConfigured() {
return CONF.getHttpProxyHost() != null && !CONF.getHttpProxyHost().equals("");
}
public void write(DataOutputStream out, String outStr) throws IOException {
out.writeBytes(outStr);
logger.debug(outStr);
}
public Map<String, String> getRequestHeaders() {
return requestHeaders;
}
public void addDefaultRequestHeader(String name, String value) {
requestHeaders.put(name, value);
}
public final HttpResponse request(HttpRequest req) throws TwitterException {
return handleRequest(req);
}
public final HttpResponse request(HttpRequest req, HttpResponseListener listener) throws TwitterException {
try {
HttpResponse res = handleRequest(req);
if (listener != null) {
listener.httpResponseReceived(new HttpResponseEvent(req, res, null));
}
return res;
} catch (TwitterException te) {
if (listener != null) {
listener.httpResponseReceived(new HttpResponseEvent(req, null, te));
}
throw te;
}
}
abstract HttpResponse handleRequest(HttpRequest req) throws TwitterException;
@Override
public HttpResponse get(String url, HttpParameter[] parameters
, Authorization authorization, HttpResponseListener listener) throws TwitterException {
return request(new HttpRequest(RequestMethod.GET, url, parameters, authorization, this.requestHeaders), listener);
}
@Override
public HttpResponse get(String url) throws TwitterException {
return request(new HttpRequest(RequestMethod.GET, url, null, null, this.requestHeaders));
}
@Override
public HttpResponse post(String url, HttpParameter[] parameters
, Authorization authorization, HttpResponseListener listener) throws TwitterException {
return request(new HttpRequest(RequestMethod.POST, url, parameters, authorization, this.requestHeaders), listener);
}
@Override
public HttpResponse post(String url) throws TwitterException {
return request(new HttpRequest(RequestMethod.POST, url, null, null, this.requestHeaders));
}
@Override
public HttpResponse delete(String url, HttpParameter[] parameters
, Authorization authorization, HttpResponseListener listener) throws TwitterException {
return request(new HttpRequest(RequestMethod.DELETE, url, parameters, authorization, this.requestHeaders), listener);
}
@Override
public HttpResponse delete(String url) throws TwitterException {
return request(new HttpRequest(RequestMethod.DELETE, url, null, null, this.requestHeaders));
}
@Override
public HttpResponse head(String url) throws TwitterException {
return request(new HttpRequest(RequestMethod.HEAD, url, null, null, this.requestHeaders));
}
@Override
public HttpResponse put(String url, HttpParameter[] parameters
, Authorization authorization, HttpResponseListener listener) throws TwitterException {
return request(new HttpRequest(RequestMethod.PUT, url, parameters, authorization, this.requestHeaders), listener);
}
@Override
public HttpResponse put(String url) throws TwitterException {
return request(new HttpRequest(RequestMethod.PUT, url, null, null, this.requestHeaders));
}
}