package com.pugh.sockso.music.stream;
import com.pugh.sockso.music.Files;
import com.pugh.sockso.music.Track;
import com.pugh.sockso.web.Response;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
/**
* A class to encapsulate an audio stream and information about it, for
* instance the mime type of the data.
*
*/
public abstract class AbstractMusicStream implements MusicStream {
public static final int STREAM_BUFFER_SIZE = 1024 * 8; // 8 KB block size
protected Track track;
public AbstractMusicStream( final Track track ) {
this.track = track;
}
public DataInputStream getAudioStream() throws IOException {
final FileInputStream fileStream = new FileInputStream(this.track.getPath());
return new DataInputStream(fileStream);
}
public void setHeaders( final Response response ) {
final String mimeType = Files.getMimeType(this.track.getPath());
final String filename = track.getArtist().getName() + " - " + track.getName();
response.addHeader("Content-Disposition", "filename=\"" + filename + "\"");
response.addHeader("Content-Type", mimeType);
}
}