package hu.procyon.atomizer;

import java.io.IOException;
import java.util.List;
import java.util.Map;

public class MusicHrefFilter implements HrefFilter {

	@Override
	public boolean probeHref(Href href, WebScraper scraper) {
		System.out.println("probing " + href.getHref().toString());
		Map<String, List<String>> headers = null;
		try {
			headers = scraper.doHeadRequest(href.getHref());
			if (headers == null) {
				return false;
			}
			List<String> contentType = headers.get("Content-Type");
			if (contentType != null && (
				contentType.contains("audio/mpeg") ||
				contentType.contains("audio/x-mpeg") ||
				contentType.contains("audio/mp3") ||
				contentType.contains("audio/x-mp3") ||
				contentType.contains("audio/mpeg3") ||
				contentType.contains("audio/x-mpeg3") ||
				contentType.contains("audio/mpg") ||
				contentType.contains("audio/x-mpg") ||
				contentType.contains("audio/x-mpegaudio") ||
				contentType.contains("audio/ogg") ||
				contentType.contains("application/ogg") ||
				contentType.contains("audio/vorbis") ||
				contentType.contains("audio/x-ogg") ||
				contentType.contains("application/x-ogg"))) {
				
				href.setMimeType(contentType.get(0));
				List<String> contentLength = headers.get("Content-Length");
				if (contentLength != null) {
					try {
						long length = Long.parseLong(contentLength.get(0));
						href.setContentLength(length);
					} catch (Exception ex) {
						ex.printStackTrace(System.err);
					}
				}
				List<String> lastModified = headers.get("Content-Length");
				if (contentLength != null) {
					try {
						long length = Long.parseLong(contentLength.get(0));
						href.setContentLength(length);
					} catch (Exception ex) {
						ex.printStackTrace(System.err);
					}
				}
				
				return true;
			}
		} catch (IOException e) {
			e.printStackTrace(System.err);
		}
		return false;
	}

}
