From 51a85cbcfc77fec579720315bf7db572ef2ca8b4 Mon Sep 17 00:00:00 2001 From: Elex Date: Wed, 21 Feb 2024 01:13:13 +0900 Subject: [PATCH] - add synd-feed --- feed/README.md | 5 ++ feed/build.gradle.kts | 16 ++++++ feed/logback.xml | 20 ++++++++ .../java/kr/pe/elex/example/FeedService.java | 50 +++++++++++++++++++ .../java/kr/pe/elex/example/FeedType.java | 24 +++++++++ .../kr/pe/elex/example/FeedServiceTest.java | 25 ++++++++++ settings.gradle.kts | 1 + 7 files changed, 141 insertions(+) create mode 100644 feed/README.md create mode 100644 feed/build.gradle.kts create mode 100644 feed/logback.xml create mode 100644 feed/src/main/java/kr/pe/elex/example/FeedService.java create mode 100644 feed/src/main/java/kr/pe/elex/example/FeedType.java create mode 100644 feed/src/test/java/kr/pe/elex/example/FeedServiceTest.java diff --git a/feed/README.md b/feed/README.md new file mode 100644 index 0000000..4e045b3 --- /dev/null +++ b/feed/README.md @@ -0,0 +1,5 @@ +# Feed + +RSS and ATOM feed + +powered by ROME \ No newline at end of file diff --git a/feed/build.gradle.kts b/feed/build.gradle.kts new file mode 100644 index 0000000..b64a058 --- /dev/null +++ b/feed/build.gradle.kts @@ -0,0 +1,16 @@ +/* + * Examples for Java + * + * Copyright (c) 2021. Elex. All Rights Reserved. + * https://www.elex-project.com/ + */ + +plugins { + id("elex-java") +} + +dependencies { +// https://mvnrepository.com/artifact/com.rometools/rome + implementation("com.rometools:rome:2.1.0") + +} diff --git a/feed/logback.xml b/feed/logback.xml new file mode 100644 index 0000000..74ff8a3 --- /dev/null +++ b/feed/logback.xml @@ -0,0 +1,20 @@ + + + + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + diff --git a/feed/src/main/java/kr/pe/elex/example/FeedService.java b/feed/src/main/java/kr/pe/elex/example/FeedService.java new file mode 100644 index 0000000..858c121 --- /dev/null +++ b/feed/src/main/java/kr/pe/elex/example/FeedService.java @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2024. Elex. All Rights Reesrved. + * https://www.elex-project.com/ + */ + +package kr.pe.elex.example; + +import com.rometools.rome.feed.synd.SyndEntry; +import com.rometools.rome.feed.synd.SyndFeed; +import com.rometools.rome.feed.synd.SyndFeedImpl; +import com.rometools.rome.io.FeedException; +import com.rometools.rome.io.SyndFeedInput; +import com.rometools.rome.io.SyndFeedOutput; +import org.jetbrains.annotations.NotNull; + +import java.io.IOException; +import java.io.Reader; +import java.io.StringWriter; +import java.util.List; + +public class FeedService { + + + public static SyndFeed read(final Reader reader) throws FeedException { + return new SyndFeedInput().build(reader); + } + + public static @NotNull SyndFeed create(final List entries) { + final SyndFeed feed = new SyndFeedImpl(); + feed.setFeedType(FeedType.RSS.getValue()); + feed.setTitle("Sample Feed (created with ROME)"); + feed.setLink("http://rome.dev.java.net"); + feed.setDescription("This feed has been created using ROME (Java syndication utilities"); + feed.setEntries(entries); + + return feed; + } + + public static String write(final SyndFeed feed) throws FeedException, IOException { + try (final StringWriter writer = new StringWriter()) { + new SyndFeedOutput().output(feed, writer); + + return writer.toString(); + } + + + } + + +} diff --git a/feed/src/main/java/kr/pe/elex/example/FeedType.java b/feed/src/main/java/kr/pe/elex/example/FeedType.java new file mode 100644 index 0000000..97e7986 --- /dev/null +++ b/feed/src/main/java/kr/pe/elex/example/FeedType.java @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2024. Elex. All Rights Reesrved. + * https://www.elex-project.com/ + */ + +package kr.pe.elex.example; + +import lombok.Getter; + +@Getter +public enum FeedType { + RSS_1_0("rss_1.0"), + RSS_2_0("rss_2.0"), + + RSS("rss_2.0"), + ATOM_0_3("atom_0.3"), + ATOM("atom_0.3"); + + private final String value; + FeedType(final String value){ + this.value = value; + } + +} diff --git a/feed/src/test/java/kr/pe/elex/example/FeedServiceTest.java b/feed/src/test/java/kr/pe/elex/example/FeedServiceTest.java new file mode 100644 index 0000000..34ca0f7 --- /dev/null +++ b/feed/src/test/java/kr/pe/elex/example/FeedServiceTest.java @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2024. Elex. All Rights Reesrved. + * https://www.elex-project.com/ + */ + +package kr.pe.elex.example; + +import com.rometools.rome.feed.synd.SyndFeed; +import com.rometools.rome.io.FeedException; +import org.junit.jupiter.api.Test; + +import java.io.IOException; +import java.util.Collections; + +import static org.junit.jupiter.api.Assertions.*; + +class FeedServiceTest { + + @Test + public void createTest() throws FeedException, IOException { + SyndFeed feed = FeedService.create(Collections.emptyList()); + + System.out.println(FeedService.write(feed)); + } +} \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index 054e8a5..07e1441 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -17,3 +17,4 @@ include( "mustache", "thymeleaf", "locale", "quartz", "sysinfo", "imaging", "stream", "sound", "midi", "gson", "security" ) +include("feed")