public static NewznabXmlRoot generateResponse(int startIndex, int endIndex, String itemTitleBase, boolean generateDuplicates, List<String> titleWords) { return generateResponse( NewznabMockRequest.builder() .numberOfResults(endIndex - startIndex) .titleBase(itemTitleBase) .generateDuplicates(generateDuplicates) .titleWords(titleWords) .build() ); }
public static NewznabXmlRoot generateResponse(NewznabMockRequest request) { List<NewznabXmlItem> items = new ArrayList<>(); for (int i = request.getOffset()+1; i <= request.getOffset() + request.getNumberOfResults(); i++) { String group = "group"; String title = "indexer" + request.getTitleBase() + "-" + i; if (!request.getTitleWords().isEmpty()) { title += " " + request.getTitleWords().get(random.nextInt(request.getTitleWords().size())); if (request.isGenerateDuplicates() || request.isGenerateOneDuplicate()) { if (random.nextBoolean() || request.isGenerateOneDuplicate()) { size = "1000000"; title = "aDuplicate"; item.setTitle(title); item.setPubDate(pubDate); String guid = "http://127.0.0.1:5080/nzb/" + request.getTitleBase() + i; item.setEnclosure(new NewznabXmlEnclosure(guid, Long.valueOf(size), "application/x-nzb")); item.setComments("http://127.0.0.1:5080/comments/" + i); NewznabXmlRoot rssRoot = getRssRoot(items, request.getOffset(), request.getTotal()); return rssRoot;
protected Xml getAndStoreResultToDatabase(URI uri, IndexerApiAccessType apiAccessType) throws IndexerAccessException { NewznabXmlRoot rssRoot = new NewznabXmlRoot(); if (uri.toString().contains("oneduplicate")) { NewznabMockRequest mockRequest = NewznabMockRequest.builder().numberOfResults(1).titleBase("oneresult").titleWords(Collections.emptyList()).total(1).build(); rssRoot = NewznabMockBuilder.generateResponse(mockRequest); rssRoot.getRssChannel().getNewznabResponse().setTotal(1); rssRoot.getRssChannel().getItems().get(0).getEnclosure().setLength(100000L); NewznabMockRequest mockRequest = NewznabMockRequest.builder().numberOfResults(1).titleBase("oneresult").titleWords(Collections.emptyList()).total(1).build(); rssRoot = NewznabMockBuilder.generateResponse(mockRequest); rssRoot.getRssChannel().getItems().get(0).getEnclosure().setLength(100000L); rssRoot.getRssChannel().getItems().get(0).getNewznabAttributes().clear(); mockRequest = NewznabMockRequest.builder().numberOfResults(1).titleBase("oneresult").titleWords(Collections.emptyList()).total(1).build(); NewznabXmlRoot rssRoot3 = NewznabMockBuilder.generateResponse(mockRequest); rssRoot3.getRssChannel().getItems().get(0).getEnclosure().setLength(200000L); rssRoot3.getRssChannel().getItems().get(0).getNewznabAttributes().clear(); mockRequest = NewznabMockRequest.builder().numberOfResults(1).titleBase("anotherresult").titleWords(Collections.emptyList()).total(1).build(); NewznabXmlRoot rssRoot2 = NewznabMockBuilder.generateResponse(mockRequest); rssRoot.getRssChannel().getItems().add(rssRoot2.getRssChannel().getItems().get(0)); NewznabMockRequest mockRequest = NewznabMockRequest.builder().numberOfResults(10).titleBase("duplicates").titleWords(Collections.emptyList()).total(10).build(); rssRoot = NewznabMockBuilder.generateResponse(mockRequest); rssRoot.getRssChannel().getNewznabResponse().setTotal(10); for (NewznabXmlItem rssItem : rssRoot.getRssChannel().getItems()) { rssRoot = NewznabMockBuilder.generateResponse(0, 2, "results", false, Collections.emptyList()); rssRoot.getRssChannel().getNewznabResponse().setTotal(2);
return new ResponseEntity<Object>(NewznabMockBuilder.getCaps(), HttpStatus.OK); NewznabXmlRoot rssRoot = NewznabMockBuilder.generateResponse(0, -1, itemTitleBase, false, Collections.emptyList()); logger.info("Returning no results for rid based search without query"); return new ResponseEntity<Object>(rssRoot, HttpStatus.OK); rssRoot = NewznabMockBuilder.generateResponse(start, end, "offsetTest", doGenerateDuplicates, Collections.emptyList()); NewznabMockRequest mockRequest = NewznabMockRequest.builder().numberOfResults(100).titleBase("offsettest").offset(params.getOffset()).titleWords(Collections.emptyList()).total(300).build(); NewznabXmlRoot rssRoot = NewznabMockBuilder.generateResponse(mockRequest); return new ResponseEntity<Object>(rssRoot, HttpStatus.OK); NewznabMockRequest mockRequest = NewznabMockRequest.builder().numberOfResults(100).titleBase("/").offset(params.getOffset()).titleWords(Collections.emptyList()).total(300).build(); NewznabXmlRoot rssRoot = NewznabMockBuilder.generateResponse(mockRequest); return new ResponseEntity<Object>(rssRoot, HttpStatus.OK); NewznabMockRequest mockRequest = NewznabMockRequest.builder().numberOfResults(10).titleBase("actualduplicates").offset(params.getOffset()).titleWords(Collections.emptyList()).total(10).build(); NewznabXmlRoot rssRoot = NewznabMockBuilder.generateResponse(mockRequest); rssRoot.getRssChannel().getItems().forEach(x -> x.setTitle(rssRoot.getRssChannel().getItems().get(0).getTitle())); rssRoot.getRssChannel().getItems().forEach(x -> x.setLink(rssRoot.getRssChannel().getItems().get(0).getLink())); NewznabMockRequest mockRequest = NewznabMockRequest.builder().numberOfResults(1).titleBase("oneresult").offset(params.getOffset()).titleWords(Collections.emptyList()).total(1).build(); NewznabXmlRoot rssRoot = NewznabMockBuilder.generateResponse(mockRequest); return new ResponseEntity<Object>(rssRoot, HttpStatus.OK); NewznabXmlItem result2 = RssItemBuilder.builder("indexer1-result2").pubDate(Instant.now().minus(2, ChronoUnit.DAYS)).hasNfo(true).grabs(2).size(mbToBytes(2)).newznabAttributes(new ArrayList<>(Arrays.asList(new NewznabAttribute("category", "5040")))).category("TV SD").build(); NewznabXmlItem result3 = RssItemBuilder.builder("indexer1-result3").pubDate(Instant.now().minus(3, ChronoUnit.DAYS)).comments("comments").grabs(3).size(mbToBytes(3)).newznabAttributes(new ArrayList<>(Arrays.asList(new NewznabAttribute("category", "5030")))).category("TV HD").build(); NewznabXmlRoot rssRoot = NewznabMockBuilder.getRssRoot(Arrays.asList(result1, result2, result3), 0, 3); return new ResponseEntity<Object>(rssRoot, HttpStatus.OK);
@RequestMapping(value = "/torznab/api", produces = MediaType.TEXT_XML_VALUE) public ResponseEntity<? extends Object> torznabapi(NewznabParameters params) throws Exception { if (params.getT() == ActionAttribute.CAPS) { return new ResponseEntity<Object>(NewznabMockBuilder.getCaps(), HttpStatus.OK); } NewznabXmlRoot rssRoot = NewznabMockBuilder.generateResponse(0, 10, params.getApikey(), false, Collections.emptyList()); Random random = new Random(); for (NewznabXmlItem item : rssRoot.getRssChannel().getItems()) { item.setNewznabAttributes(new ArrayList<>()); item.getTorznabAttributes().add(new NewznabAttribute("seeders", String.valueOf(random.nextInt(30000)))); item.getTorznabAttributes().add(new NewznabAttribute("peers", String.valueOf(random.nextInt(30000)))); if (random.nextInt(5) > 3) { item.getTorznabAttributes().add(new NewznabAttribute("grabs", String.valueOf(random.nextInt(30000)))); } item.setCategory("5000"); item.setGrabs(null); } return new ResponseEntity<Object>(rssRoot, HttpStatus.OK); }