summaryrefslogtreecommitdiff
path: root/Sora/Data/Danbooru/DanbooruPost.swift
diff options
context:
space:
mode:
Diffstat (limited to 'Sora/Data/Danbooru/DanbooruPost.swift')
-rw-r--r--Sora/Data/Danbooru/DanbooruPost.swift34
1 files changed, 21 insertions, 13 deletions
diff --git a/Sora/Data/Danbooru/DanbooruPost.swift b/Sora/Data/Danbooru/DanbooruPost.swift
index 216816e..c619fce 100644
--- a/Sora/Data/Danbooru/DanbooruPost.swift
+++ b/Sora/Data/Danbooru/DanbooruPost.swift
@@ -6,16 +6,16 @@ struct DanbooruPost: Decodable {
let uploaderId: Int
let score: Int
let source: String
- let md5: String
+ let md5: String?
let rating: String
let imageWidth: Int
let imageHeight: Int
let tagString: String
let parentId: Int?
- let mediaAsset: DanbooruMediaAsset
- let fileURL: String
- let largeFileURL: String
- let previewFileURL: String
+ let mediaAsset: DanbooruMediaAsset?
+ let fileURL: String?
+ let largeFileURL: String?
+ let previewFileURL: String?
let isDeleted: Bool
enum CodingKeys: String, CodingKey {
@@ -38,24 +38,32 @@ struct DanbooruPost: Decodable {
}
func toBooruPost() -> BooruPost? {
- guard let fileURL = URL(string: fileURL),
- let sampleURL = URL(string: largeFileURL),
- let previewURL = URL(string: previewFileURL)
+ guard let fileURLString = fileURL,
+ let fileURL = URL(string: fileURLString)
else {
return nil
}
- let previewVariant = mediaAsset.variants.first { $0.type == "180x180" }
+ let sampleURLString = largeFileURL ?? fileURLString
+ let previewURLString = previewFileURL ?? largeFileURL ?? fileURLString
+
+ guard let sampleURL = URL(string: sampleURLString),
+ let previewURL = URL(string: previewURLString)
+ else {
+ return nil
+ }
+
+ let previewVariant = mediaAsset?.variants.first { $0.type == "180x180" }
let sampleVariant =
- mediaAsset.variants.first { $0.type == "sample" }
- ?? mediaAsset.variants.first { $0.type == "original" }
+ mediaAsset?.variants.first { $0.type == "sample" }
+ ?? mediaAsset?.variants.first { $0.type == "original" }
return BooruPost(
id: String(id),
height: imageHeight,
score: String(score),
fileURL: fileURL,
- parentID: parentId != nil ? String(parentId!) : "",
+ parentID: parentId.map(String.init) ?? "",
sampleURL: sampleURL,
sampleWidth: sampleVariant?.width ?? imageWidth,
sampleHeight: sampleVariant?.height ?? imageHeight,
@@ -64,7 +72,7 @@ struct DanbooruPost: Decodable {
tags: tagString.components(separatedBy: " ").filter { !$0.isEmpty },
width: imageWidth,
change: nil,
- md5: md5,
+ md5: md5 ?? "",
creatorID: String(uploaderId),
authorID: nil,
createdAt: createdAt,