package eu.dnetlib.server;

import java.io.IOException;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Service;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import eu.dnetlib.efg1914.authoring.managers.MediaManager;
import eu.dnetlib.efg1914.authoring.managers.MediaManagerException;
import eu.dnetlib.efg1914.authoring.managers.MediaManagerImpl;

@SuppressWarnings("serial")
@Deprecated
@Service("playerServlet")
public class playerServlet extends HttpServlet {
 
	MediaManager mediaManager;
	private WebApplicationContext context;

	public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
		int start = Integer.parseInt(request.getParameter("start"));
		int end = Integer.parseInt(request.getParameter("end"));
		// 1,901,999 bytes length
		int bitrate = 44100;

		// filesize= bitrate*time

		int skip_start = start * bitrate;

		int play_intil = (end - start) * bitrate;
		System.out.println("playUntil");

		byte[] data;
		String id = request.getParameter("id");

		context = WebApplicationContextUtils.getWebApplicationContext(getServletContext());

		mediaManager = (MediaManagerImpl) context.getBean("mediaManager");

		try {
			System.out.println(" id is " + id);

			byte[] retrievedBytes = mediaManager.retrieveItemMediaBytes(id);

			String filetype = request.getParameter("filetype");

			response.setContentType(filetype);

			String range = request.getHeader("range");
			response.setContentType(filetype);
			response.setHeader("Accept-Ranges", "bytes");
			response.setHeader("Etag", "W/\"9767057-1323779115364\"");
			ServletOutputStream out = response.getOutputStream();

			out.write(retrievedBytes, start, end);

			out.flush();
			out.close();

		} catch (MediaManagerException e) {

			e.printStackTrace();
			System.out.println("mpuu");
		} catch (Exception e) {

			e.printStackTrace();

		}
	}

}