Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 21 additions & 3 deletions rssparser/api/jvm/rssparser.api
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,21 @@ public final class com/prof18/rssparser/model/RawEnclosure {
public fun toString ()Ljava/lang/String;
}

public final class com/prof18/rssparser/model/RawMediaContent {
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
public final fun component1 ()Ljava/lang/String;
public final fun component2 ()Ljava/lang/String;
public final fun component3 ()Ljava/lang/String;
public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/prof18/rssparser/model/RawMediaContent;
public static synthetic fun copy$default (Lcom/prof18/rssparser/model/RawMediaContent;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/prof18/rssparser/model/RawMediaContent;
public fun equals (Ljava/lang/Object;)Z
public final fun getMedium ()Ljava/lang/String;
public final fun getType ()Ljava/lang/String;
public final fun getUrl ()Ljava/lang/String;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}

public final class com/prof18/rssparser/model/RssChannel {
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/prof18/rssparser/model/RssImage;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Lcom/prof18/rssparser/model/ItunesChannelData;Lcom/prof18/rssparser/model/YoutubeChannelData;)V
public final fun component1 ()Ljava/lang/String;
Expand Down Expand Up @@ -174,7 +189,8 @@ public final class com/prof18/rssparser/model/RssImage {
}

public final class com/prof18/rssparser/model/RssItem {
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Lcom/prof18/rssparser/model/ItunesItemData;Ljava/lang/String;Lcom/prof18/rssparser/model/YoutubeItemData;Lcom/prof18/rssparser/model/RawEnclosure;)V
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Lcom/prof18/rssparser/model/ItunesItemData;Ljava/lang/String;Lcom/prof18/rssparser/model/YoutubeItemData;Lcom/prof18/rssparser/model/RawEnclosure;Lcom/prof18/rssparser/model/RawMediaContent;)V
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Lcom/prof18/rssparser/model/ItunesItemData;Ljava/lang/String;Lcom/prof18/rssparser/model/YoutubeItemData;Lcom/prof18/rssparser/model/RawEnclosure;Lcom/prof18/rssparser/model/RawMediaContent;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Ljava/lang/String;
public final fun component10 ()Ljava/lang/String;
public final fun component11 ()Ljava/lang/String;
Expand All @@ -184,6 +200,7 @@ public final class com/prof18/rssparser/model/RssItem {
public final fun component15 ()Ljava/lang/String;
public final fun component16 ()Lcom/prof18/rssparser/model/YoutubeItemData;
public final fun component17 ()Lcom/prof18/rssparser/model/RawEnclosure;
public final fun component18 ()Lcom/prof18/rssparser/model/RawMediaContent;
public final fun component2 ()Ljava/lang/String;
public final fun component3 ()Ljava/lang/String;
public final fun component4 ()Ljava/lang/String;
Expand All @@ -192,8 +209,8 @@ public final class com/prof18/rssparser/model/RssItem {
public final fun component7 ()Ljava/lang/String;
public final fun component8 ()Ljava/lang/String;
public final fun component9 ()Ljava/lang/String;
public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Lcom/prof18/rssparser/model/ItunesItemData;Ljava/lang/String;Lcom/prof18/rssparser/model/YoutubeItemData;Lcom/prof18/rssparser/model/RawEnclosure;)Lcom/prof18/rssparser/model/RssItem;
public static synthetic fun copy$default (Lcom/prof18/rssparser/model/RssItem;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Lcom/prof18/rssparser/model/ItunesItemData;Ljava/lang/String;Lcom/prof18/rssparser/model/YoutubeItemData;Lcom/prof18/rssparser/model/RawEnclosure;ILjava/lang/Object;)Lcom/prof18/rssparser/model/RssItem;
public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Lcom/prof18/rssparser/model/ItunesItemData;Ljava/lang/String;Lcom/prof18/rssparser/model/YoutubeItemData;Lcom/prof18/rssparser/model/RawEnclosure;Lcom/prof18/rssparser/model/RawMediaContent;)Lcom/prof18/rssparser/model/RssItem;
public static synthetic fun copy$default (Lcom/prof18/rssparser/model/RssItem;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Lcom/prof18/rssparser/model/ItunesItemData;Ljava/lang/String;Lcom/prof18/rssparser/model/YoutubeItemData;Lcom/prof18/rssparser/model/RawEnclosure;Lcom/prof18/rssparser/model/RawMediaContent;ILjava/lang/Object;)Lcom/prof18/rssparser/model/RssItem;
public fun equals (Ljava/lang/Object;)Z
public final fun getAudio ()Ljava/lang/String;
public final fun getAuthor ()Ljava/lang/String;
Expand All @@ -207,6 +224,7 @@ public final class com/prof18/rssparser/model/RssItem {
public final fun getLink ()Ljava/lang/String;
public final fun getPubDate ()Ljava/lang/String;
public final fun getRawEnclosure ()Lcom/prof18/rssparser/model/RawEnclosure;
public final fun getRawMediaContent ()Lcom/prof18/rssparser/model/RawMediaContent;
public final fun getSourceName ()Ljava/lang/String;
public final fun getSourceUrl ()Ljava/lang/String;
public final fun getTitle ()Ljava/lang/String;
Expand Down
26 changes: 24 additions & 2 deletions rssparser/api/rssparser.klib.api
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,25 @@ final class com.prof18.rssparser.model/RawEnclosure { // com.prof18.rssparser.mo
final fun toString(): kotlin/String // com.prof18.rssparser.model/RawEnclosure.toString|toString(){}[0]
}

final class com.prof18.rssparser.model/RawMediaContent { // com.prof18.rssparser.model/RawMediaContent|null[0]
constructor <init>(kotlin/String?, kotlin/String?, kotlin/String?) // com.prof18.rssparser.model/RawMediaContent.<init>|<init>(kotlin.String?;kotlin.String?;kotlin.String?){}[0]

final val medium // com.prof18.rssparser.model/RawMediaContent.medium|{}medium[0]
final fun <get-medium>(): kotlin/String? // com.prof18.rssparser.model/RawMediaContent.medium.<get-medium>|<get-medium>(){}[0]
final val type // com.prof18.rssparser.model/RawMediaContent.type|{}type[0]
final fun <get-type>(): kotlin/String? // com.prof18.rssparser.model/RawMediaContent.type.<get-type>|<get-type>(){}[0]
final val url // com.prof18.rssparser.model/RawMediaContent.url|{}url[0]
final fun <get-url>(): kotlin/String? // com.prof18.rssparser.model/RawMediaContent.url.<get-url>|<get-url>(){}[0]

final fun component1(): kotlin/String? // com.prof18.rssparser.model/RawMediaContent.component1|component1(){}[0]
final fun component2(): kotlin/String? // com.prof18.rssparser.model/RawMediaContent.component2|component2(){}[0]
final fun component3(): kotlin/String? // com.prof18.rssparser.model/RawMediaContent.component3|component3(){}[0]
final fun copy(kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ...): com.prof18.rssparser.model/RawMediaContent // com.prof18.rssparser.model/RawMediaContent.copy|copy(kotlin.String?;kotlin.String?;kotlin.String?){}[0]
final fun equals(kotlin/Any?): kotlin/Boolean // com.prof18.rssparser.model/RawMediaContent.equals|equals(kotlin.Any?){}[0]
final fun hashCode(): kotlin/Int // com.prof18.rssparser.model/RawMediaContent.hashCode|hashCode(){}[0]
final fun toString(): kotlin/String // com.prof18.rssparser.model/RawMediaContent.toString|toString(){}[0]
}

final class com.prof18.rssparser.model/RssChannel { // com.prof18.rssparser.model/RssChannel|null[0]
constructor <init>(kotlin/String?, kotlin/String?, kotlin/String?, com.prof18.rssparser.model/RssImage?, kotlin/String?, kotlin/String?, kotlin.collections/List<com.prof18.rssparser.model/RssItem>, com.prof18.rssparser.model/ItunesChannelData?, com.prof18.rssparser.model/YoutubeChannelData?) // com.prof18.rssparser.model/RssChannel.<init>|<init>(kotlin.String?;kotlin.String?;kotlin.String?;com.prof18.rssparser.model.RssImage?;kotlin.String?;kotlin.String?;kotlin.collections.List<com.prof18.rssparser.model.RssItem>;com.prof18.rssparser.model.ItunesChannelData?;com.prof18.rssparser.model.YoutubeChannelData?){}[0]

Expand Down Expand Up @@ -217,7 +236,7 @@ final class com.prof18.rssparser.model/RssImage { // com.prof18.rssparser.model/
}

final class com.prof18.rssparser.model/RssItem { // com.prof18.rssparser.model/RssItem|null[0]
constructor <init>(kotlin/String?, kotlin/String?, kotlin/String?, kotlin/String?, kotlin/String?, kotlin/String?, kotlin/String?, kotlin/String?, kotlin/String?, kotlin/String?, kotlin/String?, kotlin/String?, kotlin.collections/List<kotlin/String>, com.prof18.rssparser.model/ItunesItemData?, kotlin/String?, com.prof18.rssparser.model/YoutubeItemData?, com.prof18.rssparser.model/RawEnclosure?) // com.prof18.rssparser.model/RssItem.<init>|<init>(kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.collections.List<kotlin.String>;com.prof18.rssparser.model.ItunesItemData?;kotlin.String?;com.prof18.rssparser.model.YoutubeItemData?;com.prof18.rssparser.model.RawEnclosure?){}[0]
constructor <init>(kotlin/String?, kotlin/String?, kotlin/String?, kotlin/String?, kotlin/String?, kotlin/String?, kotlin/String?, kotlin/String?, kotlin/String?, kotlin/String?, kotlin/String?, kotlin/String?, kotlin.collections/List<kotlin/String>, com.prof18.rssparser.model/ItunesItemData?, kotlin/String?, com.prof18.rssparser.model/YoutubeItemData?, com.prof18.rssparser.model/RawEnclosure?, com.prof18.rssparser.model/RawMediaContent? = ...) // com.prof18.rssparser.model/RssItem.<init>|<init>(kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.collections.List<kotlin.String>;com.prof18.rssparser.model.ItunesItemData?;kotlin.String?;com.prof18.rssparser.model.YoutubeItemData?;com.prof18.rssparser.model.RawEnclosure?;com.prof18.rssparser.model.RawMediaContent?){}[0]

final val audio // com.prof18.rssparser.model/RssItem.audio|{}audio[0]
final fun <get-audio>(): kotlin/String? // com.prof18.rssparser.model/RssItem.audio.<get-audio>|<get-audio>(){}[0]
Expand All @@ -243,6 +262,8 @@ final class com.prof18.rssparser.model/RssItem { // com.prof18.rssparser.model/R
final fun <get-pubDate>(): kotlin/String? // com.prof18.rssparser.model/RssItem.pubDate.<get-pubDate>|<get-pubDate>(){}[0]
final val rawEnclosure // com.prof18.rssparser.model/RssItem.rawEnclosure|{}rawEnclosure[0]
final fun <get-rawEnclosure>(): com.prof18.rssparser.model/RawEnclosure? // com.prof18.rssparser.model/RssItem.rawEnclosure.<get-rawEnclosure>|<get-rawEnclosure>(){}[0]
final val rawMediaContent // com.prof18.rssparser.model/RssItem.rawMediaContent|{}rawMediaContent[0]
final fun <get-rawMediaContent>(): com.prof18.rssparser.model/RawMediaContent? // com.prof18.rssparser.model/RssItem.rawMediaContent.<get-rawMediaContent>|<get-rawMediaContent>(){}[0]
final val sourceName // com.prof18.rssparser.model/RssItem.sourceName|{}sourceName[0]
final fun <get-sourceName>(): kotlin/String? // com.prof18.rssparser.model/RssItem.sourceName.<get-sourceName>|<get-sourceName>(){}[0]
final val sourceUrl // com.prof18.rssparser.model/RssItem.sourceUrl|{}sourceUrl[0]
Expand All @@ -263,6 +284,7 @@ final class com.prof18.rssparser.model/RssItem { // com.prof18.rssparser.model/R
final fun component15(): kotlin/String? // com.prof18.rssparser.model/RssItem.component15|component15(){}[0]
final fun component16(): com.prof18.rssparser.model/YoutubeItemData? // com.prof18.rssparser.model/RssItem.component16|component16(){}[0]
final fun component17(): com.prof18.rssparser.model/RawEnclosure? // com.prof18.rssparser.model/RssItem.component17|component17(){}[0]
final fun component18(): com.prof18.rssparser.model/RawMediaContent? // com.prof18.rssparser.model/RssItem.component18|component18(){}[0]
final fun component2(): kotlin/String? // com.prof18.rssparser.model/RssItem.component2|component2(){}[0]
final fun component3(): kotlin/String? // com.prof18.rssparser.model/RssItem.component3|component3(){}[0]
final fun component4(): kotlin/String? // com.prof18.rssparser.model/RssItem.component4|component4(){}[0]
Expand All @@ -271,7 +293,7 @@ final class com.prof18.rssparser.model/RssItem { // com.prof18.rssparser.model/R
final fun component7(): kotlin/String? // com.prof18.rssparser.model/RssItem.component7|component7(){}[0]
final fun component8(): kotlin/String? // com.prof18.rssparser.model/RssItem.component8|component8(){}[0]
final fun component9(): kotlin/String? // com.prof18.rssparser.model/RssItem.component9|component9(){}[0]
final fun copy(kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin.collections/List<kotlin/String> = ..., com.prof18.rssparser.model/ItunesItemData? = ..., kotlin/String? = ..., com.prof18.rssparser.model/YoutubeItemData? = ..., com.prof18.rssparser.model/RawEnclosure? = ...): com.prof18.rssparser.model/RssItem // com.prof18.rssparser.model/RssItem.copy|copy(kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.collections.List<kotlin.String>;com.prof18.rssparser.model.ItunesItemData?;kotlin.String?;com.prof18.rssparser.model.YoutubeItemData?;com.prof18.rssparser.model.RawEnclosure?){}[0]
final fun copy(kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin/String? = ..., kotlin.collections/List<kotlin/String> = ..., com.prof18.rssparser.model/ItunesItemData? = ..., kotlin/String? = ..., com.prof18.rssparser.model/YoutubeItemData? = ..., com.prof18.rssparser.model/RawEnclosure? = ..., com.prof18.rssparser.model/RawMediaContent? = ...): com.prof18.rssparser.model/RssItem // com.prof18.rssparser.model/RssItem.copy|copy(kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.String?;kotlin.collections.List<kotlin.String>;com.prof18.rssparser.model.ItunesItemData?;kotlin.String?;com.prof18.rssparser.model.YoutubeItemData?;com.prof18.rssparser.model.RawEnclosure?;com.prof18.rssparser.model.RawMediaContent?){}[0]
final fun equals(kotlin/Any?): kotlin/Boolean // com.prof18.rssparser.model/RssItem.equals|equals(kotlin.Any?){}[0]
final fun hashCode(): kotlin/Int // com.prof18.rssparser.model/RssItem.hashCode|hashCode(){}[0]
final fun toString(): kotlin/String // com.prof18.rssparser.model/RssItem.toString|toString(){}[0]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,14 @@ package com.prof18.rssparser.internal.atom
import com.prof18.rssparser.internal.AtomKeyword
import com.prof18.rssparser.internal.ChannelFactory
import com.prof18.rssparser.internal.ParserInput
import com.prof18.rssparser.internal.RssKeyword
import com.prof18.rssparser.internal.attributeValue
import com.prof18.rssparser.internal.contains
import com.prof18.rssparser.internal.nextTrimmedText
import com.prof18.rssparser.model.RssChannel
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.isActive
import org.xmlpull.v1.XmlPullParser
import org.xmlpull.v1.XmlPullParserException

internal fun CoroutineScope.extractAtomContent(
xmlPullParser: XmlPullParser,
Expand Down Expand Up @@ -203,10 +203,33 @@ internal fun CoroutineScope.extractAtomContent(
}
}

xmlPullParser.contains(AtomKeyword.YOUTUBE_MEDIA_GROUP_CONTENT) -> {
if (insideItem && insideYoutubeMediaGroup) {
val videoUrl = xmlPullParser.attributeValue(AtomKeyword.YOUTUBE_MEDIA_GROUP_CONTENT_URL)
channelFactory.youtubeItemDataBuilder.videoUrl(videoUrl)
xmlPullParser.contains(AtomKeyword.MEDIA_GROUP_CONTENT) -> {
if (insideItem) {
if (insideYoutubeMediaGroup) {
val videoUrl = xmlPullParser.attributeValue(AtomKeyword.YOUTUBE_MEDIA_GROUP_CONTENT_URL)
channelFactory.youtubeItemDataBuilder.videoUrl(videoUrl)
} else {
val url = xmlPullParser.attributeValue(RssKeyword.URL)
val type = xmlPullParser.attributeValue(RssKeyword.ITEM_TYPE)
val medium = xmlPullParser.attributeValue(RssKeyword.ITEM_MEDIUM)

channelFactory.rawMediaContentBuilder.url(url)
channelFactory.rawMediaContentBuilder.type(type)
channelFactory.rawMediaContentBuilder.medium(medium)

when {
!medium.isNullOrBlank() -> when {
medium.equals("image", ignoreCase = true) -> channelFactory.articleBuilder.image(url)
medium.equals("audio", ignoreCase = true) -> channelFactory.articleBuilder.audioIfNull(url)
medium.equals("video", ignoreCase = true) -> channelFactory.articleBuilder.videoIfNull(url)
}
!type.isNullOrBlank() -> when {
type.contains("image", ignoreCase = true) -> channelFactory.articleBuilder.image(url)
type.contains("audio", ignoreCase = true) -> channelFactory.articleBuilder.audioIfNull(url)
type.contains("video", ignoreCase = true) -> channelFactory.articleBuilder.videoIfNull(url)
}
}
}
}
}

Expand Down
Loading
Loading