@@ -32,23 +32,48 @@ public class TMDBConfigurationManager: TMDBConfigurationManagerProtocol {
32
32
}
33
33
}
34
34
35
- extension ApiTarget {
35
+ protocol TmdbApiTarget : ApiTarget { }
36
+
37
+ extension TmdbApiTarget {
36
38
var headers : [ String : String ] ? {
37
39
[
38
40
" Content-type " : " application/json " ,
39
41
" Authorization " : " Bearer \( TMDBConfigurationManager . shared. accessToken) "
40
42
]
41
43
}
44
+
45
+ func body( ) throws -> Data ? {
46
+ return nil
47
+ }
48
+
49
+ func urlRequest( baseURL: String ) throws -> URLRequest {
50
+ try TMDBConfigurationManager . shared. validateCredentials ( )
51
+ guard var urlComponents = URLComponents ( string: baseURL) else {
52
+ throw ApiError . invalidUrl
53
+ }
54
+ urlComponents. path = path
55
+ if let queryItems = queryParameters ( ) {
56
+ urlComponents. queryItems = queryItems. map { URLQueryItem ( name: $0. key, value: " \( $0. value) " ) }
57
+ }
58
+ guard let url = urlComponents. url else {
59
+ throw ApiError . invalidUrl
60
+ }
61
+ var request = URLRequest ( url: url)
62
+ request. httpMethod = method
63
+ request. allHTTPHeaderFields = headers
64
+ request. httpBody = try body ( )
65
+ return request
66
+ }
42
67
}
43
68
44
- enum MoviesTarget : ApiTarget {
69
+ enum MoviesTarget : TmdbApiTarget {
45
70
case todayTrending( request: MoviesRequestable )
46
71
case weekTrending( request: MoviesRequestable )
47
72
case nowPlaying( request: MoviesRequestable )
48
73
case upComing( request: MoviesRequestable )
49
74
case topRated( request: MoviesRequestable )
50
75
case popular( request: MoviesRequestable )
51
- case recommendations( request: MoviesRecommendationRequestDTO )
76
+ case recommendations( request: MoviesRecommendationRequest )
52
77
case detail( request: MovieDetailRequestDTO )
53
78
case reviews( request: MovieReviewsRequestDTO )
54
79
@@ -97,30 +122,6 @@ enum MoviesTarget: ApiTarget {
97
122
return nil
98
123
}
99
124
}
100
-
101
- func body( ) throws -> Data ? {
102
- return nil
103
- }
104
-
105
- func urlRequest( baseURL: String ) throws -> URLRequest {
106
- try TMDBConfigurationManager . shared. validateCredentials ( )
107
-
108
- guard var urlComponents = URLComponents ( string: baseURL) else {
109
- throw ApiError . invalidUrl
110
- }
111
- urlComponents. path = path
112
- if let queryItems = queryParameters ( ) {
113
- urlComponents. queryItems = queryItems. map { URLQueryItem ( name: $0. key, value: " \( $0. value) " ) }
114
- }
115
- guard let url = urlComponents. url else {
116
- throw ApiError . invalidUrl
117
- }
118
- var request = URLRequest ( url: url)
119
- request. httpMethod = method
120
- request. allHTTPHeaderFields = headers
121
- request. httpBody = try body ( )
122
- return request
123
- }
124
125
}
125
126
126
127
enum TmdbApiError : Error {
0 commit comments