private String getCustomHandler(WaybackException e, WaybackRequest wbRequest) { String jspPath = null; if((e instanceof ResourceNotInArchiveException) && wbRequest.isReplayRequest()) { String url = wbRequest.getRequestUrl(); Date captureDate = wbRequest.getReplayDate(); try { Rule rule = client.getRule(url,captureDate,new Date(),who); jspPath = ruleToJspPath(rule); } catch (RuleOracleUnavailableException e1) { e1.printStackTrace(); } } return jspPath; }
protected WaybackRequest handleDatelessRequest(AccessPoint accessPoint, String requestPath, Date mementoDate) throws BetterRequestException { // String nowTS = Timestamp.currentTimestamp().getDateStr(); // String newUrl = accessPoint.getUriConverter().makeReplayURI(nowTS, requestPath); // throw new BetterRequestException(newUrl); WaybackRequest wbRequest = new WaybackRequest(); if (wbRequest.getStartTimestamp() == null) { wbRequest.setStartTimestamp(getEarliestTimestamp()); } if (wbRequest.getEndTimestamp() == null) { wbRequest.setEndTimestamp(getLatestTimestamp()); } if (mementoDate == null) { mementoDate = new Date(); wbRequest.setBestLatestReplayRequest(); } wbRequest.setReplayDate(mementoDate); wbRequest.setAnchorDate(mementoDate); wbRequest.setReplayRequest(); wbRequest.setRequestUrl(requestPath); return wbRequest; } }
/** * Build a self-referencing URL that will perform a query for all copies * of the given URL (plain, clean URL version). * @param url URL to search for copies of * @return String URL for querying captures of * @version 1.8.1 */ public String makePlainCaptureQueryUrl(String url) { // TOOD: want "2014*" instead of "20140101000000-20141231115959*" return wbRequest.getAccessPoint().makeCaptureQueryUrl(url, wbRequest.getStartTimestamp(), wbRequest.getEndTimestamp()); }
/** * construct bare minimum UIResults. * @param httpRequest */ public UIResults(HttpServletRequest httpRequest) { WaybackRequest wbRequest = new WaybackRequest(); wbRequest.extractHttpRequestInfo(httpRequest); this.wbRequest = wbRequest; this.uriConverter = null; }
protected boolean requestIsCSS(HttpServletRequest httpRequest, WaybackRequest wbRequest) { if (wbRequest == null) { return false; } if(wbRequest.isCSSContext()) { return true; } String requestUrl = wbRequest.getRequestUrl(); return (requestUrl != null) && requestUrl.endsWith(".css"); }
protected boolean requestIsJavascript(HttpServletRequest httpRequest, WaybackRequest wbRequest) { if (wbRequest == null) { return false; } if(wbRequest.isJSContext()) { return true; } String requestUrl = wbRequest.getRequestUrl(); return (requestUrl != null) && requestUrl.endsWith(".js"); }
requestType = request.get(WaybackRequest.REQUEST_TYPE); keyUrl = canonicalizer.urlStringToKey(request.getRequestUrl()); } catch (IOException e) { throw new BadQueryException("Bad request URL(" + request.getRequestUrl() +")"); startDate = request.getStartTimestamp(); if(startDate == null) { startDate = Timestamp.earliestTimestamp().getDateStr(); endDate = request.getEndTimestamp(); if(endDate == null) { endDate = Timestamp.latestTimestamp().getDateStr(); if(request.isReplayRequest()) { exactDate = request.getReplayTimestamp(); if(exactDate == null) { exactDate = Timestamp.latestTimestamp().getDateStr(); long wantMS = request.getReplayDate().getTime(); if(request.getAccessPoint().isUseAnchorWindow()) { String anchorTS = request.getAnchorTimestamp(); if(anchorTS != null) { wantMS = } else if(request.isCaptureQueryRequest()) { chain.addFilter(new UrlMatchFilter(keyUrl));
CDXQuery query = new CDXQuery(wbRequest.getRequestUrl()); if (wbRequest.isReplayRequest()) { if (wbRequest.isBestLatestReplayRequest()) { statusFilter = "statuscode:[23].."; if (wbRequest.isTimestampSearchKey()) { query.setClosest(wbRequest.getReplayTimestamp()); } else if (wbRequest.isCaptureQueryRequest()) { String start = wbRequest.getStartTimestamp(); if (start != null) { query.setFrom(start); String end = wbRequest.getEndTimestamp(); if (end != null) { query.setTo(end); int collapseTime = wbRequest.getCollapseTime(); if (collapseTime < 0) {
/** * test for {@link PathDateRangeQueryRequestParser}, %-encoded version. * @throws Exception */ public void testPathDateRangeEncoded() throws Exception { WaybackRequest wbr1 = parse("/web/20100101000000-20100630235959%2A/http://www.yahoo.com/"); assertNotNull(wbr1); assertTrue(wbr1.isCaptureQueryRequest()); assertEquals("20100101000000", wbr1.getStartTimestamp()); assertEquals("20100630235959", wbr1.getEndTimestamp()); // assertEquals("20100630235959", wbr1.getReplayTimestamp()); assertEquals(null, wbr1.getReplayTimestamp()); assertEquals("http://www.yahoo.com/", wbr1.getRequestUrl()); }
/** * test of {@link PathPrefixDateRangeQueryRequestParser}. * <p>explicit timestamp range and trailing "*" in URL. * this is a URL-query request, timestamp range becomes * start and end timestamp.</p> * <p>timerange without "*" is not recognized. it could be.</p> */ public void testPathPrefixDateRange() throws Exception { { WaybackRequest wbr1 = parse("/web/20100101-20100531*/http://www.yahoo.com/*"); assertNotNull(wbr1); assertTrue(wbr1.isUrlQueryRequest()); assertEquals("20100101000000", wbr1.getStartTimestamp()); assertEquals("20100531235959", wbr1.getEndTimestamp()); assertEquals("http://www.yahoo.com/", wbr1.getRequestUrl()); } // TODO: date range without "*" }
wbRequest.setAccessPoint(this); wbRequest.extractHttpRequestInfo(httpRequest); if (wbRequest.getExclusionFilter() == null) { wbRequest.setExclusionFilter(createExclusionFilter()); wbRequest.setExactScheme(isExactSchemeMatch()); if (wbRequest.isReplayRequest()) { if (bounceToReplayPrefix) { return true; wbRequest.setExactHost(isExactHostMatch()); handleQuery(wbRequest, httpRequest, httpResponse); wbRequest = new WaybackRequest(); wbRequest.setAccessPoint(this); !wbRequest.hasMementoAcceptDatetime() && !wbRequest.isMementoTimemapRequest()) { liveWebState = getLiveWebRedirector().handleRedirect(e, wbRequest, httpRequest, httpResponse);
protected void checkPathDateless(WaybackRequest wbr, String requestUrl) { assertNotNull(wbr); assertTrue(wbr.isReplayRequest()); assertTrue(wbr.isBestLatestReplayRequest()); assertEquals(EXPECTED_START_TIMESTAMP, wbr.getStartTimestamp()); assertEquals(EXPECTED_END_TIMESTAMP, wbr.getEndTimestamp()); assertEquals(requestUrl, wbr.getRequestUrl()); assertNotNull(wbr.getReplayDate()); assertNotNull(wbr.getAnchorDate()); }
WaybackRequest wbr = parse("/web/http://www.yahoo.com/"); assertNotNull(wbr); assertTrue(wbr.isReplayRequest()); assertTrue(wbr.isMementoTimegate()); assertFalse(wbr.isBestLatestReplayRequest()); assertEquals(EXPECTED_START_TIMESTAMP, wbr.getStartTimestamp()); assertEquals(EXPECTED_END_TIMESTAMP, wbr.getEndTimestamp()); assertEquals(date, wbr.getReplayDate()); assertEquals(date, wbr.getAnchorDate()); WaybackRequest wbr = parse("/web/http://www.yahoo.com/"); assertNotNull(wbr); assertTrue(wbr.isReplayRequest()); assertFalse(wbr.isBestLatestReplayRequest()); assertEquals(EXPECTED_START_TIMESTAMP, wbr.getStartTimestamp()); assertEquals(EXPECTED_END_TIMESTAMP, wbr.getEndTimestamp()); assertEquals(date, wbr.getReplayDate()); assertEquals(date, wbr.getAnchorDate()); WaybackRequest wbr = parse("/web/http://www.yahoo.com/"); assertNotNull(wbr); assertTrue(wbr.isReplayRequest()); assertTrue(wbr.isBestLatestReplayRequest()); assertEquals(EXPECTED_START_TIMESTAMP, wbr.getStartTimestamp()); assertEquals(EXPECTED_END_TIMESTAMP, wbr.getEndTimestamp());
private WaybackRequest createReplayWaybackRequest() { WaybackRequest wbr = new WaybackRequest(); wbr.setReplayRequest(); wbr.setReplayTimestamp("20010101000000"); wbr.setRequestUrl("http://www.yahoo.com/"); return wbr; } /**
PerfStats.timeStart(PerfStat.IndexLoad); String format = wbRequest.getMementoTimemapFormat(); SearchResults cResults = wbRequest.getAccessPoint().queryIndex( wbRequest); MementoUtils.printTimemapResponse( CDXQuery query = new CDXQuery(wbRequest.getRequestUrl()); query.setOutput(wbRequest.getMementoTimemapFormat()); String from = wbRequest.get(MementoConstants.PAGE_STARTS);
/** * create new WaybackRequest set up as URL query request for URL * {@code requestUrl} at time {@code replayTimestamp}. created object is set * to {@link #wbRequest}. * @param requestUrl * @param replayTimestamp */ public void setUrlQueryRequest(String requestUrl, String replayTimestamp) { wbRequest = new WaybackRequest(); wbRequest.setUrlQueryRequest(); wbRequest.setRequestUrl(requestUrl); wbRequest.setReplayTimestamp(replayTimestamp); }
/** * create new WaybackRequest set up as capture query request for URL * {@code requestUrl}, at time {@ode replayTimestamp}. * @param requestUrl * @param replayTimestamp */ public final void setCaptureQueryRequest(String requestUrl, String replayTimestamp) { wbRequest = new WaybackRequest(); wbRequest.setCaptureQueryRequest(); wbRequest.setRequestUrl(requestUrl); wbRequest.setReplayTimestamp(replayTimestamp); }
public void testAcceptDatetime() throws Exception { acceptDatetime = "Mon, 27 Oct 2014 20:36:02 GMT"; accessPoint.setEnableMemento(true); setupRequest("http://example.com/"); EasyMock.replay(request); WaybackRequest wbr = cut.parse(request, accessPoint); assertNotNull(wbr); assertTrue(wbr.isReplayRequest()); assertTrue(wbr.isMementoTimegate()); assertEquals("http://example.com/", wbr.getRequestUrl()); assertEquals("20141027203602", wbr.getReplayTimestamp()); }
assertTrue(wbr.isMementoTimemapRequest()); assertTrue(wbr.isCaptureQueryRequest()); assertEquals("format", "link", wbr.getMementoTimemapFormat()); assertEquals("requestUrl", "http://www.yahoo.com/", wbr.getRequestUrl()); assertTrue(wbr.isMementoTimemapRequest()); assertTrue(wbr.isCaptureQueryRequest()); assertEquals("format", "link", wbr.getMementoTimemapFormat()); assertEquals("requestUrl", "http://www.yahoo.com", wbr.getRequestUrl()); WaybackRequest wbr = parse("/web/timemap/link?url=" + urlp); assertNotNull(wbr); assertTrue(wbr.isMementoTimemapRequest()); assertTrue(wbr.isCaptureQueryRequest()); assertEquals("format", "link?url=" + urlp, wbr.getMementoTimemapFormat()); assertEquals("requestUrl", url, wbr.getRequestUrl()); WaybackRequest wbr = parse("/web/timemap/?url=" + urlp); assertNotNull(wbr); assertTrue(wbr.isMementoTimemapRequest()); assertTrue(wbr.isCaptureQueryRequest()); assertEquals("format", "?url=" + urlp, wbr.getMementoTimemapFormat()); assertEquals("requestUrl", url, wbr.getRequestUrl()); assertFalse(wbr.isMementoTimemapRequest()); assertTrue(wbr.isCaptureQueryRequest());
public ClosestTrackingCaptureFilterGroup(WaybackRequest request, UrlCanonicalizer canonicalizer) { chain = new ObjectFilterChain<CaptureSearchResult>(); if(request.isCaptureQueryRequest() || request.isReplayRequest()) { closestTracker = new ClosestResultTrackingFilter(request.getReplayDate().getTime()); chain.addFilter(closestTracker); } }