diff --git a/Colombia/Sources/APIClient/APIClient.swift b/Colombia/Sources/APIClient/APIClient.swift index 8fa970e..0ae8506 100644 --- a/Colombia/Sources/APIClient/APIClient.swift +++ b/Colombia/Sources/APIClient/APIClient.swift @@ -19,17 +19,18 @@ struct APIClient { let url = requestable.url let request = URLRequest(url: url) let task = URLSession.shared.dataTask(with: request) { resultData, response, error in - guard let resultData = resultData else { - if let error = error { - observer.onError(error) - } + if let error = error { + observer.onError(APIError.unknown(error)) + } + guard let resultData = resultData, response != nil else { + observer.onError(APIError.response) return } do { let decodeData = try decoder.decode(T.Response.self, from: resultData) observer.onNext(decodeData) } catch let error { - observer.onError(error) + observer.onError(APIError.decode(error)) } } task.resume() @@ -37,3 +38,9 @@ struct APIClient { } } } + +enum APIError: Error { + case decode(Error) + case response + case unknown(Error) +} diff --git a/Colombia/Sources/APIClient/AnnictAPIRequest.swift b/Colombia/Sources/APIClient/AnnictAPIRequest.swift index af028c7..116c0e9 100644 --- a/Colombia/Sources/APIClient/AnnictAPIRequest.swift +++ b/Colombia/Sources/APIClient/AnnictAPIRequest.swift @@ -21,7 +21,7 @@ enum AccessToken { } enum Endpoint { - //とりあえずworksだけ実装 + // TODO: とりあえずworksだけ実装 case works func endpoint() -> String { @@ -45,9 +45,9 @@ struct AnnictAPIRequest:Requestable { switch endpoint { case .works: baseURL.queryItems = [ - //1ページあたりのデータの数、とりあえず20を指定 + // TODO: 1ページあたりのデータの数、とりあえず20を指定 URLQueryItem(name: "per_page", value: "20"), - //とりあえずid,title,recommended_urlのみを受け取る + // TODO: とりあえずid,title,recommended_urlのみを受け取る URLQueryItem(name: "fields", value: "id,title,images"), URLQueryItem(name: "access_token", value: AccessToken.annictAPI) ]