Skip to content

Commit a35ba72

Browse files
committed
resolve a couple issues
1 parent 5975c84 commit a35ba72

File tree

1 file changed

+14
-10
lines changed

1 file changed

+14
-10
lines changed

application/src/main/java/org/togetherjava/tjbot/features/javamail/RSSHandlerRoutine.java

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
import javax.annotation.Nonnull;
2525

26+
import java.io.IOException;
2627
import java.time.LocalDateTime;
2728
import java.time.ZoneId;
2829
import java.time.ZonedDateTime;
@@ -64,13 +65,13 @@
6465
public final class RSSHandlerRoutine implements Routine {
6566

6667
private static final Logger logger = LoggerFactory.getLogger(RSSHandlerRoutine.class);
67-
private static final RssReader RSS_READER = new RssReader();
6868
private static final int MAX_CONTENTS = 1000;
6969
private static final ZonedDateTime ZONED_TIME_MIN =
7070
ZonedDateTime.of(LocalDateTime.MIN, ZoneId.systemDefault());
71+
private final RssReader rssReader;
7172
private final List<RSSFeed> feeds;
7273
private final Predicate<String> defaultChannelPattern;
73-
private final Map<RSSFeed, Predicate<String>> targetChannelPatterns = new HashMap<>();
74+
private final Map<RSSFeed, Predicate<String>> targetChannelPatterns;
7475
private final int interval;
7576
private final Database database;
7677

@@ -86,13 +87,15 @@ public RSSHandlerRoutine(Config config, Database database) {
8687
this.database = database;
8788
this.defaultChannelPattern =
8889
Pattern.compile(config.getJavaNewsChannelPattern()).asMatchPredicate();
90+
this.targetChannelPatterns = new HashMap<>();
8991
this.feeds.forEach(feed -> {
9092
if (feed.targetChannelPattern() != null) {
9193
Predicate<String> predicate =
9294
Pattern.compile(feed.targetChannelPattern()).asMatchPredicate();
9395
targetChannelPatterns.put(feed, predicate);
9496
}
9597
});
98+
this.rssReader = new RssReader();
9699
}
97100

98101
@Override
@@ -141,7 +144,7 @@ private void sendRSS(JDA jda, RSSFeed feedConfig) throws DateTimeParseException
141144
.fetchAny());
142145

143146
String dateStr = dateResult == null ? null : dateResult.getLastDate();
144-
ZonedDateTime lastSavedDate = getLocalDateTime(dateStr, feedConfig.dateFormatterPattern());
147+
ZonedDateTime lastSavedDate = getZonedDateTime(dateStr, feedConfig.dateFormatterPattern());
145148

146149
final Predicate<Item> shouldItemBePosted = item -> {
147150
ZonedDateTime itemPubDate =
@@ -205,7 +208,7 @@ private static ZonedDateTime getDateTimeFromItem(Item item, String dateTimeForma
205208
return ZONED_TIME_MIN;
206209
}
207210

208-
return getLocalDateTime(pubDate, dateTimeFormat);
211+
return getZonedDateTime(pubDate, dateTimeFormat);
209212
}
210213

211214
/**
@@ -223,7 +226,7 @@ private static boolean isValidDateFormat(List<Item> rssFeeds, RSSFeed feedConfig
223226
return false;
224227
}
225228

226-
getLocalDateTime(firstRssFeedPubDate, feedConfig.dateFormatterPattern());
229+
getZonedDateTime(firstRssFeedPubDate, feedConfig.dateFormatterPattern());
227230
} catch (Exception e) {
228231
return false;
229232
}
@@ -261,7 +264,7 @@ private static EmbedBuilder constructEmbedMessage(Item item, RSSFeed feedConfig)
261264
// Set the item's timestamp to the embed if found
262265
item.getPubDate()
263266
.ifPresent(date -> embedBuilder
264-
.setTimestamp(getLocalDateTime(date, feedConfig.dateFormatterPattern())));
267+
.setTimestamp(getZonedDateTime(date, feedConfig.dateFormatterPattern())));
265268

266269
embedBuilder.setTitle(title, titleLink);
267270
embedBuilder.setAuthor(item.getChannel().getLink());
@@ -288,10 +291,10 @@ private static EmbedBuilder constructEmbedMessage(Item item, RSSFeed feedConfig)
288291
/**
289292
* Fetches a list of {@link Item} from a given RSS url.
290293
*/
291-
private static List<Item> fetchRss(String rssUrl) {
294+
private List<Item> fetchRss(String rssUrl) {
292295
try {
293-
return RSS_READER.read(rssUrl).toList();
294-
} catch (Exception e) {
296+
return rssReader.read(rssUrl).toList();
297+
} catch (IOException e) {
295298
logger.warn("Could not fetch RSS from URL ({})", rssUrl);
296299
return List.of();
297300
}
@@ -300,8 +303,9 @@ private static List<Item> fetchRss(String rssUrl) {
300303
/**
301304
* Helper function for parsing a given date value to a {@link ZonedDateTime} with a given
302305
* format.
306+
*
303307
*/
304-
private static ZonedDateTime getLocalDateTime(@Nullable String date, @NotNull String format) {
308+
private static ZonedDateTime getZonedDateTime(@Nullable String date, @NotNull String format) throws DateTimeParseException {
305309
if (date == null) {
306310
return ZONED_TIME_MIN;
307311
}

0 commit comments

Comments
 (0)