import java.io.IOException;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;

import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.*;
public class JSONUtils {
    public JSONUtils() {
    }


    public Post[] getBoardOpPosts(String boardCode) {
        String input = getJSON("https://2...content-available-to-author-only...h.hk/" + boardCode + "/threads.json");
        ArrayList<Post> posts = new ArrayList<>();
        JsonParser parser = new com.google.gson.JsonParser();
        JsonObject mainObject = parser.parse(input).getAsJsonObject();
        JsonArray pItem = mainObject.getAsJsonArray("threads");
        for (JsonElement n : pItem) {
            JsonObject userObject = n.getAsJsonObject();
            posts.add(new Post(userObject.get("num").getAsInt(), userObject.get("comment").toString()));
        }
        Post ret[] = new Post[posts.size()];
        for (int i = 0; i < posts.size(); i++) {
            ret[i] = posts.get(i);
        }
        return ret;
    }

    public Post[] getThreadPosts(String boardCode, int num) {
        String input = getJSON("https://2...content-available-to-author-only...h.hk/" + boardCode + "/res/" + num + ".json");
        System.out.println("https://2...content-available-to-author-only...h.hk/" + boardCode + "/res/" + num + ".json");
        ArrayList<Post> posts = new ArrayList<>();
        JsonParser parser = new JsonParser();
        JsonObject mainObject = parser.parse(input).getAsJsonObject();
        JsonArray pItem = mainObject.getAsJsonArray("posts");
        for (JsonElement n : pItem) {
            JsonObject userObject = n.getAsJsonObject();
            posts.add(new Post(userObject.get("num").getAsInt(), userObject.get("comment").toString()));
        }
        Post ret[] = new Post[posts.size()];
        for (int i = 0; i < posts.size(); i++) {
            ret[i] = posts.get(i);
        }
        return ret;
    }

    private String getJSON(String address) {
        String string;
        StringBuilder stringBuilder = new StringBuilder();
        try {
            URL url = new URL(address);
            try {
                LineNumberReader reader = new LineNumberReader(new InputStreamReader(url.openStream()));
                string = reader.readLine();
                while (string != null) {
                    stringBuilder.append(string);
                    string = reader.readLine();
                }
                reader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

        } catch (MalformedURLException ex) {
            ex.printStackTrace();
        }
        return stringBuilder.toString();
    }
}
