Low level wrapper around the Readmill API.
Code is heavily inspired by the excellent Java wrapper for SoundCloud.
A short tutorial is available here. Project page on GitHub.
Example basic usage:
ReadmillWrapper wrapper = new ReadmillWrapper("my_client_id", "my_client_secret", Environment.LIVE);
JSONObject user = wrapper.get("/users/1").fetch("user");
user.optString("username"); // => "christoffer"
JSONArray readings = wrapper.get("/users/1/readings")
.order("created_at").from("2012-08-01T13:37:00Z")
.count(50)
.fetchItems("reading") // => an array of readings
Authenticated requests that uses a token:
ReadmillWrapper wrapper = new ReadmillWrapper("my_client_id", "my_client_secret", Environment.LIVE);
Token myAccessToken = getAnOAuthTokenSomehow();
wrapper.setToken(myAccessToken);
// Create
reading = wrapper.post("/books/20461/readings").readingState("reading").fetch("reading");
// Update
String readingEndpoint = String.format("/readings/%d", reading.getInt("id"));
wrapper.put(readingEndpoint).readingState("finished").fetch();
// Delete
wrapper.delete(readingEndpoint).send(); // .send() is just .fetch() without a return value
You can also drop down to a more manual level with finer control of requets building:
ReadmillWrapper wrapper = new ReadmillWrapper("my_client_id", "my_client_secret", Environment.LIVE);
Token userToken = currentUserTokenForMyMultiUserApp();
Request updateReadingState = Request.to("/readings/" + 77)
.withParams("state", "finished", "reading[via]", 1)
.usingToken(userToken);
HTTPResponse response = wrapper.put(updateReadingState);
The wrapper is published as a Maven repository available from the GitHub repo.
To use it add this to your pom.xml
file:
<repositories>
<repository>
<id>readmill-java-wrapper-snapshots</id>
<url>https://github.com/christoffer/readmill-java-wrapper/raw/master/snapshots</url>
</repository>
</repositories>
And then list the dependency like this:
<dependency>
<groupId>com.christofferklang</groupId>
<artifactId>readmill-java-wrapper</artifactId>
<version>1.0</version>
</dependency>