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

net.craftforge.essential.context.basic.BasicResponse Maven / Gradle / Ivy

The newest version!
/*
 * This file is part of essential.
 *
 *     essential is free software: you can redistribute it and/or modify
 *     it under the terms of the GNU General Public License as published by
 *     the Free Software Foundation, either version 3 of the License, or
 *     (at your option) any later version.
 *
 *     essential is distributed in the hope that it will be useful,
 *     but WITHOUT ANY WARRANTY; without even the implied warranty of
 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *     GNU General Public License for more details.
 *
 *     You should have received a copy of the GNU General Public License
 *     along with essential.  If not, see .
 */

package net.craftforge.essential.context.basic;

import net.craftforge.essential.context.Response;
import net.craftforge.essential.core.constants.Charsets;
import net.craftforge.essential.core.constants.HttpStatusCode;

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.Map;

/**
 * A basic implementation of a response.
 *
 * @author Christian Bick
 * @since 20.06.11
 */
public class BasicResponse implements Response {

    private HttpStatusCode httpStatusCode;
    private Map headers;
    private OutputStream outputStream;

    public BasicResponse(OutputStream outputStream) {
        this.outputStream = outputStream;
    }

    /**
     * {@inheritDoc}
     */
    public void sendHeaders(HttpStatusCode httpStatusCode, Map headers) {
        this.httpStatusCode = httpStatusCode;
        this.headers = headers;
        BufferedWriter writer;
        try{
            writer = new BufferedWriter(new OutputStreamWriter(outputStream, Charsets.UTF8));
            writer.write("HTTP/1.1 " + httpStatusCode.getCode() + " " + httpStatusCode.getName());
            writer.newLine();
            for (String headerName : headers.keySet()) {
                for (String headerValue : headers.get(headerName)) {
                    writer.write(headerName + ": " + headerValue);
                    writer.newLine();
                }
            }
            writer.flush();
        } catch (IOException e) {
            throw new RuntimeException("Unable to send response headers", e);
        }
    }

    /**
     * {@inheritDoc}
     */
    public HttpStatusCode getStatusCode() {
        return httpStatusCode;
    }

    /**
     * {@inheritDoc}
     */
    public Map getHeaders() {
        return headers;
    }

    /**
     * {@inheritDoc}
     */
    public OutputStream getBodyOutputStream() {
        return outputStream;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy