Compare commits

...

12 Commits

Author SHA1 Message Date
Kohsuke Kawaguchi
8353499d18 [maven-release-plugin] prepare release github-api-1.51 2014-04-13 08:58:49 -07:00
Kohsuke Kawaguchi
d2c5994616 I always get this confused 2014-04-13 08:57:48 -07:00
Kohsuke Kawaguchi
500b9097f7 doc improvement 2014-04-13 08:53:00 -07:00
Kohsuke Kawaguchi
7993266e6e This is also useful for setting timeout 2014-04-13 08:51:58 -07:00
Kohsuke Kawaguchi
74090103a9 doc improvement 2014-04-13 08:48:16 -07:00
Kohsuke Kawaguchi
a18cde2340 Abstracted away HTTP connector and added OkHttp implementation for convenience 2014-04-13 08:46:21 -07:00
Kohsuke Kawaguchi
ee98e97876 Merge pull request #80 from rtyley/remove-member-of-org
Add support for removing a user from an Organisation
2014-04-13 08:22:23 -07:00
Kohsuke Kawaguchi
ff63bafd72 Merge pull request #82 from prazanna/master
Cast url.openConnection() to HttpURLConnection instead of HttpsURLConnec...
2014-04-13 08:22:00 -07:00
Prasanna Rajaperumal
3f8c8be77a Cast url.openConnection() to HttpURLConnection instead of HttpsURLConnection. Useful for enterprise githubs which does not have https set up. 2014-04-09 18:13:10 -07:00
Roberto Tyley
769cdc73e7 Add support for removing a user from an Organisation 2014-04-02 18:47:50 +01:00
Kohsuke Kawaguchi
cef8f74c00 Added LICENSE 2014-04-02 09:31:02 -07:00
Kohsuke Kawaguchi
9f5ab709de [maven-release-plugin] prepare for next development iteration 2014-03-28 10:59:51 -07:00
9 changed files with 129 additions and 4 deletions

22
LICENSE.txt Normal file
View File

@@ -0,0 +1,22 @@
Copyright (c) 2011- Kohsuke Kawaguchi and other contributors
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.

17
pom.xml
View File

@@ -7,7 +7,7 @@
</parent>
<artifactId>github-api</artifactId>
<version>1.50</version>
<version>1.51</version>
<name>GitHub API for Java</name>
<url>http://github-api.kohsuke.org/</url>
<description>GitHub API for Java</description>
@@ -16,7 +16,7 @@
<connection>scm:git:git@github.com/kohsuke/${project.artifactId}.git</connection>
<developerConnection>scm:git:ssh://git@github.com/kohsuke/${project.artifactId}.git</developerConnection>
<url>http://${project.artifactId}.kohsuke.org/</url>
<tag>HEAD</tag>
<tag>github-api-1.51</tag>
</scm>
<distributionManagement>
@@ -92,6 +92,12 @@
<version>3.1.0.201310021548-r</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.squareup.okhttp</groupId>
<artifactId>okhttp</artifactId>
<version>1.5.3</version>
<optional>true</optional>
</dependency>
</dependencies>
<repositories>
<repository>
@@ -115,4 +121,11 @@
</plugins>
</reporting>
<licenses>
<license>
<name>The MIT license</name>
<url>http://www.opensource.org/licenses/mit-license.php</url>
<distribution>repo</distribution>
</license>
</licenses>
</project>

View File

@@ -57,6 +57,14 @@ public class GHOrganization extends GHPerson {
}
}
/**
* Remove a member of the organisation - which will remove them from
* all teams, and remove their access to the organizations repositories.
*/
public void remove(GHUser user) throws IOException {
root.retrieve().method("DELETE").to("/orgs/" + login + "/members/" + user.getLogin());
}
/**
* Checks if this organization has the specified user as a public member.
*/

View File

