1 package org.readium.r2_streamer.server.handler;
3 import com.fasterxml.jackson.core.JsonProcessingException;
4 import com.fasterxml.jackson.databind.ObjectMapper;
5 import org.readium.r2_streamer.fetcher.EpubFetcher;
6 import org.readium.r2_streamer.model.publication.SMIL.MediaOverlayNode;
7 import org.readium.r2_streamer.model.publication.SMIL.MediaOverlays;
8 import org.readium.r2_streamer.model.publication.link.Link;
9 import org.readium.r2_streamer.server.ResponseStatus;
11 import java.util.List;
14 import fi.iki.elonen.NanoHTTPD;
15 import fi.iki.elonen.router.RouterNanoHTTPD;
18 * Created by gautam chibde on 25/5/17.
21 public class MediaOverlayHandler extends RouterNanoHTTPD.DefaultHandler {
22 public static final String TAG = MediaOverlayNode.class.getSimpleName();
25 public String getText() {
26 return ResponseStatus.FAILURE_RESPONSE;
30 public String getMimeType() {
31 return "application/webpub+json";
35 public NanoHTTPD.Response.IStatus getStatus() {
36 return NanoHTTPD.Response.Status.OK;
40 public NanoHTTPD.Response get(RouterNanoHTTPD.UriResource uriResource, Map<String, String> urlParams, NanoHTTPD.IHTTPSession session) {
41 EpubFetcher fetcher = uriResource.initParameter(EpubFetcher.class);
43 if (session.getParameters().containsKey("resource")) {
44 String searchQueryPath = session.getParameters().get("resource").get(0);
45 List<Link> spines = fetcher.publication.spines;
46 ObjectMapper objectMapper = new ObjectMapper();
48 String json = objectMapper.writeValueAsString(getMediaOverlay(spines, searchQueryPath));
49 return NanoHTTPD.newFixedLengthResponse(getStatus(), getMimeType(), json);
50 } catch (JsonProcessingException e) {
51 return NanoHTTPD.newFixedLengthResponse(getStatus(), getMimeType(), ResponseStatus.FAILURE_RESPONSE);
54 return NanoHTTPD.newFixedLengthResponse(getStatus(), getMimeType(), ResponseStatus.FAILURE_RESPONSE);
58 private MediaOverlays getMediaOverlay(List<Link> spines, String searchQueryPath) {
59 for (Link link : spines) {
60 if (link.href.contains(searchQueryPath)) {
61 return link.mediaOverlay;
64 return new MediaOverlays();