source: josm/trunk/src/org/openstreetmap/josm/data/oauth/SignpostAdapters.java@ 15222

Last change on this file since 15222 was 15222, checked in by Don-vip, 5 years ago

fix #17882 - Disable automatic HTTP POST retry after 5 minutes, see https://bugs.openjdk.java.net/browse/JDK-6382788

  • Property svn:eol-style set to native
File size: 4.5 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.data.oauth;
3
4import java.io.IOException;
5import java.io.InputStream;
6import java.net.URL;
7import java.util.Map;
8
9import org.openstreetmap.josm.tools.HttpClient;
10
11import oauth.signpost.AbstractOAuthConsumer;
12import oauth.signpost.AbstractOAuthProvider;
13
14/**
15 * Adapters to make {@code oauth.signpost} work with {@link HttpClient}.
16 */
17public final class SignpostAdapters {
18
19 private SignpostAdapters() {
20 // Hide constructor for utility classes
21 }
22
23 /**
24 * OAuth provider.
25 */
26 public static class OAuthProvider extends AbstractOAuthProvider {
27
28 private static final long serialVersionUID = 1L;
29
30 /**
31 * Constructs a new {@code OAuthProvider}.
32 * @param requestTokenEndpointUrl request token endpoint URL
33 * @param accessTokenEndpointUrl access token endpoint URL
34 * @param authorizationWebsiteUrl authorization website URL
35 */
36 public OAuthProvider(String requestTokenEndpointUrl, String accessTokenEndpointUrl, String authorizationWebsiteUrl) {
37 super(requestTokenEndpointUrl, accessTokenEndpointUrl, authorizationWebsiteUrl);
38 }
39
40 @Override
41 protected HttpRequest createRequest(String endpointUrl) throws Exception {
42 return new HttpRequest(HttpClient.create(new URL(endpointUrl)));
43 }
44
45 @Override
46 protected HttpResponse sendRequest(oauth.signpost.http.HttpRequest request) throws Exception {
47 return new HttpResponse(((HttpRequest) request).request.connect());
48 }
49
50 @Override
51 protected void closeConnection(oauth.signpost.http.HttpRequest request, oauth.signpost.http.HttpResponse response) throws Exception {
52 if (response != null) {
53 ((HttpResponse) response).response.disconnect();
54 } else if (request != null) {
55 ((HttpRequest) request).request.disconnect();
56 }
57 }
58 }
59
60 /**
61 * OAuth consumer.
62 */
63 public static class OAuthConsumer extends AbstractOAuthConsumer {
64
65 private static final long serialVersionUID = 1L;
66
67 /**
68 * Constructs a new {@code OAuthConsumer}.
69 * @param consumerKey consumer key
70 * @param consumerSecret consumer secret
71 */
72 public OAuthConsumer(String consumerKey, String consumerSecret) {
73 super(consumerKey, consumerSecret);
74 }
75
76 @Override
77 protected HttpRequest wrap(Object request) {
78 return new HttpRequest((HttpClient) request);
79 }
80 }
81
82 static final class HttpRequest implements oauth.signpost.http.HttpRequest {
83 final HttpClient request;
84
85 HttpRequest(HttpClient request) {
86 this.request = request;
87 }
88
89 @Override
90 public void setHeader(String name, String value) {
91 request.setHeader(name, value);
92 }
93
94 @Override
95 public String getMethod() {
96 return request.getRequestMethod();
97 }
98
99 @Override
100 public String getRequestUrl() {
101 return request.getURL().toExternalForm();
102 }
103
104 @Override
105 public String getContentType() {
106 return request.getRequestHeader("Content-Type");
107 }
108
109 @Override
110 public String getHeader(String name) {
111 return request.getRequestHeader(name);
112 }
113
114 @Override
115 public InputStream getMessagePayload() {
116 return null;
117 }
118
119 @Override
120 public void setRequestUrl(String url) {
121 throw new IllegalStateException();
122 }
123
124 @Override
125 public Map<String, String> getAllHeaders() {
126 throw new IllegalStateException();
127 }
128
129 @Override
130 public Object unwrap() {
131 throw new IllegalStateException();
132 }
133 }
134
135 static final class HttpResponse implements oauth.signpost.http.HttpResponse {
136 final HttpClient.Response response;
137
138 HttpResponse(HttpClient.Response response) {
139 this.response = response;
140 }
141
142 @Override
143 public int getStatusCode() {
144 return response.getResponseCode();
145 }
146
147 @Override
148 public String getReasonPhrase() {
149 return response.getResponseMessage();
150 }
151
152 @Override
153 public InputStream getContent() throws IOException {
154 return response.getContent();
155 }
156
157 @Override
158 public Object unwrap() {
159 throw new IllegalStateException();
160 }
161 }
162}
Note: See TracBrowser for help on using the repository browser.