[ad_1]
I’ve an token writer. It returns a token worth as string. I need to make a request utilizing this token in request writer. I do not know do it. Possibly these codes will assist.
Token Transactions:
// Token Writer
func getAccessToken() -> AnyPublisher<String, Error> {
let url = "it does not matter"
var urlRequest = URLRequest(url: url)
// some url request setups
// ...
return URLSession.shared
.dataTaskPublisher(for: urlRequest)
.map(.knowledge)
.decode(sort: AccessToken.self, decoder: JSONDecoder())
.map({ $0.token ?? "" })
.obtain(on: DispatchQueue.major)
.eraseToAnyPublisher()
}
Generic Request Transactions:
// Request Writer (The T is decodable generic sort.)
func request<T: Decodable>(ofType: T.Kind, apiURL: APIURL, technique: HTTPMethods) -> AnyPublisher<T, Error> {
// This flatMap is just not invoked. :/
AuthManager.shared.getAccessToken()
.flatMap({ accessToken -> AnyPublisher<T, Error> in
guard let url = URL(string: apiURL.url) else {
return Fail(error: NSError(area: "Lacking API URL", code: -10001, userInfo: nil)).eraseToAnyPublisher()
}
var urlRequest = URLRequest(url: url)
urlRequest.httpMethod = technique.rawValue
urlRequest.setValue("Authorization", forHTTPHeaderField: "Bearer " + accessToken)
return URLSession.shared
.dataTaskPublisher(for: urlRequest)
.map(.knowledge)
.decode(sort: T.self, decoder: JSONDecoder())
.eraseToAnyPublisher()
}).eraseToAnyPublisher()
}
Instance Request Transactions:
// Instance Request
personal var cancellables = Set<AnyCancellable>()
func getExampleRequest(id: String) {
let url = "it does not matter"
APIManager.shared.request(ofType: ExampleModel.self, apiURL: url, technique: .get).sink { completion in
swap completion {
case .completed:
break
case .failure(let error):
print(error)
}
} receiveValue: { exampleModelData in
// print(exampleModelData)
}.retailer(in: &cancellables)
}
Thanks upfront.
[ad_2]
