Commit 040ee70b by Dmitry Stepanets

Updated GraphQL parsing logic

parent 7fd8fd00
...@@ -72,8 +72,8 @@ public class InMobiGraphQLSource: ShortSource { ...@@ -72,8 +72,8 @@ public class InMobiGraphQLSource: ShortSource {
decoder.keyDecodingStrategy = .useDefaultKeys decoder.keyDecodingStrategy = .useDefaultKeys
do { do {
let graphQLResponse = try decoder.decode(GrapQLResponse.self, from: data) let graphQLResponse = try decoder.decode(GrapQLResponse.self, from: data)
let items = graphQLResponse.weatherItems.map{ self.toAppModel(item: $0) } let shorts = self.toAppModel(items: graphQLResponse.weatherItems)
completion(items, nil) completion(shorts, nil)
} }
catch { catch {
self.log.error("Parsing error: \(error)") self.log.error("Parsing error: \(error)")
...@@ -83,44 +83,54 @@ public class InMobiGraphQLSource: ShortSource { ...@@ -83,44 +83,54 @@ public class InMobiGraphQLSource: ShortSource {
dataTask.resume() dataTask.resume()
} }
private func toAppModel(item: WeatherCardItem) -> ShortsItem { private func toAppModel(items: [WeatherCardItem]) -> [ShortsItem] {
let lowImageSize = CGSize(width: 440, height: 783) let lowImageSize = CGSize(width: 440, height: 783)
let highImageSize = CGSize(width: 783, height: 1701) let highImageSize = CGSize(width: 783, height: 1701)
var overlayImages = [ShortsItemImage]() var shortItems = [ShortsItem]()
var baseImages = [ShortsItemImage]() for cardItem in items {
for mediaObjectCollectionItem in item.mediaArrayObjectCollection.items { guard cardItem.mediaArrayObjectCollection.items.count == 1 else {
let image = mediaObjectCollectionItem.image continue
for overlayImage in image.overlayImage {
overlayImages.append(ShortsItemImage(width: Int(lowImageSize.width),
height: Int(lowImageSize.height),
url: overlayImage.lowresolution))
overlayImages.append(ShortsItemImage(width: Int(highImageSize.width),
height: Int(highImageSize.height),
url: overlayImage.highresolution))
} }
for baseImage in image.baseImage { for mediaObjectCollectionItem in cardItem.mediaArrayObjectCollection.items {
baseImages.append(ShortsItemImage(width: Int(lowImageSize.width), let image = mediaObjectCollectionItem.image
height: Int(lowImageSize.height), var overlayImages = [ShortsItemImage]()
url: baseImage.lowresolution)) var baseImages = [ShortsItemImage]()
baseImages.append(ShortsItemImage(width: Int(highImageSize.width),
height: Int(highImageSize.height), for overlayImage in image.overlayImage {
url: baseImage.highresolution)) overlayImages.append(ShortsItemImage(width: Int(lowImageSize.width),
height: Int(lowImageSize.height),
url: overlayImage.lowresolution))
overlayImages.append(ShortsItemImage(width: Int(highImageSize.width),
height: Int(highImageSize.height),
url: overlayImage.highresolution))
}
for baseImage in image.baseImage {
baseImages.append(ShortsItemImage(width: Int(lowImageSize.width),
height: Int(lowImageSize.height),
url: baseImage.lowresolution))
baseImages.append(ShortsItemImage(width: Int(highImageSize.width),
height: Int(highImageSize.height),
url: baseImage.highresolution))
}
let shortItem = ShortsItem(id: cardItem.id,
images: baseImages,
overlayImages: overlayImages,
shareURL: cardItem.sourceUrl,
title: mediaObjectCollectionItem.title,
summaryText: mediaObjectCollectionItem.summary,
sourceName: "",
shortURL: cardItem.sourceUrl,
ctaText: cardItem.buttonText,
ctaURL: cardItem.sourceUrl)
shortItems.append(shortItem)
} }
} }
return ShortsItem(id: item.id, return shortItems
images: baseImages,
overlayImages: overlayImages,
shareURL: item.sourceUrl,
title: item.mediaArrayObjectCollection.items.first?.title ?? "",
summaryText: item.mediaArrayObjectCollection.items.first?.summary ?? "",
sourceName: "",
shortURL: item.sourceUrl,
ctaText: item.buttonText,
ctaURL: item.sourceUrl)
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment