X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=supported%2FBasicSupport.java;h=900bcf9d5c2f59cb34b6879416b0e52565db769b;hb=5cf61f350b436825d28f5f4f50d8e86fbe5485f1;hp=7dbd1365aa1970f2b08000420728f85b65e7c1a8;hpb=920af1c747538e949df24d29cf778d597be9a482;p=fanfix.git diff --git a/supported/BasicSupport.java b/supported/BasicSupport.java index 7dbd136..900bcf9 100644 --- a/supported/BasicSupport.java +++ b/supported/BasicSupport.java @@ -2,14 +2,17 @@ package be.nikiroo.fanfix.supported; import java.io.IOException; import java.io.InputStream; +import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Scanner; import java.util.Map.Entry; +import org.json.JSONObject; import org.jsoup.helper.DataUtil; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; @@ -293,6 +296,63 @@ public abstract class BasicSupport { return story; } + /** + * Utility method to convert the given URL into a JSON object. + *
+ * Note that this method expects small JSON files (everything is copied into + * memory at least twice). + * + * @param url + * the URL to parse + * @param stable + * TRUE for more stable resources, FALSE when they often change + * + * @return the JSON object + * + * @throws IOException + * in case of I/O error + */ + protected JSONObject getJson(String url, boolean stable) + throws IOException { + try { + return getJson(new URL(url), stable); + } catch (MalformedURLException e) { + throw new IOException("Malformed URL: " + url, e); + } + } + + /** + * Utility method to convert the given URL into a JSON object. + *
+ * Note that this method expects small JSON files (everything is copied into
+ * memory at least twice).
+ *
+ * @param url
+ * the URL to parse
+ * @param stable
+ * TRUE for more stable resources, FALSE when they often change
+ *
+ * @return the JSON object
+ *
+ * @throws IOException
+ * in case of I/O error
+ */
+ protected JSONObject getJson(URL url, boolean stable) throws IOException {
+ InputStream in = Instance.getInstance().getCache().open(url, null,
+ stable);
+ try {
+ Scanner scan = new Scanner(in);
+ scan.useDelimiter("\0");
+ try {
+ return new JSONObject(scan.next());
+ } finally {
+ scan.close();
+ }
+ } finally {
+ in.close();
+ }
+ }
+
/**
* Process the given story resource into a fully filled {@link Story}
* object.
@@ -347,8 +407,6 @@ public abstract class BasicSupport {
pgMeta.done(); // 10%
pg.put("meta", story.getMeta());
- pg.setName(story.getMeta().getTitle());
-
Progress pgGetChapters = new Progress();
pg.addProgress(pgGetChapters, 10);
story.setChapters(new ArrayList