import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
+import java.util.zip.GZIPInputStream;
import be.nikiroo.utils.IOUtils;
-import be.nikiroo.utils.StringUtils;
+import be.nikiroo.utils.streams.Base64InputStream;
+import be.nikiroo.utils.streams.BufferedInputStream;
import be.nikiroo.utils.streams.NextableInputStream;
import be.nikiroo.utils.streams.NextableInputStreamStep;
if (zip || b64) {
stream.skip("XXX:".length());
- InputStream decoded = StringUtils.unbase64(stream.open(),
- zip);
+
+ InputStream decoded = stream.open();
+ if (zip) {
+ decoded = new GZIPInputStream(decoded);
+ }
+ decoded = new Base64InputStream(decoded, false);
+
try {
read(decoded);
} finally {
* @throws IOException
* if the content cannot be read (for instance, corrupt data)
*/
- private boolean processLine(InputStream in) throws NoSuchFieldException,
+ private boolean processLine(BufferedInputStream in) throws NoSuchFieldException,
NoSuchMethodException, ClassNotFoundException, IOException {
// Defer to latest child if any
// TODO use the stream, Luke
String line = IOUtils.readSmallStream(in);
- if (line.isEmpty()) {
- return false;
- }
-
if (line.equals("{")) { // START: new child if needed
if (link != null) {
child = new Importer(map);