Skip to content

Commit c009f7c

Browse files
committed
Convert RssKeyword from sealed class to enum
1 parent 83535fe commit c009f7c

File tree

8 files changed

+273
-246
lines changed

8 files changed

+273
-246
lines changed

rssparser/src/androidMain/kotlin/com/prof18/rssparser/internal/AndroidXmlParser.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ internal class AndroidXmlParser(
5151
while (eventType != XmlPullParser.END_DOCUMENT) {
5252
if (eventType == XmlPullParser.START_TAG) {
5353
when {
54-
xmlPullParser.contains(RssKeyword.Rss) -> {
54+
xmlPullParser.contains(RssKeyword.RSS) -> {
5555
rssChannel = extractRSSContent(xmlPullParser)
5656
}
5757
xmlPullParser.contains(AtomKeyword.ATOM) -> {

rssparser/src/androidMain/kotlin/com/prof18/rssparser/internal/rss/RssParser.kt

Lines changed: 53 additions & 53 deletions
Large diffs are not rendered by default.

rssparser/src/appleMain/kotlin/com/prof18/rssparser/internal/IosXmlParser.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ private class NSXMLParserDelegate(
7777
attributes: Map<Any?, *>,
7878
) {
7979
when (didStartElement) {
80-
RssKeyword.Rss.value -> {
80+
RssKeyword.RSS.value -> {
8181
feedHandler = RssFeedHandler()
8282
}
8383

rssparser/src/appleMain/kotlin/com/prof18/rssparser/internal/rss/RssFeedHandler.kt

Lines changed: 67 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,10 @@ internal class RssFeedHandler : FeedHandler {
2626
currentElement = startElement
2727

2828
when (currentElement) {
29-
RssKeyword.Channel.Channel.value -> isInsideChannel = true
30-
RssKeyword.Item.Item.value -> isInsideItem = true
31-
RssKeyword.Channel.Itunes.Owner.value -> isInsideItunesOwner = true
32-
RssKeyword.Image.value -> {
29+
RssKeyword.CHANNEL.value -> isInsideChannel = true
30+
RssKeyword.ITEM.value -> isInsideItem = true
31+
RssKeyword.CHANNEL_ITUNES_OWNER.value -> isInsideItunesOwner = true
32+
RssKeyword.IMAGE.value -> {
3333
when {
3434
isInsideItem -> {
3535
isInsideItemImage = true
@@ -39,25 +39,25 @@ internal class RssFeedHandler : FeedHandler {
3939
}
4040
}
4141

42-
RssKeyword.Item.MediaContent.value -> {
42+
RssKeyword.ITEM_MEDIA_CONTENT.value -> {
4343
if (isInsideItem) {
44-
val url = attributes.getValueOrNull(RssKeyword.Url.value) as? String
44+
val url = attributes.getValueOrNull(RssKeyword.URL.value) as? String
4545
channelFactory.articleBuilder.image(url)
4646
}
4747
}
4848

49-
RssKeyword.Item.Thumbnail.value -> {
49+
RssKeyword.ITEM_THUMBNAIL.value -> {
5050
if (isInsideItem) {
51-
val url = attributes.getValueOrNull(RssKeyword.Url.value) as? String
51+
val url = attributes.getValueOrNull(RssKeyword.URL.value) as? String
5252
channelFactory.articleBuilder.image(url)
5353
}
5454
}
5555

56-
RssKeyword.Item.Enclosure.value -> {
56+
RssKeyword.ITEM_ENCLOSURE.value -> {
5757
if (isInsideItem) {
58-
val type = attributes[RssKeyword.Item.Type.value] as? String
59-
val length = attributes[RssKeyword.Item.Length.value] as? String
60-
val url = attributes[RssKeyword.Url.value] as? String
58+
val type = attributes[RssKeyword.ITEM_TYPE.value] as? String
59+
val length = attributes[RssKeyword.ITEM_LENGTH.value] as? String
60+
val url = attributes[RssKeyword.URL.value] as? String
6161

6262
channelFactory.rawEnclosureBuilder.length(length?.toLongOrNull())
6363
channelFactory.rawEnclosureBuilder.type(type)
@@ -82,25 +82,25 @@ internal class RssFeedHandler : FeedHandler {
8282
}
8383
}
8484

85-
RssKeyword.Itunes.Image.value -> {
86-
val url = attributes.getValueOrNull(RssKeyword.Href.value) as? String
85+
RssKeyword.ITUNES_IMAGE.value -> {
86+
val url = attributes.getValueOrNull(RssKeyword.HREF.value) as? String
8787
when {
8888
isInsideItem -> channelFactory.itunesArticleBuilder.image(url)
8989
isInsideChannel -> channelFactory.itunesChannelBuilder.image(url)
9090
}
9191
}
9292

93-
RssKeyword.Item.Source.value -> {
93+
RssKeyword.ITEM_SOURCE.value -> {
9494
if (isInsideItem) {
95-
val sourceUrl = attributes.getValueOrNull(RssKeyword.Url.value) as? String
95+
val sourceUrl = attributes.getValueOrNull(RssKeyword.URL.value) as? String
9696
channelFactory.articleBuilder.sourceUrl(sourceUrl)
9797
}
9898
}
9999

100-
RssKeyword.Channel.Itunes.Category.value -> {
100+
RssKeyword.CHANNEL_ITUNES_CATEGORY.value -> {
101101
if (isInsideChannel) {
102102
val category =
103-
attributes.getValueOrNull(RssKeyword.Channel.Itunes.Text.value) as? String
103+
attributes.getValueOrNull(RssKeyword.CHANNEL_ITUNES_TEXT.value) as? String
104104
channelFactory.itunesChannelBuilder.addCategory(category)
105105
}
106106
}
@@ -115,7 +115,7 @@ internal class RssFeedHandler : FeedHandler {
115115
channelFactory.articleBuilder.image(characters.trim())
116116
}
117117

118-
isInsideItem && element == RssKeyword.Item.Category.value -> {
118+
isInsideItem && element == RssKeyword.ITEM_CATEGORY.value -> {
119119
val category = characters.trim()
120120
if (category.isNotEmpty()) {
121121
channelFactory.articleBuilder.addCategory(category)
@@ -139,166 +139,166 @@ internal class RssFeedHandler : FeedHandler {
139139

140140
override fun didEndElement(endElement: String) {
141141
when (endElement) {
142-
RssKeyword.Channel.Channel.value -> {
142+
RssKeyword.CHANNEL.value -> {
143143
channelFactory.channelBuilder.title(
144-
channelData[RssKeyword.Title.value]?.trim()
144+
channelData[RssKeyword.TITLE.value]?.trim()
145145
)
146146
channelFactory.channelBuilder.link(
147-
channelData[RssKeyword.Link.value]?.trim()
147+
channelData[RssKeyword.LINK.value]?.trim()
148148
)
149149
channelFactory.channelBuilder.description(
150-
channelData[RssKeyword.Description.value]?.trim()
150+
channelData[RssKeyword.DESCRIPTION.value]?.trim()
151151
)
152152
channelFactory.channelBuilder.lastBuildDate(
153-
channelData[RssKeyword.Channel.LastBuildDate.value]?.trim()
153+
channelData[RssKeyword.CHANNEL_LAST_BUILD_DATE.value]?.trim()
154154
)
155155
channelFactory.channelBuilder.updatePeriod(
156-
channelData[RssKeyword.Channel.UpdatePeriod.value]?.trim()
156+
channelData[RssKeyword.CHANNEL_UPDATE_PERIOD.value]?.trim()
157157
)
158158

159159
// Itunes Data
160160
channelFactory.itunesChannelBuilder.type(
161-
channelData[RssKeyword.Channel.Itunes.Type.value]?.trim()
161+
channelData[RssKeyword.CHANNEL_ITUNES_TYPE.value]?.trim()
162162
)
163163
channelFactory.itunesChannelBuilder.explicit(
164-
channelData[RssKeyword.Itunes.Explicit.value]?.trim()
164+
channelData[RssKeyword.ITUNES_EXPLICIT.value]?.trim()
165165
)
166166
channelFactory.itunesChannelBuilder.subtitle(
167-
channelData[RssKeyword.Itunes.Subtitle.value]?.trim()
167+
channelData[RssKeyword.ITUNES_SUBTITLE.value]?.trim()
168168
)
169169
channelFactory.itunesChannelBuilder.summary(
170-
channelData[RssKeyword.Itunes.Summary.value]?.trim()
170+
channelData[RssKeyword.ITUNES_SUMMARY.value]?.trim()
171171
)
172172
channelFactory.itunesChannelBuilder.author(
173-
channelData[RssKeyword.Itunes.Author.value]?.trim()
173+
channelData[RssKeyword.ITUNES_AUTHOR.value]?.trim()
174174
)
175175
channelFactory.itunesChannelBuilder.duration(
176-
channelData[RssKeyword.Itunes.Duration.value]?.trim()
176+
channelData[RssKeyword.ITUNES_DURATION.value]?.trim()
177177
)
178178
channelFactory.setChannelItunesKeywords(
179-
channelData[RssKeyword.Itunes.Keywords.value]?.trim()
179+
channelData[RssKeyword.ITUNES_KEYWORDS.value]?.trim()
180180
)
181181
channelFactory.itunesChannelBuilder.newsFeedUrl(
182-
channelData[RssKeyword.Channel.Itunes.NewFeedUrl.value]?.trim()
182+
channelData[RssKeyword.CHANNEL_ITUNES_NEW_FEED_URL.value]?.trim()
183183
)
184184

185185
isInsideChannel = false
186186
}
187187

188-
RssKeyword.Item.Item.value -> {
188+
RssKeyword.ITEM.value -> {
189189
channelFactory.articleBuilder.author(
190-
itemData[RssKeyword.Item.Author.value]?.trim()
190+
itemData[RssKeyword.ITEM_AUTHOR.value]?.trim()
191191
)
192192
channelFactory.articleBuilder.sourceName(
193-
itemData[RssKeyword.Item.Source.value]?.trim()
193+
itemData[RssKeyword.ITEM_SOURCE.value]?.trim()
194194
)
195195

196-
val time = itemData[RssKeyword.Item.Time.value]?.trim()
196+
val time = itemData[RssKeyword.ITEM_TIME.value]?.trim()
197197
if (time != null) {
198198
channelFactory.articleBuilder.pubDate(time)
199199
} else {
200200
channelFactory.articleBuilder.pubDate(
201-
itemData[RssKeyword.Item.PubDate.value]?.trim()
201+
itemData[RssKeyword.ITEM_PUB_DATE.value]?.trim()
202202
)
203203
}
204204

205205
channelFactory.articleBuilder.pubDateIfNull(
206-
itemData[RssKeyword.Item.Date.value]?.trim()
206+
itemData[RssKeyword.ITEM_DATE.value]?.trim()
207207
)
208208

209209
channelFactory.articleBuilder.guid(
210-
itemData[RssKeyword.Item.Guid.value]?.trim()
210+
itemData[RssKeyword.ITEM_GUID.value]?.trim()
211211
)
212-
itemData[RssKeyword.Item.Content.value]?.trim()?.let { content ->
212+
itemData[RssKeyword.ITEM_CONTENT.value]?.trim()?.let { content ->
213213
channelFactory.setImageFromContent(content)
214214
channelFactory.articleBuilder.content(content)
215215
}
216216
channelFactory.articleBuilder.image(
217-
itemData[RssKeyword.Item.News.Image.value]?.trim()
217+
itemData[RssKeyword.ITEM_NEWS_IMAGE.value]?.trim()
218218
)
219219
channelFactory.articleBuilder.commentUrl(
220-
itemData[RssKeyword.Item.Comments.value]?.trim()
220+
itemData[RssKeyword.ITEM_COMMENTS.value]?.trim()
221221
)
222222
channelFactory.articleBuilder.image(
223-
itemData[RssKeyword.Image.value]?.trim()
223+
itemData[RssKeyword.IMAGE.value]?.trim()
224224
)
225225
channelFactory.articleBuilder.title(
226-
itemData[RssKeyword.Title.value]?.trim()
226+
itemData[RssKeyword.TITLE.value]?.trim()
227227
)
228228
channelFactory.articleBuilder.link(
229-
itemData[RssKeyword.Link.value]?.trim()
229+
itemData[RssKeyword.LINK.value]?.trim()
230230
)
231-
itemData[RssKeyword.Description.value]?.trim()?.let { description ->
231+
itemData[RssKeyword.DESCRIPTION.value]?.trim()?.let { description ->
232232
channelFactory.setImageFromContent(description)
233233
channelFactory.articleBuilder.description(description)
234234
}
235235

236236
channelFactory.articleBuilder.image(
237-
itemData[RssKeyword.Item.Enclosure.value]?.trim()
237+
itemData[RssKeyword.ITEM_ENCLOSURE.value]?.trim()
238238
)
239239
channelFactory.articleBuilder.image(
240-
itemData[RssKeyword.Item.Thumb.value]?.trim()
240+
itemData[RssKeyword.ITEM_THUMB.value]?.trim()
241241
)
242242
channelFactory.itunesArticleBuilder.episode(
243-
itemData[RssKeyword.Item.Itunes.Episode.value]?.trim()
243+
itemData[RssKeyword.ITEM_ITUNES_EPISODE.value]?.trim()
244244
)
245245
channelFactory.itunesArticleBuilder.episodeType(
246-
itemData[RssKeyword.Item.Itunes.EpisodeType.value]?.trim()
246+
itemData[RssKeyword.ITEM_ITUNES_EPISODE_TYPE.value]?.trim()
247247
)
248248
channelFactory.itunesArticleBuilder.season(
249-
itemData[RssKeyword.Item.Itunes.Season.value]?.trim()
249+
itemData[RssKeyword.ITEM_ITUNES_SEASON.value]?.trim()
250250
)
251251
channelFactory.itunesArticleBuilder.explicit(
252-
itemData[RssKeyword.Itunes.Explicit.value]?.trim()
252+
itemData[RssKeyword.ITUNES_EXPLICIT.value]?.trim()
253253
)
254254
channelFactory.itunesArticleBuilder.subtitle(
255-
itemData[RssKeyword.Itunes.Subtitle.value]?.trim()
255+
itemData[RssKeyword.ITUNES_SUBTITLE.value]?.trim()
256256
)
257257
channelFactory.itunesArticleBuilder.summary(
258-
itemData[RssKeyword.Itunes.Summary.value]?.trim()
258+
itemData[RssKeyword.ITUNES_SUMMARY.value]?.trim()
259259
)
260260
channelFactory.itunesArticleBuilder.author(
261-
itemData[RssKeyword.Itunes.Author.value]?.trim()
261+
itemData[RssKeyword.ITUNES_AUTHOR.value]?.trim()
262262
)
263263
channelFactory.itunesArticleBuilder.duration(
264-
itemData[RssKeyword.Itunes.Duration.value]?.trim()
264+
itemData[RssKeyword.ITUNES_DURATION.value]?.trim()
265265
)
266266
channelFactory.setArticleItunesKeywords(
267-
itemData[RssKeyword.Itunes.Keywords.value]?.trim()
267+
itemData[RssKeyword.ITUNES_KEYWORDS.value]?.trim()
268268
)
269269
channelFactory.buildArticle()
270270
itemData.clear()
271271
}
272272

273-
RssKeyword.Channel.Itunes.Owner.value -> {
273+
RssKeyword.CHANNEL_ITUNES_OWNER.value -> {
274274
channelFactory.itunesOwnerBuilder.name(
275-
itunesOwnerData[RssKeyword.Channel.Itunes.OwnerName.value]?.trim()
275+
itunesOwnerData[RssKeyword.CHANNEL_ITUNES_OWNER_NAME.value]?.trim()
276276
)
277277
channelFactory.itunesOwnerBuilder.email(
278-
itunesOwnerData[RssKeyword.Channel.Itunes.OwnerEmail.value]?.trim()
278+
itunesOwnerData[RssKeyword.CHANNEL_ITUNES_OWNER_EMAIL.value]?.trim()
279279
)
280280
channelFactory.buildItunesOwner()
281281
isInsideItunesOwner = false
282282
}
283283

284-
RssKeyword.Link.value -> {
284+
RssKeyword.LINK.value -> {
285285
if (isInsideItem) {
286286
isInsideItemImage = false
287287
}
288288
}
289289

290-
RssKeyword.Image.value -> {
290+
RssKeyword.IMAGE.value -> {
291291
channelFactory.channelImageBuilder.url(
292-
channelImageData[RssKeyword.Url.value]?.trim()
292+
channelImageData[RssKeyword.URL.value]?.trim()
293293
)
294294
channelFactory.channelImageBuilder.title(
295-
channelImageData[RssKeyword.Title.value]?.trim()
295+
channelImageData[RssKeyword.TITLE.value]?.trim()
296296
)
297297
channelFactory.channelImageBuilder.link(
298-
channelImageData[RssKeyword.Link.value]?.trim()
298+
channelImageData[RssKeyword.LINK.value]?.trim()
299299
)
300300
channelFactory.channelImageBuilder.description(
301-
channelImageData[RssKeyword.Description.value]?.trim()
301+
channelImageData[RssKeyword.DESCRIPTION.value]?.trim()
302302
)
303303
if (isInsideItem) {
304304
isInsideItemImage = false

0 commit comments

Comments
 (0)