/*
DConnectHttpResponse.java
Copyright (c) 2016 NTT DOCOMO,INC.
Released under the MIT license
http://opensource.org/licenses/mit-license.php
*/
package org.deviceconnect.server.nanohttpd;
import org.deviceconnect.server.http.HttpResponse;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
/**
* Httpレスポンスのデータを格納するクラス.
*
* @author NTT DOCOMO, INC.
*/
class DConnectHttpResponse implements HttpResponse {
private String mContentType;
private Map<String, String> mHeaders = new HashMap<>();
private InputStream mInputStream;
private StatusCode mStatusCode = StatusCode.OK;
private int mContentLength;
DConnectHttpResponse() {
}
String getContentType() {
return mContentType;
}
Map<String, String> getHeaders() {
return mHeaders;
}
/**
* コンテンツデータへのInputStreamを返します.
* <p>
* NanoHTTPD側で、InputStream#close()が呼び出されるので、注意すること。
* </p>
* @return コンテンツデータのストリーム
*/
InputStream getInputStream() {
if (mInputStream == null) {
return new ByteArrayInputStream(new byte[0]);
}
return mInputStream;
}
int getContentLength() {
return mContentLength;
}
StatusCode getStatusCode() {
return mStatusCode;
}
@Override
public void setContentType(final String contentType) {
mContentType = contentType;
}
@Override
public void setContentLength(int contentLength) {
mContentLength = contentLength;
}
@Override
public void setBody(final byte[] body) {
mInputStream = new ByteArrayInputStream(body);
mContentLength = body.length;
}
@Override
public void setBody(final InputStream in) {
mInputStream = in;
}
@Override
public void addHeader(final String name, final String value) {
mHeaders.put(name, value);
}
@Override
public void setCode(final StatusCode code) {
mStatusCode = code;
}
}