Added Android code
[wl-app.git] / Android / r2-streamer / r2-server / src / main / java / org / readium / r2_streamer / server / handler / ManifestHandler.java
1 package org.readium.r2_streamer.server.handler;
2
3 import org.readium.r2_streamer.fetcher.EpubFetcher;
4 import org.readium.r2_streamer.server.ResponseStatus;
5 import com.fasterxml.jackson.core.JsonGenerationException;
6 import com.fasterxml.jackson.databind.JsonMappingException;
7 import com.fasterxml.jackson.databind.ObjectMapper;
8
9 import java.io.IOException;
10 import java.util.Map;
11
12 import fi.iki.elonen.NanoHTTPD;
13 import fi.iki.elonen.router.RouterNanoHTTPD;
14
15 /**
16  * Created by mahavir on 3/2/17.
17  */
18
19 public class ManifestHandler extends RouterNanoHTTPD.DefaultHandler {
20     private static final String TAG = "ManifestHandler";
21
22     @Override
23     public String getMimeType() {
24         return "application/webpub+json";
25     }
26
27     @Override
28     public String getText() {
29         return ResponseStatus.FAILURE_RESPONSE;
30     }
31
32     @Override
33     public NanoHTTPD.Response.IStatus getStatus() {
34         return NanoHTTPD.Response.Status.OK;
35     }
36
37     @Override
38     public NanoHTTPD.Response get(RouterNanoHTTPD.UriResource uriResource, Map<String, String> urlParams, NanoHTTPD.IHTTPSession session) {
39         try {
40
41             EpubFetcher fetcher = uriResource.initParameter(EpubFetcher.class);
42
43             ObjectMapper objectMapper = new ObjectMapper();
44             String json = objectMapper.writeValueAsString(fetcher.publication);
45
46             return NanoHTTPD.newFixedLengthResponse(getStatus(), getMimeType(), json);
47
48         } catch (JsonGenerationException | JsonMappingException e) {
49             System.out.println(TAG + " JsonGenerationException | JsonMappingException " + e.toString());
50             return NanoHTTPD.newFixedLengthResponse(NanoHTTPD.Response.Status.INTERNAL_ERROR, getMimeType(), ResponseStatus.FAILURE_RESPONSE);
51         } catch (IOException e) {
52             System.out.println(TAG + " IOException " + e.toString());
53             return NanoHTTPD.newFixedLengthResponse(NanoHTTPD.Response.Status.INTERNAL_ERROR, getMimeType(), ResponseStatus.FAILURE_RESPONSE);
54         }
55     }
56 }