@@ -33,6 +33,7 @@ import java.util.Locale;
* A pull request.
*
* @author Kohsuke Kawaguchi
* @see GHRepository#getPullRequest(int)
*/
@SuppressWarnings({"UnusedDeclaration"})
public class GHPullRequest extends GHIssue {

View File

@@ -68,6 +68,8 @@ public class GitHub {
private final String apiUrl;
private HttpConnector connector = HttpConnector.DEFAULT;
/**
* Connects to GitHub.com
*/
@@ -201,6 +203,17 @@ public class GitHub {
return login==null && encodedAuthorization==null;
}
public HttpConnector getConnector() {
return connector;
}
/**
* Sets the custom connector used to make requests to GitHub.
*/
public void setConnector(HttpConnector connector) {
this.connector = connector;
}
/*package*/ void requireCredential() {
if (isAnonymous())
throw new IllegalStateException("This operation requires a credential but none is given to the GitHub constructor");

View File

@@ -0,0 +1,29 @@
package org.kohsuke.github;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
/**
* Pluggability for customizing HTTP request behaviors or using altogether different library.
*
* <p>
* For example, you can implement this to st custom timeouts.
*
* @author Kohsuke Kawaguchi
*/
public interface HttpConnector {
/**
* Opens a connection to the given URL.
*/
HttpURLConnection connect(URL url) throws IOException;
/**
* Default implementation that uses {@link URL#openConnection()}.
*/
HttpConnector DEFAULT = new HttpConnector() {
public HttpURLConnection connect(URL url) throws IOException {
return (HttpURLConnection) url.openConnection();
}
};
}

View File

@@ -25,7 +25,6 @@ package org.kohsuke.github;
import org.apache.commons.io.IOUtils;
import javax.net.ssl.HttpsURLConnection;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
@@ -294,7 +293,7 @@ class Requester {
private HttpURLConnection setupConnection(URL url) throws IOException {
HttpsURLConnection uc = (HttpsURLConnection) url.openConnection();
HttpURLConnection uc = root.getConnector().connect(url);
// if the authentication is needed but no credential is given, try it anyway (so that some calls
// that do work with anonymous access in the reduced form should still work.)

View File

@@ -0,0 +1,31 @@
package org.kohsuke.github.extras;
import com.squareup.okhttp.OkHttpClient;
import org.kohsuke.github.HttpConnector;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
/**
* {@link HttpConnector} for {@link OkHttpClient}.
*
* Unlike {@link #DEFAULT}, OkHttp does response caching.
* Making a conditional request against GitHubAPI and receiving a 304
* response does not count against the rate limit.
* See http://developer.github.com/v3/#conditional-requests
*
* @author Roberto Tyley
* @author Kohsuke Kawaguchi
*/
public class OkHttpConnector implements HttpConnector {
private final OkHttpClient client;
public OkHttpConnector(OkHttpClient client) {
this.client = client;
}
public HttpURLConnection connect(URL url) throws IOException {
return client.open(url);
}
}

View File

@@ -7,6 +7,8 @@ operations that act on them as defined as methods (such as `GHUser.follow()`), a
are used in favor of using string handle (such as `GHUser.isMemberOf(GHOrganization)` instead of
`GHUser.isMemberOf(String)`)
The library supports both github.com and GitHub Enterprise.
There are some corners of the GitHub API that's not yet implemented, but
the library is implemented with the right abstractions and libraries to make it very easy to improve the coverage.
@@ -34,3 +36,10 @@ Alternatively, you can have just the OAuth token in this file:
oauth=4d98173f7c075527cb64878561d1fe70
OkHttp
----
This library comes with a pluggable connector to use different HTTP client implementations
through `HttpConnector`. In particular, this means you can use [OkHttp](http://square.github.io/okhttp/),
so we can make use of it's HTTP response cache.
Making a conditional request against the GitHub API and receiving a 304 response
[does not count against the rate limit](http://developer.github.com/v3/#conditional-requests).