1 // 2 // ======================================================================== 3 // Copyright (c) 1995-2016 Mort Bay Consulting Pty. Ltd. 4 // ------------------------------------------------------------------------ 5 // All rights reserved. This program and the accompanying materials 6 // are made available under the terms of the Eclipse Public License v1.0 7 // and Apache License v2.0 which accompanies this distribution. 8 // 9 // The Eclipse Public License is available at 10 // http://www.eclipse.org/legal/epl-v10.html 11 // 12 // The Apache License v2.0 is available at 13 // http://www.opensource.org/licenses/apache2.0.php 14 // 15 // You may elect to redistribute this code under either of these licenses. 16 // ======================================================================== 17 // 18 19 20 package org.eclipse.jetty.http; 21 22 import static java.nio.charset.StandardCharsets.ISO_8859_1; 23 24 import java.util.Arrays; 25 26 27 /* ------------------------------------------------------------ */ 28 /** 29 */ 30 public class Http1FieldPreEncoder implements HttpFieldPreEncoder 31 { 32 /* ------------------------------------------------------------ */ 33 /** 34 * @see org.eclipse.jetty.http.HttpFieldPreEncoder#getHttpVersion() 35 */ 36 @Override 37 public HttpVersion getHttpVersion() 38 { 39 return HttpVersion.HTTP_1_0; 40 } 41 42 /* ------------------------------------------------------------ */ 43 /** 44 * @see org.eclipse.jetty.http.HttpFieldPreEncoder#getEncodedField(org.eclipse.jetty.http.HttpHeader, java.lang.String, java.lang.String) 45 */ 46 @Override 47 public byte[] getEncodedField(HttpHeader header, String headerString, String value) 48 { 49 if (header!=null) 50 { 51 int cbl=header.getBytesColonSpace().length; 52 byte[] bytes=Arrays.copyOf(header.getBytesColonSpace(), cbl+value.length()+2); 53 System.arraycopy(value.getBytes(ISO_8859_1),0,bytes,cbl,value.length()); 54 bytes[bytes.length-2]=(byte)'\r'; 55 bytes[bytes.length-1]=(byte)'\n'; 56 return bytes; 57 } 58 59 byte[] n=headerString.getBytes(ISO_8859_1); 60 byte[] v=value.getBytes(ISO_8859_1); 61 byte[] bytes=Arrays.copyOf(n,n.length+2+v.length+2); 62 bytes[n.length]=(byte)':'; 63 bytes[n.length]=(byte)' '; 64 bytes[bytes.length-2]=(byte)'\r'; 65 bytes[bytes.length-1]=(byte)'\n'; 66 67 return bytes; 68 } 69 }