1 module hunt.http.codec.http.model.HostPortHttpField; 2 3 import hunt.http.codec.http.model.BadMessageException; 4 import hunt.http.codec.http.model.HostPort; 5 import hunt.http.HttpField; 6 import hunt.http.HttpHeader; 7 import hunt.http.HttpStatus; 8 9 import hunt.logging; 10 11 12 class HostPortHttpField : HttpField { 13 private HostPort _hostPort; 14 15 this(string authority) { 16 this(HttpHeader.HOST, HttpHeader.HOST.asString(), authority); 17 } 18 19 this(HttpHeader header, string name, string authority) { 20 version(HUNT_HTTP_DEBUG) 21 tracef("name=%s, authority=%s", name, authority); 22 super(header, name, authority); 23 try { 24 _hostPort = new HostPort(authority); 25 } catch (Exception e) { 26 throw new BadMessageException(HttpStatus.BAD_REQUEST_400, "Bad HostPort", e); 27 } 28 } 29 30 /** 31 * Get the host. 32 * 33 * @return the host 34 */ 35 string getHost() { 36 return _hostPort.getHost(); 37 } 38 39 /** 40 * Get the port. 41 * 42 * @return the port 43 */ 44 int getPort() { 45 return _hostPort.getPort(); 46 } 47 48 /** 49 * Get the port. 50 * 51 * @param defaultPort 52 * The default port to return if no port set 53 * @return the port 54 */ 55 int getPort(int defaultPort) { 56 return _hostPort.getPort(defaultPort); 57 } 58 }