X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsonitus%2Fdata%2Fsource%2FStreamSource.java;h=604a868c006345a0437dff6be1da6b500c3119e7;hb=d07ec839a266057079d5a065176d46a0cc567b5d;hp=8c7464ca6224c09122b3d2b14b05e3e9587f49a3;hpb=9a5bbdb694cda8f4bc0794aea136b993399961dd;p=sonitus.git diff --git a/src/main/java/net/pterodactylus/sonitus/data/source/StreamSource.java b/src/main/java/net/pterodactylus/sonitus/data/source/StreamSource.java index 8c7464c..604a868 100644 --- a/src/main/java/net/pterodactylus/sonitus/data/source/StreamSource.java +++ b/src/main/java/net/pterodactylus/sonitus/data/source/StreamSource.java @@ -31,10 +31,12 @@ import net.pterodactylus.sonitus.data.Controller; import net.pterodactylus.sonitus.data.FormatMetadata; import net.pterodactylus.sonitus.data.Metadata; import net.pterodactylus.sonitus.data.Source; +import net.pterodactylus.sonitus.data.event.MetadataUpdated; import net.pterodactylus.sonitus.io.MetadataStream; import com.google.common.base.Optional; import com.google.common.collect.Maps; +import com.google.common.eventbus.EventBus; import com.google.common.primitives.Ints; /** @@ -47,9 +49,15 @@ import com.google.common.primitives.Ints; */ public class StreamSource implements Source { + /** The event bus. */ + private final EventBus eventBus; + /** The URL of the stream. */ private final String streamUrl; + /** The name of the station. */ + private final String streamName; + /** The metadata stream. */ private final MetadataStream metadataStream; @@ -61,12 +69,15 @@ public class StreamSource implements Source { * the response header for vital information (sampling frequency, number of * channels, etc.). * + * @param eventBus + * The event bus * @param streamUrl * The URL of the stream * @throws IOException * if an I/O error occurs */ - public StreamSource(String streamUrl) throws IOException { + public StreamSource(EventBus eventBus, String streamUrl) throws IOException { + this.eventBus = eventBus; this.streamUrl = streamUrl; URL url = new URL(streamUrl); @@ -114,6 +125,7 @@ public class StreamSource implements Source { metadata = new Metadata(new FormatMetadata(audioParameters.get("ice-channels"), audioParameters.get("ice-samplerate"), "MP3"), new ContentMetadata()); metadataStream = new MetadataStream(new BufferedInputStream(httpUrlConnection.getInputStream()), metadataInterval); + streamName = httpUrlConnection.getHeaderField("ICY-Name"); } // @@ -121,7 +133,12 @@ public class StreamSource implements Source { // @Override - public List controllers() { + public String name() { + return streamName; + } + + @Override + public List> controllers() { return Collections.emptyList(); } @@ -135,7 +152,9 @@ public class StreamSource implements Source { if (!streamMetadata.isPresent()) { return metadata; } - return metadata = metadata.title(streamMetadata.get().title()); + metadata = metadata.title(streamMetadata.get().title()); + eventBus.post(new MetadataUpdated(this, metadata)); + return metadata; } @Override