@@ -58,8 +58,9 @@ final class MyProjectApiService: ApiServiceInterface {
58
58
let url = URL ( string: self . baseUrl + " /user/sign-in-with-apple " ) !
59
59
var request = URLRequest ( url: url)
60
60
request. httpMethod = HTTP . Method. post. rawValue. uppercased ( )
61
+ request. addValue ( " application/json " , forHTTPHeaderField: " Content-Type " )
61
62
request. httpBody = try ! JSONEncoder ( ) . encode ( Body ( idToken: token) )
62
-
63
+
63
64
return URLSession . shared. dataTaskPublisher ( for: request)
64
65
. tryMap { data, response in
65
66
guard let httpResponse = response as? HTTPURLResponse else {
@@ -79,4 +80,36 @@ final class MyProjectApiService: ApiServiceInterface {
79
80
}
80
81
. eraseToAnyPublisher ( )
81
82
}
83
+
84
+ func register( deviceToken: String , bearerToken: String ) -> AnyPublisher < Void , HTTP . Error > {
85
+ struct Body : Codable {
86
+ let token : String
87
+ }
88
+
89
+ let url = URL ( string: self . baseUrl + " /user/devices " ) !
90
+ var request = URLRequest ( url: url)
91
+ request. httpMethod = HTTP . Method. post. rawValue. uppercased ( )
92
+ request. addValue ( " Bearer \( bearerToken) " , forHTTPHeaderField: " Authorization " )
93
+ request. addValue ( " application/json " , forHTTPHeaderField: " Content-Type " )
94
+ request. httpBody = try ! JSONEncoder ( ) . encode ( Body ( token: deviceToken) )
95
+
96
+ return URLSession . shared. dataTaskPublisher ( for: request)
97
+ . tryMap { data, response in
98
+ guard let httpResponse = response as? HTTPURLResponse else {
99
+ throw HTTP . Error. invalidResponse
100
+ }
101
+ guard httpResponse. statusCode == 200 else {
102
+ throw HTTP . Error. statusCode ( httpResponse. statusCode)
103
+ }
104
+ return ( )
105
+ }
106
+ . mapError { error -> HTTP . Error in
107
+ if let httpError = error as? HTTP . Error {
108
+ return httpError
109
+ }
110
+ return HTTP . Error. unknown ( error)
111
+ }
112
+ . eraseToAnyPublisher ( )
113
+ }
114
+
82
115
}
0 commit comments