Skip to content

Commit 5e95362

Browse files
committed
added files
1 parent e92d4e6 commit 5e95362

File tree

7 files changed

+114
-16
lines changed

7 files changed

+114
-16
lines changed

samples/client/wordnik-api/android/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<artifactId>wordnik-android-client</artifactId>
66
<packaging>jar</packaging>
77
<name>wordnik-android-client</name>
8-
<version>1.0.0</version>
8+
<version>4.0</version>
99
<scm>
1010
<connection>scm:git:[email protected]:wordnik/swagger-mustache.git</connection>
1111
<developerConnection>scm:git:[email protected]:wordnik/swagger-codegen.git</developerConnection>
@@ -207,7 +207,7 @@
207207
<maven-plugin-version>1.0.0</maven-plugin-version>
208208
<junit-version>4.8.1</junit-version>
209209
<scala-test-version>1.6.1</scala-test-version>
210-
<httpclient-version>4.2.3</httpclient-version>
210+
<httpclient-version>4.0</httpclient-version>
211211
<scala-maven-plugin-version>3.1.5</scala-maven-plugin-version>
212212
</properties>
213213
</project>

samples/client/wordnik-api/android/src/main/java/com/wordnik/client/api/AccountApi.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@ public void addHeader(String key, String value) {
1919
public ApiInvoker getInvoker() {
2020
return apiInvoker;
2121
}
22-
22+
2323
public void setBasePath(String basePath) {
2424
this.basePath = basePath;
2525
}
26-
26+
2727
public String getBasePath() {
2828
return basePath;
2929
}

samples/client/wordnik-api/android/src/main/java/com/wordnik/client/api/WordApi.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,11 @@ public void addHeader(String key, String value) {
2626
public ApiInvoker getInvoker() {
2727
return apiInvoker;
2828
}
29-
29+
3030
public void setBasePath(String basePath) {
3131
this.basePath = basePath;
3232
}
33-
33+
3434
public String getBasePath() {
3535
return basePath;
3636
}

samples/client/wordnik-api/android/src/main/java/com/wordnik/client/api/WordListApi.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@ public void addHeader(String key, String value) {
1818
public ApiInvoker getInvoker() {
1919
return apiInvoker;
2020
}
21-
21+
2222
public void setBasePath(String basePath) {
2323
this.basePath = basePath;
2424
}
25-
25+
2626
public String getBasePath() {
2727
return basePath;
2828
}

samples/client/wordnik-api/android/src/main/java/com/wordnik/client/api/WordListsApi.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ public void addHeader(String key, String value) {
1616
public ApiInvoker getInvoker() {
1717
return apiInvoker;
1818
}
19-
19+
2020
public void setBasePath(String basePath) {
2121
this.basePath = basePath;
2222
}
23-
23+
2424
public String getBasePath() {
2525
return basePath;
2626
}

samples/client/wordnik-api/android/src/main/java/com/wordnik/client/api/WordsApi.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@ public void addHeader(String key, String value) {
1919
public ApiInvoker getInvoker() {
2020
return apiInvoker;
2121
}
22-
22+
2323
public void setBasePath(String basePath) {
2424
this.basePath = basePath;
2525
}
26-
26+
2727
public String getBasePath() {
2828
return basePath;
2929
}

samples/client/wordnik-api/android/src/main/java/com/wordnik/client/common/ApiInvoker.java

Lines changed: 102 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,18 @@
99
import org.apache.http.*;
1010
import org.apache.http.client.*;
1111
import org.apache.http.client.methods.*;
12+
import org.apache.http.conn.*;
13+
import org.apache.http.conn.scheme.*;
14+
import org.apache.http.conn.ssl.*;
1215
import org.apache.http.entity.StringEntity;
1316
import org.apache.http.impl.client.*;
17+
import org.apache.http.impl.conn.*;
18+
import org.apache.http.params.*;
1419
import org.apache.http.util.EntityUtils;
1520

1621
import java.io.File;
22+
import java.net.Socket;
23+
import java.net.UnknownHostException;
1724
import java.net.URLEncoder;
1825

1926
import java.util.Map;
@@ -22,15 +29,50 @@
2229
import java.io.IOException;
2330
import java.io.UnsupportedEncodingException;
2431

32+
import java.security.GeneralSecurityException;
33+
import java.security.KeyManagementException;
34+
import java.security.KeyStore;
35+
import java.security.NoSuchAlgorithmException;
36+
import java.security.SecureRandom;
37+
import java.security.cert.*;
38+
39+
import java.text.DateFormat;
40+
import java.text.SimpleDateFormat;
41+
42+
import java.util.Date;
43+
import java.util.Random;
44+
import java.util.logging.Level;
45+
import java.util.logging.Logger;
46+
47+
import javax.crypto.Mac;
48+
import javax.crypto.spec.SecretKeySpec;
49+
50+
import javax.net.ssl.SSLContext;
51+
import javax.net.ssl.TrustManager;
52+
import javax.net.ssl.X509TrustManager;
53+
2554
public class ApiInvoker {
2655
private static ApiInvoker INSTANCE = new ApiInvoker();
2756
private Map<String, String> defaultHeaderMap = new HashMap<String, String>();
2857

2958
private HttpClient client = null;
59+
60+
private boolean ignoreSSLCertificates = false;
61+
62+
private ClientConnectionManager ignoreSSLConnectionManager;
63+
64+
public ApiInvoker() {
65+
initConnectionManager();
66+
}
67+
3068
public static ApiInvoker getInstance() {
3169
return INSTANCE;
3270
}
3371

72+
public void ignoreSSLCertificates(boolean ignoreSSLCertificates) {
73+
this.ignoreSSLCertificates = ignoreSSLCertificates;
74+
}
75+
3476
public void addDefaultHeader(String key, String value) {
3577
defaultHeaderMap.put(key, value);
3678
}
@@ -114,8 +156,11 @@ public String invokeAPI(String host, String path, String method, Map<String, Str
114156
}
115157
else if ("POST".equals(method)) {
116158
HttpPost post = new HttpPost(url);
117-
post.setHeader("Content-Type", contentType);
118-
post.setEntity(new StringEntity(serialize(body), "UTF-8"));
159+
160+
if (body != null) {
161+
post.setHeader("Content-Type", contentType);
162+
post.setEntity(new StringEntity(serialize(body), "UTF-8"));
163+
}
119164
for(String key : headers.keySet()) {
120165
post.setHeader(key, headers.get(key));
121166
}
@@ -167,8 +212,61 @@ else if(code >= 200 && code < 300) {
167212
}
168213

169214
private HttpClient getClient(String host) {
170-
if(client == null)
171-
client = new DefaultHttpClient();
215+
if (client == null) {
216+
if (ignoreSSLCertificates && ignoreSSLConnectionManager != null) {
217+
// Trust self signed certificates
218+
client = new DefaultHttpClient(ignoreSSLConnectionManager, new BasicHttpParams());
219+
} else {
220+
client = new DefaultHttpClient();
221+
}
222+
}
172223
return client;
173224
}
225+
226+
private void initConnectionManager() {
227+
try {
228+
final SSLContext sslContext = SSLContext.getInstance("SSL");
229+
230+
// set up a TrustManager that trusts everything
231+
TrustManager[] trustManagers = new TrustManager[] {
232+
new X509TrustManager() {
233+
public X509Certificate[] getAcceptedIssuers() {
234+
return null;
235+
}
236+
public void checkClientTrusted(X509Certificate[] certs, String authType) {}
237+
public void checkServerTrusted(X509Certificate[] certs, String authType) {}
238+
}};
239+
240+
sslContext.init(null, trustManagers, new SecureRandom());
241+
242+
SSLSocketFactory sf = new SSLSocketFactory((KeyStore)null) {
243+
private javax.net.ssl.SSLSocketFactory sslFactory = sslContext.getSocketFactory();
244+
245+
public Socket createSocket(Socket socket, String host, int port, boolean autoClose)
246+
throws IOException, UnknownHostException {
247+
return sslFactory.createSocket(socket, host, port, autoClose);
248+
}
249+
250+
public Socket createSocket() throws IOException {
251+
return sslFactory.createSocket();
252+
}
253+
};
254+
255+
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
256+
Scheme httpsScheme = new Scheme("https", sf, 443);
257+
SchemeRegistry schemeRegistry = new SchemeRegistry();
258+
schemeRegistry.register(httpsScheme);
259+
schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
260+
261+
ignoreSSLConnectionManager = new SingleClientConnManager(new BasicHttpParams(), schemeRegistry);
262+
} catch (NoSuchAlgorithmException e) {
263+
// This will only be thrown if SSL isn't available for some reason.
264+
} catch (KeyManagementException e) {
265+
// This might be thrown when passing a key into init(), but no key is being passed.
266+
} catch (GeneralSecurityException e) {
267+
// This catches anything else that might go wrong.
268+
// If anything goes wrong we default to the standard connection manager.
269+
}
270+
}
174271
}
272+

0 commit comments

Comments
 (0)