X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Flibrary%2FWebLibrary.java;h=9af38e2b6bd1c7ccb565ca6f244e31ef42f40746;hb=8d2b0320bee001e24611484cb1d952682ab2d1b6;hp=040acd07f1505acb49845d4ad153a3661dbae8b6;hpb=089e354e5efc0de39caa4df2f3987d573b71dcbc;p=nikiroo-utils.git diff --git a/src/be/nikiroo/fanfix/library/WebLibrary.java b/src/be/nikiroo/fanfix/library/WebLibrary.java index 040acd0..9af38e2 100644 --- a/src/be/nikiroo/fanfix/library/WebLibrary.java +++ b/src/be/nikiroo/fanfix/library/WebLibrary.java @@ -103,11 +103,15 @@ public class WebLibrary extends BasicLibrary { this.host = host; this.port = port; - - // TODO: not supported yet - this.rw = false; } + /** + * Return the version of the program running server-side. + *
+ * Never returns NULL.
+ *
+ * @return the version or an empty {@link Version} if not known
+ */
public Version getVersion() {
try {
InputStream in = post(WebLibraryUrls.VERSION_URL);
@@ -122,6 +126,26 @@ public class WebLibrary extends BasicLibrary {
return new Version();
}
+ /**
+ * Stop the server.
+ *
+ * @throws IOException
+ * in case of I/O errors
+ */
+ public void stop() throws IOException {
+ try {
+ post(WebLibraryUrls.EXIT_URL, null).close();
+ } catch (Exception e) {
+ try {
+ Thread.sleep(200);
+ } catch (InterruptedException e1) {
+ }
+ if (getStatus() != Status.UNAVAILABLE) {
+ throw new IOException("Cannot exit the library", e);
+ }
+ }
+ }
+
@Override
public Status getStatus() {
try {
@@ -148,7 +172,13 @@ public class WebLibrary extends BasicLibrary {
public Image getCover(String luid) throws IOException {
InputStream in = post(WebLibraryUrls.getStoryUrlCover(luid));
try {
- return new Image(in);
+ Image img = new Image(in);
+ if (img.getSize() > 0) {
+ img.close();
+ return img;
+ }
+
+ return null;
} finally {
in.close();
}
@@ -158,7 +188,13 @@ public class WebLibrary extends BasicLibrary {
public Image getCustomSourceCover(String source) throws IOException {
InputStream in = post(WebLibraryUrls.getCoverUrlSource(source));
try {
- return new Image(in);
+ Image img = new Image(in);
+ if (img.getSize() > 0) {
+ img.close();
+ return img;
+ }
+
+ return null;
} finally {
in.close();
}
@@ -168,7 +204,13 @@ public class WebLibrary extends BasicLibrary {
public Image getCustomAuthorCover(String author) throws IOException {
InputStream in = post(WebLibraryUrls.getCoverUrlAuthor(author));
try {
- return new Image(in);
+ Image img = new Image(in);
+ if (img.getSize() > 0) {
+ img.close();
+ return img;
+ }
+
+ return null;
} finally {
in.close();
}
@@ -191,8 +233,9 @@ public class WebLibrary extends BasicLibrary {
@Override
public synchronized Story getStory(final String luid, Progress pg)
throws IOException {
-
- // TODO: pg
+ if (pg == null) {
+ pg = new Progress();
+ }
Story story;
InputStream in = post(WebLibraryUrls.getStoryUrlJson(luid));
@@ -203,6 +246,12 @@ public class WebLibrary extends BasicLibrary {
in.close();
}
+ int max = 0;
+ for (Chapter chap : story) {
+ max += chap.getParagraphs().size();
+ }
+ pg.setMinMax(0, max);
+
story.getMeta().setCover(getCover(luid));
int chapNum = 1;
for (Chapter chap : story) {
@@ -212,18 +261,23 @@ public class WebLibrary extends BasicLibrary {
InputStream subin = post(
WebLibraryUrls.getStoryUrl(luid, chapNum, number));
try {
- para.setContentImage(new Image(subin));
+ Image img = new Image(subin);
+ if (img.getSize() > 0) {
+ para.setContentImage(img);
+ }
} finally {
subin.close();
}
}
+ pg.add(1);
number++;
}
chapNum++;
}
+ pg.done();
return story;
}
@@ -243,8 +297,9 @@ public class WebLibrary extends BasicLibrary {
@Override
// Could work (more slowly) without it
public MetaData imprt(final URL url, Progress pg) throws IOException {
- if (true)
- throw new IOException("Not implemented yet");
+ if (pg == null) {
+ pg = new Progress();
+ }
// Import the file locally if it is actually a file
@@ -254,8 +309,49 @@ public class WebLibrary extends BasicLibrary {
// Import it remotely if it is an URL
- // TODO
- return super.imprt(url, pg);
+ try {
+ String luid = null;
+
+ Map