import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
-import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
protected Response getCover(String uri, WLoginResult login)
throws IOException {
String[] uriParts = uri.split("/");
+ int startAt = 0;
int off = 2; // "" and "cover"
+ for (int i = 0; i < off; i++) {
+ startAt += uriParts[i].length() + "/".length();
+ }
if (uriParts.length < off + 2) {
return NanoHTTPD.newFixedLengthResponse(Status.BAD_REQUEST,
}
String type = uriParts[off + 0];
- String id = URLDecoder.decode(uriParts[off + 1], "UTF-8");
+ String id = uri.substring(startAt + type.length() + "/".length());
InputStream in = null;
throws IOException {
String[] uriParts = uri.split("/");
int off = 2; // "" and "cover"
+ int startAt = 0;
+ for (int i = 0; i < off; i++) {
+ startAt += uriParts[i].length() + "/".length();
+ }
if (uriParts.length < off + 2) {
return NanoHTTPD.newFixedLengthResponse(Status.BAD_REQUEST,
}
String type = uriParts[off + 0];
- String id = URLDecoder.decode(uriParts[off + 1], "UTF-8");
+ String id = uri.substring(startAt + type.length() + "/".length());
if ("source".equals(type)) {
sourceCover(id, login, luid);
Scanner scan = new Scanner(in);
scan.useDelimiter("\0");
try {
+ if(!scan.hasNext())
+ throw new IOException("The given input was empty");
+
return new JSONObject(scan.next());
} catch (JSONException e) {
throw new IOException(e);
@SuppressWarnings("resource") // cannot close, or we loose getInput()!
Scanner scan = new Scanner(getInput(), "UTF-8");
scan.useDelimiter("\\n");
- scan.next(); // Title
- scan.next(); // Author (Date)
- String chapter0 = scan.next(); // empty or Chapter 0
- while (chapter0.isEmpty()) {
+ if (scan.hasNext())
+ scan.next(); // Title
+ if (scan.hasNext())
+ scan.next(); // Author (Date)
+ String chapter0 = "";
+ while (scan.hasNext() && chapter0.isEmpty()) {
chapter0 = scan.next();
}
@SuppressWarnings("resource") // cannot close, or we loose getInput()!
Scanner scan = new Scanner(getInput(), "UTF-8");
scan.useDelimiter("\\n");
- return scan.next();
+ if (scan.hasNext())
+ return scan.next();
+ return "";
}
private String getAuthor() {
@SuppressWarnings("resource") // cannot close, or we loose getInput()!
Scanner scan = new Scanner(getInput(), "UTF-8");
scan.useDelimiter("\\n");
- scan.next();
- String authorDate = scan.next();
+ if (scan.hasNext())
+ scan.next();
+ String authorDate = "";
+ if (scan.hasNext())
+ authorDate = scan.next();
String author = authorDate;
int pos = authorDate.indexOf('(');
@SuppressWarnings("resource") // cannot close, or we loose getInput()!
Scanner scan = new Scanner(getInput(), "UTF-8");
scan.useDelimiter("\\n");
- scan.next();
- String authorDate = scan.next();
+ if (scan.hasNext())
+ scan.next();
+ String authorDate = "";
+ if (scan.hasNext())
+ authorDate = scan.next();
String date = "";
int pos = authorDate.indexOf('(');