• 1.8.0

Object Oriented Github API

Set of classes in `com.jcabi.github` package is an object oriented Java adapter of Github API:

import com.jcabi.github.RtGithub;
import com.jcabi.github.Issue;
import com.jcabi.github.Github;
import com.jcabi.github.Repo;
public class Main {
  public static void main(String[] args) {
    Github github = new RtGithub(".. your OAuth token ..");
    Repo repo = github.repos().get(new Coordinates.Simple("jcabi", "jcabi-github"));
    Issue issue = repo.issues().create("How are you?", "Please tell me...");
    issue.comments().post("My first comment!");
  }
}

Read JavaDoc for more information and examples.

There are a few other Java adapters of Github API, but our implementation has its advantages, including:

  • All classes are private and implement public interfaces
  • Out-of-the-box in-memory mock of Github server
  • All classes are truly immutable and thread-safe
  • Every Github object gives GET/PATCH access to its raw JSON
  • HTTP request is accessible for modifications
  • Entire Github API is available, at least through a configurable HTTP request

Java 7 or higher is required. The only dependency you need is (you can also download jcabi-github-1.8.0.jar and add it to the classpath):

<dependency>
  <groupId>com.jcabi</groupId>
  <artifactId>jcabi-github</artifactId>
  <version>1.8.0</version>
</dependency>

If you're not a Maven user, you can use a JAR with all dependencies inside (over 4Mb): jcabi-github-1.8.0-jar-with-dependencies.jar. You can also include it to your Maven `pom.xml`:

<dependency>
  <groupId>com.jcabi</groupId>
  <artifactId>jcabi-github</artifactId>
  <version>1.8.0</version>
  <classifier>jar-with-dependencies</classifier>
</dependency>

Cutting Edge Version

If you want to use current version of the product, you can do it with this configuration in your pom.xml:

<repositories>
  <repository>
    <id>oss.sonatype.org</id>
    <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
  </repository>
</repositories>
<dependencies>
  <dependency>
    <groupId>com.jcabi</groupId>
    <artifactId>jcabi-github</artifactId>
    <version>1.0-SNAPSHOT</version>
  </dependency>
</dependencies>