Skip to content

Instantly share code, notes, and snippets.

@jpcarreira
Created June 26, 2019 14:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jpcarreira/dc161250f35f866aa7bb044ac8351295 to your computer and use it in GitHub Desktop.
Save jpcarreira/dc161250f35f866aa7bb044ac8351295 to your computer and use it in GitHub Desktop.
final class MockApiClient: Api {
private static let delay = 4
private static var requestCount = 0
func fetchMovies(completion: @escaping (Bool, FilmsData?) -> Void) {
switch MockApiClient.requestCount {
case 0:
DispatchQueue.main.async {
completion(false, nil)
}
default:
DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(MockApiClient.delay)) {
let filePath = "films"
MockApiClient.loadJsonDataFromFile(filePath, completion: { data in
if let json = data {
do {
let films = try JSONDecoder().decode(FilmsData.self, from: json)
completion(true, films)
}
catch _ as NSError {
fatalError("Couldn't load data from \(filePath)")
}
}
})
}
}
MockApiClient.requestCount += 1
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment