From 8a7a9ac6d2a942575676b1511754af6f0ea2e042 Mon Sep 17 00:00:00 2001 From: mike_neck Date: Fri, 14 Sep 2018 22:56:20 +0900 Subject: [PATCH] Accept command line argument. --- Sources/NIOHTTP1Client/main.swift | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/Sources/NIOHTTP1Client/main.swift b/Sources/NIOHTTP1Client/main.swift index 9ae99a8c..011f542d 100644 --- a/Sources/NIOHTTP1Client/main.swift +++ b/Sources/NIOHTTP1Client/main.swift @@ -15,6 +15,7 @@ import NIO import NIOHTTP1 import NIOOpenSSL +import Foundation private final class HTTPResponseHandler: ChannelInboundHandler { @@ -55,6 +56,17 @@ private final class HTTPResponseHandler: ChannelInboundHandler { } } +let arguments = CommandLine.arguments +let arg1 = arguments.dropFirst().first + +var url: URL + +if let u = arg1 { + url = URL(string: u)! +} else { + url = URL(string: "https://::1:4433/get")! +} + let eventLoopGroup = MultiThreadedEventLoopGroup(numberOfThreads: 1) let promise: EventLoopPromise = eventLoopGroup.next().newPromise() defer { @@ -68,7 +80,7 @@ let sslContext = try! SSLContext(configuration: tlsConfiguration) let bootstrap = ClientBootstrap(group: eventLoopGroup) .channelOption(ChannelOptions.socket(SocketOptionLevel(SOL_SOCKET), SO_REUSEADDR), value: 1) .channelInitializer { channel in - let openSslHandler = try! OpenSSLClientHandler(context: sslContext, serverHostname: "httpbin.org") + let openSslHandler = try! OpenSSLClientHandler(context: sslContext, serverHostname: url.host) return channel.pipeline.add(handler: openSslHandler).then { channel.pipeline.addHTTPClientHandlers() }.then { @@ -77,9 +89,9 @@ let bootstrap = ClientBootstrap(group: eventLoopGroup) } func sendRequest(_ channel: Channel) -> EventLoopFuture { - var request = HTTPRequestHead(version: HTTPVersion(major: 1, minor: 1), method: HTTPMethod.GET, uri: "https://httpbin.org/get?query=param") + var request = HTTPRequestHead(version: HTTPVersion(major: 1, minor: 1), method: HTTPMethod.GET, uri: url.absoluteString) request.headers = HTTPHeaders([ - ("Host", "httpbin.org"), + ("Host", url.host!), ("User-Agent", "swift-nio"), ("Accept", "application/json") ]) @@ -87,6 +99,6 @@ func sendRequest(_ channel: Channel) -> EventLoopFuture { return channel.writeAndFlush(HTTPClientRequestPart.end(nil)) } -bootstrap.connect(host: "httpbin.org", port: 443) +bootstrap.connect(host: url.host!, port: url.port ?? 443) .then { sendRequest($0) } .cascadeFailure(promise: promise)