Exemplo n.º 1
0
 /**
  * Finds and uploads interval on a channel, based on channel and interval, to the FtpServer as a
  * file with requested filename. Sends back a response with a status code based on whether or not
  * it was successful. Status codes: 200: OK. 400: Bad information in url. 404: Content not
  * available in main archive. Try again later. 409: A file with chosen filename already exists on
  * FtpServer. 410: Content not available. 500: Internal server error or unexpected status code.
  *
  * @param channel Which channel
  * @param filename Wanted filename
  * @param fromRaw from when, format: yyyy-MM-dd_HH:mm:ss
  * @param toRaw to when, format: yyyy-MM-dd_HH:mm:ss
  * @return Status code in Response and requested file on FtpServer.
  */
 @GET
 @Path("rawCut")
 @Produces("text/plain")
 public Response rawCut(
     @QueryParam("channel") String channel,
     @QueryParam("filename") String filename,
     @QueryParam("from") String fromRaw,
     @QueryParam("to") String toRaw) {
   if (channel == null
       || channel.trim().length() == 0
       || filename == null
       || filename.trim().length() == 0) {
     String text = "Bad information in url. Make sure to set channel, filename, from and to.";
     log.info("-----------rawCut first opportunity exit with 400---------------");
     return Response.status(400).entity(text).build();
   }
   Date from = null;
   Date to = null;
   if (fromRaw != null
       && fromRaw.trim().length() > 0
       && toRaw != null
       && toRaw.trim().length() > 0) {
     DateFormat format = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss");
     try {
       from = format.parse(fromRaw);
       to = format.parse(toRaw);
     } catch (ParseException ex) {
       log.debug("Date parse error: From: " + fromRaw + " | To: " + toRaw);
       log.debug("Date parse error stacktrace: " + ex.getStackTrace());
       String text =
           "Failed to parse dates, make sure it is of following format: yyyy-MM-dd_HH:mm:ss";
       return Response.status(400).entity(text).build();
     }
   } else {
     String text = "Bad information in url. Make sure to set channel, filename, from and to.";
     log.info("-----------rawCut second opportunity exit with 400---------------");
     return Response.status(400).entity(text).build();
   }
   if (from.after(to)) {
     return Response.status(400).entity("From must be before To.").build();
   }
   try {
     int statusCode = service.getRawCut(channel, filename, from, to);
     if (statusCode == 200) {
       String text = "OK";
       log.info("-----------rawCut exit with 200---------------" + statusCode);
       return Response.status(statusCode).entity(text).build();
     }
     if (statusCode == 400) {
       String text = "Bad information in url (for instance, unknown channel id)";
       log.info("-----------rawCut exit with 400---------------" + statusCode);
       return Response.status(statusCode).entity(text).build();
     }
     if (statusCode == 404) {
       String text =
           "Content unavailable on primary archive server, but exists on secondary. Try later.";
       log.info("-----------rawCut exit with 404---------------" + statusCode);
       return Response.status(statusCode).entity(text).build();
     }
     if (statusCode == 409) {
       String text = "A file with that filename already exists.";
       log.info("-----------rawCut exit with 409---------------" + statusCode);
       return Response.status(statusCode).entity(text).build();
     }
     if (statusCode == 410) {
       String text = "Content unavailable, request cannot be fulfilled.";
       log.info("-----------rawCut exit with 410---------------" + statusCode);
       return Response.status(statusCode).entity(text).build();
     }
     log.info(
         "-----------rawCut exit with 500, unexpected status code---------------" + statusCode);
     return Response.status(500)
         .entity("Unexpected status code.")
         .build(); // Unexpected status code
   } catch (ServiceException ex) {
     log.info(
         "-----------rawCut exit with 500, internal server---------------" + ex.getMessage(), ex);
     return Response.status(500).entity("Internal server error.").build();
   }
 }
Exemplo n.º 2
0
 /**
  * Finds and uploads a program, based on id and offsets, to the FtpServer as a file with requested
  * filename, along with PBCore xml about the program. Sends back a response with a status code
  * based on whether or not it was successful. Status codes: 200: OK. 400: Bad information in url.
  * 404: Content not available in main archive. Try again later. 409: A file with chosen filename
  * already exists on FtpServer. 410: Content not available. 500: Internal server error or
  * unexpected status code.
  *
  * @param programIdRaw Id of the program.
  * @param filename Wanted filename.
  * @param offsetStartRaw Offset from start of the program in HH:mm:ss format.
  * @param offsetEndRaw Offset from end of the program in HH:mm:ss format.
  * @return Status code in Response and requested file and associated PBCore xml on FtpServer.
  */
 @GET
 @Path("programSnippet")
 @Produces("text/plain")
 public Response programSnippet(
     @QueryParam("id") String programIdRaw,
     @QueryParam("filename") String filename,
     @QueryParam("offsetStart") String offsetStartRaw,
     @QueryParam("offsetEnd") String offsetEndRaw) {
   if (programIdRaw == null
       || programIdRaw.trim().length() == 0
       || filename == null
       || filename.trim().length() == 0) {
     String text = "Bad information in url. Make sure to set id, filename and offsets.";
     log.info("-----------programSnippet first opportunity exit with 400---------------");
     return Response.status(400).entity(text).build();
   }
   Date offsetStart = null;
   Date offsetEnd = null;
   if (offsetStartRaw != null
       && offsetStartRaw.trim().length() > 0
       && offsetEndRaw != null
       && offsetEndRaw.trim().length() > 0) {
     DateFormat format = new SimpleDateFormat("HH:mm:ss");
     try {
       offsetStart = format.parse(offsetStartRaw);
       offsetEnd = format.parse(offsetEndRaw);
     } catch (ParseException ex) {
       log.debug("Date parse error: From: " + offsetStartRaw + " | To: " + offsetEndRaw);
       log.debug("Date parse error stacktrace: " + ex.getStackTrace());
       String text = "Failed to parse offsets, make sure it is of following format: HH:mm:ss";
       return Response.status(400).entity(text).build();
     }
   } else {
     String text = "Bad information in url. Make sure to set id, filename and offsets.";
     log.info("-----------programSnippet second opportunity exit with 400---------------");
     return Response.status(400).entity(text).build();
   }
   try {
     Long programId = Long.parseLong(programIdRaw);
     try {
       int statusCode = service.getProgramSnippet(programId, filename, offsetStart, offsetEnd);
       if (statusCode == 200) {
         String text = "OK";
         log.info("-----------programSnippet exit with 200---------------" + statusCode);
         return Response.status(statusCode).entity(text).build();
       }
       if (statusCode == 400) {
         String text = "Bad information in url (for instance, unknown channel id)";
         log.info("-----------programSnippet exit with 400---------------" + statusCode);
         return Response.status(statusCode).entity(text).build();
       }
       if (statusCode == 404) {
         String text =
             "Content unavailable on primary archive server, but exists on secondary. Try later.";
         log.info("-----------programSnippet exit with 404---------------" + statusCode);
         return Response.status(statusCode).entity(text).build();
       }
       if (statusCode == 409) {
         String text = "A file with that filename already exists.";
         log.info("-----------programSnippet exit with 409---------------" + statusCode);
         return Response.status(statusCode).entity(text).build();
       }
       if (statusCode == 410) {
         String text = "Content unavailable, request cannot be fulfilled.";
         log.info("-----------programSnippet exit with 410---------------" + statusCode);
         return Response.status(statusCode).entity(text).build();
       }
       if (statusCode == -0) {
         String text = "Program id not found.";
         log.info("-----------programSnippet exit with 410---------------" + statusCode);
         return Response.status(410).entity(text).build();
       }
       log.info(
           "-----------programSnippet exit with 500, unexpected status code---------------"
               + statusCode);
       return Response.status(500)
           .entity("Unexpected status code.")
           .build(); // Unexpected status code
     } catch (ServiceException ex) {
       log.info(
           "-----------programSnippet exit with 500, internal server---------------"
               + ex.getMessage(),
           ex);
       return Response.status(500).entity("Internal server error.").build();
     }
   } catch (NumberFormatException ex) {
     log.info("-----------programSnippet exit with 400, invalid program id---------------");
     return Response.status(400).entity("Invalid program id, must only contain numbers.").build();
   }
 }