package io.craft.atom.protocol.http; import io.craft.atom.protocol.ProtocolEncoder; import io.craft.atom.protocol.ProtocolException; import io.craft.atom.protocol.http.model.HttpRequest; import java.nio.charset.Charset; import lombok.ToString; /** * A {@link ProtocolEncoder} which encodes a {@code HttpRequest} object into bytes follow the HTTP specification, default charset is utf-8. * <br> * Thread safe. * * @author mindwind * @version 1.0, Feb 3, 2013 */ @ToString(callSuper = true) public class HttpRequestEncoder extends HttpEncoder implements ProtocolEncoder<HttpRequest> { public HttpRequestEncoder() {} public HttpRequestEncoder(Charset charset) { this.charset = charset; } @Override public byte[] encode(HttpRequest request) throws ProtocolException { if (request == null) return null; String httpString = request.toHttpString(charset); return httpString.getBytes(charset); } }