- Common ways to obtain CaptureSearchResult
private void myMethod () {}
@Override public Resource retrieveResource(CaptureSearchResult result) throws ResourceNotAvailableException { Resource r = null; String resourceUrl = "http://" + host + ":" + port + "/" + table + "/" + ArchiveUtils.get14DigitDate(result.getCaptureDate()) + "/" + result.getOriginalUrl(); LOGGER.info("Fetching resource url: " + resourceUrl); try { // Read first 4 bytes of input stream to detect archive format; push back into stream for re-use PushbackInputStream pb = new PushbackInputStream(new URL(resourceUrl).openStream(), 4); byte[] signature = new byte[4]; pb.read(signature, 0, 4); pb.unread(signature); if ((new String(signature)).equals("WARC")) { WARCReader reader = (WARCReader) WARCReaderFactory.get(resourceUrl.toString(), pb, false); r = ResourceFactory.WARCArchiveRecordToResource(reader.get(), reader); } else { // Assume ARC format if not WARC ARCReader reader = (ARCReader) ARCReaderFactory.get(resourceUrl.toString(), pb, false); r = ResourceFactory.ARCArchiveRecordToResource(reader.get(), reader); } } catch (IOException e) { throw new ResourceNotAvailableException("Error reading " + resourceUrl); } if (r == null) { throw new ResourceNotAvailableException("Unable to find: " + result.toString()); } return r; }
throw new ResourceNotAvailableException("Revisit: Missing original for revisit record " + closest.toString(), 404);
throw new ResourceNotAvailableException("Revisit: Missing original for revisit record " + closest.toString(), 404);