I used eumn in the Service.swift just to make the code a little cleaner and more dynamic
enum FeedType: String {
case TopFree = "top-free"
case TopGrossing = "top-grossing"
case NewGames = "new-games-we-love"
}
func createUrlForFeedType(type:FeedType) -> URL? {
let urlString = "https://rss.itunes.apple.com/api/v1/us/ios-apps/\(type.rawValue)/all/50/explicit.json"
return URL(string: urlString)
}
func fetchByType(type: FeedType , completion: @escaping (AppGroup?, Error?) -> ()) {
guard let url = createUrlForFeedType(type: type) else { return }
URLSession.shared.dataTask(with: url) { (data, resp, err) in
if let err = err {
print ("Failed to fetch", err)
completion(nil, err)
return
}
guard let data = data else { return }
do {
let appGroup = try JSONDecoder().decode(AppGroup.self, from: data)
completion(appGroup, nil)
} catch {
print ("faild to decode error", error)
completion(nil,error)
}}.resume()
}