edit CommunityHandler return all results as JSON

master
adb 3 years ago
parent 3c2a1946ed
commit 4854166383

@ -3,8 +3,8 @@ plugins {
id 'maven'
}
sourceCompatibility = 1.7
targetCompatibility = 1.7
sourceCompatibility = 1.8
targetCompatibility = 1.8
configurations.all {
}

@ -2,8 +2,11 @@ package sh.adb.RandomRedditMemesAPI;
import com.github.jreddit.parser.entity.Submission;
import com.github.jreddit.parser.exception.RedditParseException;
import com.sun.net.httpserver.Headers;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import org.json.JSONArray;
import org.json.JSONObject;
import java.io.IOException;
import java.io.InputStream;
@ -15,20 +18,44 @@ class CommunityHandler implements HttpHandler {
public CommunityHandler(RedditAPI redditClient) {
this.api = redditClient;
}
private JSONObject subToJSON(Submission sub){
JSONObject subJSON = new JSONObject();
subJSON.put("title", sub.getTitle());
subJSON.put("text", sub.getSelftext());
subJSON.put("author", sub.getAuthor());
subJSON.put("subreddit", sub.getSubreddit());
subJSON.put("time", sub.getCreatedUTC());
subJSON.put("score", sub.getScore());
subJSON.put("downvotes", sub.getDownVotes());
subJSON.put("nsfw", sub.isNSFW());
subJSON.put("url", sub.getURL());
subJSON.put("permalink", sub.getPermalink());
return subJSON;
}
@Override
public void handle(HttpExchange t) throws IOException {
//InputStream is = t.getRequestBody();
//is.read();
System.out.println("request at > "+t.getRequestURI().toString());
String[] pathArray = t.getRequestURI().toString().split("/", -1);
List<Submission> submissions = null;
try {
submissions = this.api.getSub("ProgrammerHumor");
submissions = this.api.getSub(pathArray[4]);
} catch (RedditParseException e) {
e.printStackTrace();
}
assert submissions != null;
String response = submissions.get(0).getURL();
JSONArray subsJSON = new JSONArray();
submissions.forEach(sub -> {
subsJSON.put(subToJSON(sub));
});
String response = subsJSON.toString(0);
System.out.println("response > "+response);
Headers headers = t.getResponseHeaders();
headers.add("Content-Type", "application/json");
System.out.println(response.length());
t.sendResponseHeaders(200, response.length());
OutputStream os = t.getResponseBody();
os.write(response.getBytes());

Loading…
Cancel
Save