package com.progscrape.data;
import com.grack.nanojson.JsonArray;
import com.grack.nanojson.JsonObject;
import com.progscrape.app.data.Story;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
public class FeedParser {
@Inject
public FeedParser() {
}
public Feed parse(JsonObject json) {
if (json.getInt("v") == 1) {
JsonArray rawTags = json.getArray("tags");
JsonArray rawStories = json.getArray("stories");
List<Story> stories = new ArrayList<>();
for (Object obj : rawStories) {
JsonObject rawStory = (JsonObject) obj;
Story story = new Story();
story.setTitle(rawStory.getString("title"));
story.setHref(rawStory.getString("href"));
story.setTags(toStringList(rawStory.getArray("tags")));
story.setHackerNewsUrl(rawStory.getString("hnews"));
story.setRedditUrl(rawStory.getString("reddit"));
story.setLobstersUrl(rawStory.getString("lobsters"));
stories.add(story);
}
Feed feed = new Feed();
feed.setStories(stories);
feed.setTopTags(toStringList(rawTags));
return feed;
} else {
throw new IllegalArgumentException("Unexpected feed version");
}
}
private List<String> toStringList(JsonArray tags) {
List<String> list = new ArrayList<>();
for (Object tag : tags)
list.add((String) tag);
return list;
}
}