Skip to content

Commit

Permalink
Merge pull request #237
Browse files Browse the repository at this point in the history
  • Loading branch information
kohsuke committed Dec 1, 2015
2 parents 723bb89 + 261a7a3 commit 79f86b8
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 4 deletions.
5 changes: 3 additions & 2 deletions src/main/java/org/kohsuke/github/GitHubBuilder.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package org.kohsuke.github;

import org.apache.commons.io.IOUtils;
import org.kohsuke.github.extras.ImpatientHttpConnector;

import java.io.File;
import java.io.FileInputStream;
Expand Down Expand Up @@ -184,11 +185,11 @@ public GitHubBuilder withRateLimitHandler(RateLimitHandler handler) {
* the system default one.
*/
public GitHubBuilder withProxy(final Proxy p) {
return withConnector(new HttpConnector() {
return withConnector(new ImpatientHttpConnector(new HttpConnector() {
public HttpURLConnection connect(URL url) throws IOException {
return (HttpURLConnection) url.openConnection(p);
}
});
}));
}

public GitHub build() throws IOException {
Expand Down
7 changes: 5 additions & 2 deletions src/main/java/org/kohsuke/github/HttpConnector.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
package org.kohsuke.github;

import org.kohsuke.github.extras.ImpatientHttpConnector;

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.concurrent.TimeUnit;

/**
* Pluggability for customizing HTTP request behaviors or using altogether different library.
Expand All @@ -21,9 +24,9 @@ public interface HttpConnector {
/**
* Default implementation that uses {@link URL#openConnection()}.
*/
HttpConnector DEFAULT = new HttpConnector() {
HttpConnector DEFAULT = new ImpatientHttpConnector(new HttpConnector() {
public HttpURLConnection connect(URL url) throws IOException {
return (HttpURLConnection) url.openConnection();
}
};
});
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package org.kohsuke.github.extras;

import org.kohsuke.github.HttpConnector;

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.concurrent.TimeUnit;

/**
* {@link HttpConnector} wrapper that sets timeout
*
* @author Kohsuke Kawaguchi
*/
public class ImpatientHttpConnector implements HttpConnector {
private final HttpConnector base;
private final int readTimeout, connectTimeout;

/**
* @param connectTimeout
* HTTP connection timeout in milliseconds
* @param readTimeout
* HTTP read timeout in milliseconds
*/
public ImpatientHttpConnector(HttpConnector base, int connectTimeout, int readTimeout) {
this.base = base;
this.connectTimeout = connectTimeout;
this.readTimeout = readTimeout;
}

public ImpatientHttpConnector(HttpConnector base, int timeout) {
this(base,timeout,timeout);
}

public ImpatientHttpConnector(HttpConnector base) {
this(base,CONNECT_TIMEOUT,READ_TIMEOUT);
}

public HttpURLConnection connect(URL url) throws IOException {
HttpURLConnection con = base.connect(url);
con.setConnectTimeout(connectTimeout);
con.setReadTimeout(readTimeout);
return con;
}

/**
* Default connection timeout in milliseconds
*/
public static int CONNECT_TIMEOUT = (int) TimeUnit.SECONDS.toMillis(10);
/**
* Default read timeout in milliseconds
*/
public static int READ_TIMEOUT = (int) TimeUnit.SECONDS.toMillis(10);
}

0 comments on commit 79f86b8

Please sign in to comment.