jReddit is a wrapper for the Reddit API written in Java. Project started by Omer Elnour. Taken over for further development and maintainence by Karan Goel.
At the moment, jReddit can be included in your project using:
<dependency> <groupId>com.github.jreddit</groupId> <artifactId>jreddit</artifactId> <version>1.0.3</version> </dependency> dependencies { compile group: 'com.github.jreddit', name: 'jreddit', version: '1.0.3' } jReddit can login with a user, retrieve user information, submit new links, and vote/comment on submissions, send and receive messages and notifications among other things.
Connect a user
// Initialize REST Client RestClient restClient = new HttpRestClient(); restClient.setUserAgent("bot/1.0 by name"); // Connect the user User user = new User(restClient, "username", "password"); try { user.connect(); } catch (Exception e) { e.printStackTrace(); }Retrieve top 100 submissions of /r/programming
// Handle to Submissions, which offers the basic API submission functionality Submissions subms = new Submissions(restClient, user); // Retrieve submissions of a submission List<Submission> submissionsSubreddit = subms.ofSubreddit("programming", SubmissionSort.TOP, -1, 100, null, null, true);Submit a link and self post
// Handle to SubmitActions, which offers the basic API functionality to submit comments and posts SubmitActions submitActions = new SubmitActions(restClient, user); // Submit a link submitActions.submitLink( "Oracle V Google judge is a programmer!", "http://www.i-programmer.info/news/193-android/4224-oracle-v-google-judge-is-a-programmer.html", "programming"); // Submit a self post submitActions.submitSelfPost("What's the difference between a duck?", "One of its legs are both the same!", "funny");Send a message to another user
import com.github.jreddit.message.Messages; import com.github.jreddit.user.User; /** * @author Karan Goel */ public class ComposeTest { public static void main(String[] args) { User user = null; String recipientUsername = "other_user"; try { user = new User("username", "password"); // Add your username and password user.connect(); } catch (Exception exception) { exception.printStackTrace(); } new Messages().compose(user, recipientUsername, "this is the title", "the message", "", ""); } }There are 2 implementation at the moment for RestClient
HttpRestClientPoliteHttpRestClientrecommended RestClient since Reddit API has a limitation to make only 1 request every 2 seconds.
Factory and utility class to easily instantiate RestClient. Available methods:
newHttpRestClient()newHttpRestClient(HttpClient)newPoliteHttpRestClient()newPoliteHttpRestClient(HttpClient)newProxyHttpClient(hostname, port)newProxyHttpClient(hostname, port, scheme)
You can find other examples here
You can find a small example of how to integrate jReddit in an Android application here
The plan is to implement every feature documented here. To see which methods have been implemented, and which have not, see this file.
Personally, I would suggest reading through the source code to understand the general structure and standards used. Then check the implemented_methods.md file to see which methods have not yet been implemented. Choose the ones you'd like to contribute to. After you write the method (and maybe commit it?), write a test to see if it works fine and as expected. Then make sure other tests are working too and your code does not break anty other method.
Send in a pull request with the test and I'll be happy to merge! :-)
