yuzurss

Feed aggregator microservice based on Spring
git clone https://git.neuralcrash.com/yuzurss.git
Log | Files | Refs | README | LICENSE

commit d99f2606f65e0b2ebc62a9013e331776cad651b5
parent 2a4db4eb31d3de959b3b9131338587e3362b35b5
Author: Kebigon <git@kebigon.xyz>
Date:   Tue,  1 Jan 2019 19:10:45 +0900

Use POST requests
Diffstat:
Msrc/main/java/fr/lrgn/yuzurss/FeedController.java | 22+++++++---------------
Asrc/main/java/fr/lrgn/yuzurss/FeedRequestBody.java | 25+++++++++++++++++++++++++
2 files changed, 32 insertions(+), 15 deletions(-)

diff --git a/src/main/java/fr/lrgn/yuzurss/FeedController.java b/src/main/java/fr/lrgn/yuzurss/FeedController.java @@ -4,8 +4,8 @@ import java.net.URI; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.CrossOrigin; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -16,20 +16,13 @@ import reactor.core.publisher.Flux; @CrossOrigin public class FeedController { - private static final int DEFAULT_LIMIT = 10; - @Autowired private FeedClient client; - @GetMapping("/{urls}") - Flux<FeedEntry> getFeeds(@PathVariable String[] urls) - { - return getFeeds(urls, DEFAULT_LIMIT); - } - - @GetMapping("/{urls}/{limit}") - Flux<FeedEntry> getFeeds(@PathVariable String[] urls, @PathVariable int limit) + @PostMapping() + public Flux<FeedEntry> getFeeds(@RequestBody FeedRequestBody body) { - return Flux.fromArray(urls).flatMap(url -> client.getFeed(URI.create(url))).sort(FeedEntry.COMPARATOR).take(limit); + return Flux.fromIterable(body.getUrls()).flatMap(url -> client.getFeed(URI.create(url))).sort(FeedEntry.COMPARATOR) + .take(body.getLimit()); } -} -\ No newline at end of file +} diff --git a/src/main/java/fr/lrgn/yuzurss/FeedRequestBody.java b/src/main/java/fr/lrgn/yuzurss/FeedRequestBody.java @@ -0,0 +1,25 @@ +package fr.lrgn.yuzurss; + +import java.util.List; + +public class FeedRequestBody +{ + private final List<String> urls; + private final int limit; + + public FeedRequestBody(List<String> urls, int limit) + { + this.urls = urls; + this.limit = limit; + } + + public List<String> getUrls() + { + return urls; + } + + public int getLimit() + { + return limit; + } +}