// // AuthRequestBuilder.swift // pusher_client // // Created by Romario Chinloy on 10/27/20. // import PusherSwiftWithEncryption class AuthRequestBuilder: AuthRequestBuilderProtocol { let pusherAuth: PusherAuth init(pusherAuth: PusherAuth) { self.pusherAuth = pusherAuth } func requestFor(socketID: String, channelName: String) -> URLRequest? { var request = URLRequest(url: URL(string: pusherAuth.endpoint)!) request.httpMethod = "POST" do { let authRequest = AuthRequest(socket_id: socketID, channel_name: channelName) if(pusherAuth.headers.values.contains("application/json")) { request.httpBody = try JSONEncoder().encode(authRequest) } else { request.httpBody = authRequest.valueUrlEncoded!.data(using: String.Encoding.utf8) } pusherAuth.headers.forEach { (key: String, value: String) in request.addValue(value, forHTTPHeaderField: key) } return request } catch { return nil } } }