<?php
/**
 * Copyright 2008-2017 Horde LLC (http://www.horde.org/)
 *
 * See the enclosed file LICENSE for license information (BSD). If you
 * did not receive this file, see http://www.horde.org/licenses/bsd.
 *
 * @author   James Pepin <james@bluestatedigital.com>
 * @category Horde
 * @license  http://www.horde.org/licenses/bsd BSD
 * @package  Controller
 */

/**
 *
 *
 * @author    James Pepin <james@bluestatedigital.com>
 * @category  Horde
 * @copyright 2008-2017 Horde LLC
 * @license   http://www.horde.org/licenses/bsd BSD
 * @package   Controller
 */
class Horde_Controller_ResponseWriter_WebDebug implements Horde_Controller_ResponseWriter
{
    public function writeResponse(Horde_Controller_Response $response)
    {
        $headerHtml = '<div><strong>Headers:</strong><pre>';
        $headers = $response->getHeaders();
        foreach ($headers as $key => $value) {
            $headerHtml .= htmlspecialchars("$key: $value\n");
        }
        echo $headerHtml . '</pre></div>';

        if (isset($headers['Location'])) {
            echo '<p>Redirect To: <a href="' . htmlspecialchars($headers['Location']) . '">' . htmlspecialchars($headers['Location']) . '</a></p>';
        }

        $body = $response->getBody();
        if (is_resource($body)) {
            $body = stream_get_contents($body);
        }
        if (isset($headers['Content-Encoding']) && $headers['Content-Encoding'] == 'gzip') {
            // Strip off the header and inflate it
            echo gzinflate(substr($body, 10));
        } else {
            echo $body;
        }
    }
}
