Skip to content

sangupta/dribbble-java-client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dribbble-java-client

dribbble-java-client is a strongly typed Java library for accessing http://dribbble.com API. The library provides support for rate limiting requests. All objects implement the necessary equals, hashcode and toString methods for easier usage. Also, implemented is the Comparable interface for comparison and sorting.

The library also exposes a convenience class called DribbbleInvoker that may be used to add more APIs (should they get added in future and this library looses track). The invoker is rate-limit safe.

Usage

A simple example to use is as under,

DribbbleClient client = new DribbbleClient();

// get info on shot with ID: 1
Shot shot = client.getShot(1);

// get info on this shot's player
Player player = client.getPlayer(shot.getPlayer().getId());

// do more...

Pagination Support

All API methods that support pagination have a corresponding, pagination-aware method available as well. For example, when fetching comments for a shot you may do,

DribbbleClient client = new DribbbleClient();

CommentList list = getShotComments(1);

// do something with these comments

if(list.getPage() < list.getPages()) {
	list = getShotComments(1, 2); // to get default page 2
	
	// or, may provide the number of results to fetch as well
	list = getShotComments(1, 2, 15);
}

// get more comments

The current default for number of results per page is 15 per Dribbble API. Refer http://dribbble.com/api for more details.

Rate-Limiting and Exceptions

By default, the DribbbleClient will throw a DribbbleApiRateLimitException run-time exception when the request rate goes over the board. This makes sure that your client does not need to catch unnecessary exceptions during invocation.

In case you wish, you may catch this exception and delay the request to a future time as,

Shot shot = null;
int shotID = 1;

try {
	shot = client.getShot(shotID);
} catch(DribbbleApiRateLimitException e) {
	// wait for a minute
	try {
		Thread.sleep(1000 * 60); // one minute
		
		// go ahead and make the call
		shot = client.getShot(shotID);
	} catch(Exception e) {
		// could not wait
		// do nothing
	}
}

If you wish to prevent the code from throwing the DribbbleApiRateLimitException exception, you can do so when creating the client.

DribbbleClient client = new DribbbleClient(false);

Any invocations on this client, will not throw the error, but return a null back as the result to the API query.

Downloads

You can download the JAR from the Downloads page.

Alternatively, you may download the builds from Maven Central repository using:

<dependency>
    <groupId>com.sangupta</groupId>
    <artifactId>dribbble-java-client</artifactId>
    <version>1.0.0</version>
</dependency>

Dependencies

The library is built and compiled using Java 1.6. The library has been tested using both Java 1.6 and Java 1.7.

The library also depends on the following external libraries:

  • Google GSON library for working with GSON data
  • Apache HttpClient library for accessing the internet

The library uses java.util.logging.Logger for logging exceptions while accessing the APIs.

Continuous Integration

The library is continuously integrated and unit tested using the *Travis CI system.

Current status of branch MASTER: Build Status

The library is tested against

  • Oracle JDK 7
  • Oracle JDK 6
  • Open JDK 7
  • Open JDK 6

Versioning

For transparency and insight into our release cycle, and for striving to maintain backward compatibility, dribbble-java-client will be maintained under the Semantic Versioning guidelines as much as possible.

Releases will be numbered with the follow format:

<major>.<minor>.<patch>

And constructed with the following guidelines:

  • Breaking backward compatibility bumps the major
  • New additions without breaking backward compatibility bumps the minor
  • Bug fixes and misc changes bump the patch

For more information on SemVer, please visit http://semver.org/.

License

Copyright (c) 2012, Sandeep Gupta

The project uses various other libraries that are subject to their own license terms. See the distribution libraries or the project documentation for more details.

The entire source is licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with the LICENSE. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.