Skip to content

Commit ac6d331

Browse files
committed
Add media:description to media:group #172
1 parent 0809d0a commit ac6d331

File tree

3 files changed

+15
-1
lines changed

3 files changed

+15
-1
lines changed

Sources/FeedKit/Namespaces/Media/MediaGroup.swift

+10-1
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,14 @@ public struct MediaGroup {
3535
contents: [MediaContent]? = nil,
3636
credits: [MediaCredit]? = nil,
3737
category: MediaCategory? = nil,
38-
rating: MediaRating? = nil
38+
rating: MediaRating? = nil,
39+
description: MediaDescription? = nil
3940
) {
4041
self.contents = contents
4142
self.credits = credits
4243
self.category = category
4344
self.rating = rating
45+
self.description = description
4446
}
4547

4648
// MARK: Public
@@ -68,6 +70,10 @@ public struct MediaGroup {
6870
/// included, it assumes that no restrictions are necessary. It has one
6971
/// optional attribute.
7072
public var rating: MediaRating?
73+
74+
/// Short description describing the media object typically a sentence in
75+
/// length. It has one optional attribute.
76+
public var description: MediaDescription?
7177
}
7278

7379
// MARK: - Sendable
@@ -90,6 +96,7 @@ extension MediaGroup: Codable {
9096
case credits = "media:credit"
9197
case category = "media:category"
9298
case rating = "media:rating"
99+
case description = "media:description"
93100
}
94101

95102
public init(from decoder: any Decoder) throws {
@@ -99,6 +106,7 @@ extension MediaGroup: Codable {
99106
credits = try container.decodeIfPresent([MediaCredit].self, forKey: MediaGroup.CodingKeys.credits)
100107
category = try container.decodeIfPresent(MediaCategory.self, forKey: MediaGroup.CodingKeys.category)
101108
rating = try container.decodeIfPresent(MediaRating.self, forKey: MediaGroup.CodingKeys.rating)
109+
description = try container.decodeIfPresent(MediaDescription.self, forKey: MediaGroup.CodingKeys.description)
102110
}
103111

104112
public func encode(to encoder: any Encoder) throws {
@@ -108,5 +116,6 @@ extension MediaGroup: Codable {
108116
try container.encodeIfPresent(credits, forKey: MediaGroup.CodingKeys.credits)
109117
try container.encodeIfPresent(category, forKey: MediaGroup.CodingKeys.category)
110118
try container.encodeIfPresent(rating, forKey: MediaGroup.CodingKeys.rating)
119+
try container.encodeIfPresent(description, forKey: MediaGroup.CodingKeys.description)
111120
}
112121
}

Tests/FeedKitTests/Resources/xml/Media.xml

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
<media:credit role="owner" scheme="urn:yvs">copyright holder of the entity</media:credit>
1111
<media:category scheme="http://dmoz.org" label="Ace Ventura - Pet Detective">music/artist name/album/song</media:category>
1212
<media:rating scheme="urn:mpaa">nonadult</media:rating>
13+
<media:description>What a wonderful description he found</media:description>
1314
</media:group>
1415
<media:content url="http://www.foo.com/video.mov" fileSize="12216320" type="video/quicktime" medium="video" isDefault="true" expression="full" bitrate="128" framerate="25" samplingrate="44.1" channels="2" duration="185" height="300" width="200" lang="en">
1516
</media:content>

Tests/FeedKitTests/Tests/MediaTests + Mocks.swift

+4
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,10 @@ extension MediaTests {
118118
attributes: .init(
119119
scheme: "urn:mpaa"
120120
)
121+
),
122+
description: .init(
123+
text: "What a wonderful description he found",
124+
attributes: nil
121125
)
122126
)
123127

0 commit comments

Comments
 (0)