-
Notifications
You must be signed in to change notification settings - Fork 53
Open
Description
Alamofire can be replaced by URLSession
struct ProxyStreamHandler: HTTPHandler {
let session: Session
private init() {
let configuration = URLSessionConfiguration.default
configuration.timeoutIntervalForRequest = 30
configuration.timeoutIntervalForResource = 30
session = Session(configuration: configuration)
}
func handleRequest(_ request: HTTPRequest) async throws -> HTTPResponse {
guard
let proxyUrl = request.query.first(where: { $0.name == "url" })?
.value,
let url = URL(string: proxyUrl)
else {
return HTTPResponse(statusCode: .badRequest)
}
var headers = Alamofire.HTTPHeaders()
request.headers.forEach { k, v in
headers.add(name: k.rawValue.lowercased(), value: v)
}
do {
session.streamRequest(url, method: .get, headers: headers)
var resBody = af return body
var resHeaders: [FlyingFox.HTTPHeader: String] = af return body
var resStatusCode: HTTPStatusCode = .badRequest = af return statusCode
return try HTTPResponse(
statusCode: resStatusCode,
headers: resHeaders,
body: resBody
)
} catch {
return HTTPResponse(statusCode: .badRequest)
}
}
}
Metadata
Metadata
Assignees
Labels
No labels