X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsonitus%2Fio%2FIdentifyingInputStream.java;h=6035cbf6a4fb1a3284eee130c3d31808273b0e40;hb=a92d013bb270a9cbd094c662bf20c98a3326f009;hp=c63e5656eabdf4265e391a5446456a4de84645f5;hpb=5428f6df5412d99a0e631d3f0f798dd04f3dc5a5;p=sonitus.git
diff --git a/src/main/java/net/pterodactylus/sonitus/io/IdentifyingInputStream.java b/src/main/java/net/pterodactylus/sonitus/io/IdentifyingInputStream.java
index c63e565..6035cbf 100644
--- a/src/main/java/net/pterodactylus/sonitus/io/IdentifyingInputStream.java
+++ b/src/main/java/net/pterodactylus/sonitus/io/IdentifyingInputStream.java
@@ -17,37 +17,38 @@
package net.pterodactylus.sonitus.io;
+import java.io.EOFException;
import java.io.FilterInputStream;
import java.io.IOException;
import java.io.InputStream;
-import net.pterodactylus.sonitus.data.Format;
+import net.pterodactylus.sonitus.data.Metadata;
import com.google.common.base.Optional;
import com.google.common.io.ByteStreams;
/**
- * Wrapper around an {@link InputStream} that identifies the {@link Format} of
+ * Wrapper around an {@link InputStream} that identifies the {@link Metadata} of
* the wrapped stream.
*
* @author David âBombeâ Roden
*/
public class IdentifyingInputStream extends FilterInputStream {
- /** The identified format. */
- private final Format format;
+ /** The identified metadata. */
+ private final Metadata metadata;
/**
* Creates a new identifying input stream.
*
* @param inputStream
* The input stream to wrap
- * @param format
- * The format of the stream
+ * @param metadata
+ * The metadata of the stream
*/
- private IdentifyingInputStream(InputStream inputStream, Format format) {
+ private IdentifyingInputStream(InputStream inputStream, Metadata metadata) {
super(inputStream);
- this.format = format;
+ this.metadata = metadata;
}
//
@@ -55,12 +56,12 @@ public class IdentifyingInputStream extends FilterInputStream {
//
/**
- * Returns the identified format.
+ * Returns the identified metadata.
*
- * @return The identified format
+ * @return The identified metadata
*/
- public Format format() {
- return format;
+ public Metadata metadata() {
+ return metadata;
}
//
@@ -73,8 +74,8 @@ public class IdentifyingInputStream extends FilterInputStream {
* @param inputStream
* The input stream to identify
* @return An identifying input stream that delivers the original stream and
- * the format it detected, or {@link com.google.common.base.Optional#absent()}
- * if no format could be identified
+ * the metadata it detected, or {@link Optional#absent()} if no
+ * metadata could be identified
* @throws IOException
* if an I/O error occurs
*/
@@ -84,17 +85,25 @@ public class IdentifyingInputStream extends FilterInputStream {
RememberingInputStream rememberingInputStream = new RememberingInputStream(inputStream);
/* try Ogg Vorbis first. */
- Optional format = OggVorbisIdentifier.identify(rememberingInputStream);
- if (format.isPresent()) {
- return Optional.of(new IdentifyingInputStream(rememberingInputStream.remembered(), format.get()));
+ try {
+ Optional metadata = OggVorbisIdentifier.identify(rememberingInputStream);
+ if (metadata.isPresent()) {
+ return Optional.of(new IdentifyingInputStream(rememberingInputStream.remembered(), metadata.get()));
+ }
+ } catch (EOFException eofe1) {
+ /* ignore. */
}
/* try MP3 now. */
- rememberingInputStream = new RememberingInputStream(rememberingInputStream.remembered());
- InputStream limitedInputStream = ByteStreams.limit(rememberingInputStream, 1048576);
- format = Mp3Identifier.identify(limitedInputStream);
- if (format.isPresent()) {
- return Optional.of(new IdentifyingInputStream(rememberingInputStream.remembered(), format.get()));
+ try {
+ rememberingInputStream = new RememberingInputStream(rememberingInputStream.remembered());
+ InputStream limitedInputStream = ByteStreams.limit(rememberingInputStream, 1048576);
+ Optional metadata = Mp3Identifier.identify(limitedInputStream);
+ if (metadata.isPresent()) {
+ return Optional.of(new IdentifyingInputStream(rememberingInputStream.remembered(), metadata.get()));
+ }
+ } catch (EOFException eofe1) {
+ /* ignore. */
}
return Optional.absent();