package examples; import java.util.List; import org.apache.http.impl.client.HttpClientBuilder; import com.github.jreddit.oauth.RedditOAuthAgent; import com.github.jreddit.oauth.RedditToken; import com.github.jreddit.oauth.app.RedditApp; import com.github.jreddit.oauth.app.RedditInstalledApp; import com.github.jreddit.oauth.client.RedditClient; import com.github.jreddit.oauth.client.RedditHttpClient; import com.github.jreddit.oauth.client.RedditPoliteClient; import com.github.jreddit.oauth.exception.RedditOAuthException; import com.github.jreddit.parser.entity.More; import com.github.jreddit.parser.entity.Submission; import com.github.jreddit.parser.entity.imaginary.CommentTreeElement; import com.github.jreddit.parser.entity.imaginary.FullSubmission; import com.github.jreddit.parser.entity.imaginary.MixedListingElement; import com.github.jreddit.parser.exception.RedditParseException; import com.github.jreddit.parser.listing.CommentsMoreParser; import com.github.jreddit.parser.listing.MixedListingParser; import com.github.jreddit.parser.listing.SubmissionsListingParser; import com.github.jreddit.parser.single.FullSubmissionParser; import com.github.jreddit.parser.util.CommentTreeUtils; import com.github.jreddit.request.retrieval.comments.MoreCommentsRequest; import com.github.jreddit.request.retrieval.mixed.FullSubmissionRequest; import com.github.jreddit.request.retrieval.mixed.MixedOfUserRequest; import com.github.jreddit.request.retrieval.param.SubmissionSort; import com.github.jreddit.request.retrieval.param.TimeSpan; import com.github.jreddit.request.retrieval.param.UserMixedCategory; import com.github.jreddit.request.retrieval.param.UserOverviewSort; import com.github.jreddit.request.retrieval.param.UserSubmissionsCategory; import com.github.jreddit.request.retrieval.submissions.SubmissionsOfSubredditRequest; import com.github.jreddit.request.retrieval.submissions.SubmissionsOfUserRequest; public class ExampleRetrieveRequests { // Information about the app public static final String USER_AGENT = "jReddit: Reddit API Wrapper for Java"; public static final String CLIENT_ID = "PfnhLt3VahLrbg"; public static final String REDIRECT_URI = "https://github.com/snkas/jReddit"; // Variables private RedditApp redditApp; private RedditOAuthAgent agent; private RedditClient client; public ExampleRetrieveRequests() throws RedditOAuthException { // Reddit application redditApp = new RedditInstalledApp(CLIENT_ID, REDIRECT_URI); // Create OAuth agent agent = new RedditOAuthAgent(USER_AGENT, redditApp); // Create client client = new RedditPoliteClient(new RedditHttpClient(USER_AGENT, HttpClientBuilder.create().build())); } public static void main(String[] args) throws RedditOAuthException, RedditParseException { ExampleRetrieveRequests example = new ExampleRetrieveRequests(); example.exampleSubmissionsOfSubreddit(); example.exampleSubmissionsOfUser(); example.exampleMixedOfUser(); example.exampleFullSubmission(); } public void exampleSubmissionsOfSubreddit() throws RedditParseException, RedditOAuthException { // Create token (will be valid for 1 hour) RedditToken token = agent.tokenAppOnly(false); // Create parser for request SubmissionsListingParser parser = new SubmissionsListingParser(); // Create the request SubmissionsOfSubredditRequest request = (SubmissionsOfSubredditRequest) new SubmissionsOfSubredditRequest("programming", SubmissionSort.HOT).setLimit(100); // Perform and parse request, and store parsed result List<Submission> submissions = parser.parse(client.get(token, request)); // Now print out the result (don't care about formatting) System.out.println(submissions); } public void exampleSubmissionsOfUser() throws RedditParseException, RedditOAuthException { // Create token (will be valid for 1 hour) RedditToken token = agent.tokenAppOnly(false); // Create parser for request SubmissionsListingParser parser = new SubmissionsListingParser(); // Create the request SubmissionsOfUserRequest request = new SubmissionsOfUserRequest("jRedditBot", UserSubmissionsCategory.SUBMITTED); // Perform and parse request, and store parsed result List<Submission> submissions = parser.parse(client.get(token, request)); // Now print out the result (don't care about formatting) System.out.println(submissions); } public void exampleMixedOfUser() throws RedditParseException, RedditOAuthException { // Create token (will be valid for 1 hour) RedditToken token = agent.tokenAppOnly(false); // Create parser for request MixedListingParser parser = new MixedListingParser(); // Create the request MixedOfUserRequest request = new MixedOfUserRequest("jRedditBot", UserMixedCategory.OVERVIEW) .setSort(UserOverviewSort.TOP) .setTime(TimeSpan.ALL); // Perform and parse request, and store parsed result List<MixedListingElement> elements = parser.parse(client.get(token, request)); // Now print out the result (don't care about formatting) System.out.println(elements); } public void exampleFullSubmission() throws RedditParseException, RedditOAuthException { // Create token (will be valid for 1 hour) RedditToken token = agent.tokenAppOnly(false); // Create parser for request FullSubmissionParser parser = new FullSubmissionParser(); // Create the request FullSubmissionRequest request = new FullSubmissionRequest("3bawqe").setDepth(1); // Perform and parse request, and store parsed result FullSubmission fullSubmission = parser.parse(client.get(token, request)); // Now print out the result of the submission (don't care about formatting) Submission s = fullSubmission.getSubmission(); System.out.println(s); // Now print out the result of the comment tree (don't care about formatting) System.out.println(CommentTreeUtils.printCommentTree(fullSubmission.getCommentTree())); // Flatten the tree List<CommentTreeElement> flat = CommentTreeUtils.flattenCommentTree(fullSubmission.getCommentTree()); // Retrieve ALL comments hiding behind MOREs for (CommentTreeElement e : flat) { if (e instanceof More) { // Create the request for more comments MoreCommentsRequest requestMore = new MoreCommentsRequest(s.getFullName(), ((More) e).getChildren()); // Perform and parse request, and store parsed result CommentsMoreParser parserMore = new CommentsMoreParser(); System.out.println(parserMore.parse(client.get(token, requestMore))); } } } }