All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.outbrain.ob1k.server.netty.NettyResponse Maven / Gradle / Ivy

The newest version!
package com.outbrain.ob1k.server.netty;

import static io.netty.handler.codec.http.HttpVersion.HTTP_1_1;

import java.io.IOException;

import com.outbrain.ob1k.Response;
import com.outbrain.ob1k.common.marshalling.RequestMarshaller;

import io.netty.buffer.ByteBuf;
import io.netty.handler.codec.http.DefaultFullHttpResponse;
import io.netty.handler.codec.http.FullHttpResponse;
import io.netty.handler.codec.http.HttpHeaders;
import io.netty.handler.codec.http.HttpResponseStatus;


/**
 * Time: 7/23/14 3:48 PM
 *
 * @author Eran Harel
 */
public class NettyResponse implements Response {
  private final HttpResponseStatus status;
  private final ByteBuf rawContent;
  private final HttpHeaders headers;
  private final Object message;

  public NettyResponse(final HttpResponseStatus status, final ByteBuf rawContent, final Object message, final HttpHeaders headers) {
    this.status = status;
    this.rawContent = rawContent;
    this.headers = headers;
    this.message = message;
  }

  FullHttpResponse toFullHttpResponse(final RequestMarshaller marshaller) throws IOException {
    final FullHttpResponse response;
    if (null == rawContent && null == message) {
      response = new DefaultFullHttpResponse(HTTP_1_1, status);
    } else {
      response = rawContent == null ?
              marshaller.marshallResponse(message, status) :
              new DefaultFullHttpResponse(HTTP_1_1, status, rawContent);
    }

    if (headers != null) {
      response.headers().add(headers);
    }

    return response;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy