web/lib/Zend/Gdata/HttpAdapterStreamingProxy.php
author Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
Tue, 14 Feb 2012 14:25:12 +0100
changeset 514 cbffcbfd37bb
parent 68 ecaf28ffe26e
child 207 621fa6caec0c
permissions -rw-r--r--
Added tag V01.37 for changeset efbc44c984ea

<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: HttpAdapterStreamingProxy.php 20096 2010-01-06 02:05:09Z bkarwin $
 */

/**
 * @see Zend_Http_Client_Adapter_Proxy
 */
require_once 'Zend/Http/Client/Adapter/Proxy.php';

/**
 * Extends the proxy HTTP adapter to handle streams instead of discrete body
 * strings.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_HttpAdapterStreamingProxy extends Zend_Http_Client_Adapter_Proxy
{
    /**
     * The amount read from a stream source at a time.
     *
     * @var integer
     */
    const CHUNK_SIZE = 1024;

    /**
     * Send request to the proxy server with streaming support
     *
     * @param string        $method
     * @param Zend_Uri_Http $uri
     * @param string        $http_ver
     * @param array         $headers
     * @param string        $body
     * @return string Request as string
     */
    public function write($method, $uri, $http_ver = '1.1', $headers = array(), $body = '')
    {
        // If no proxy is set, throw an error
        if (! $this->config['proxy_host']) {
            require_once 'Zend/Http/Client/Adapter/Exception.php';
            throw new Zend_Http_Client_Adapter_Exception('No proxy host set!');
        }

        // Make sure we're properly connected
        if (! $this->socket) {
            require_once 'Zend/Http/Client/Adapter/Exception.php';
            throw new Zend_Http_Client_Adapter_Exception(
                'Trying to write but we are not connected');
        }

        $host = $this->config['proxy_host'];
        $port = $this->config['proxy_port'];

        if ($this->connected_to[0] != $host || $this->connected_to[1] != $port) {
            require_once 'Zend/Http/Client/Adapter/Exception.php';
            throw new Zend_Http_Client_Adapter_Exception(
                'Trying to write but we are connected to the wrong proxy ' .
                'server');
        }

        // Add Proxy-Authorization header
        if ($this->config['proxy_user'] && ! isset($headers['proxy-authorization'])) {
            $headers['proxy-authorization'] = Zend_Http_Client::encodeAuthHeader(
                $this->config['proxy_user'], $this->config['proxy_pass'], $this->config['proxy_auth']
            );
        }

        // if we are proxying HTTPS, preform CONNECT handshake with the proxy
        if ($uri->getScheme() == 'https' && (! $this->negotiated)) {
            $this->connectHandshake($uri->getHost(), $uri->getPort(), $http_ver, $headers);
            $this->negotiated = true;
        }

        // Save request method for later
        $this->method = $method;

        // Build request headers
        $request = "{$method} {$uri->__toString()} HTTP/{$http_ver}\r\n";

        // Add all headers to the request string
        foreach ($headers as $k => $v) {
            if (is_string($k)) $v = "$k: $v";
            $request .= "$v\r\n";
        }

        $request .= "\r\n";

        // Send the request headers
        if (! @fwrite($this->socket, $request)) {
            require_once 'Zend/Http/Client/Adapter/Exception.php';
            throw new Zend_Http_Client_Adapter_Exception(
                'Error writing request to proxy server');
        }

        //read from $body, write to socket
        while ($body->hasData()) {
            if (! @fwrite($this->socket, $body->read(self::CHUNK_SIZE))) {
                require_once 'Zend/Http/Client/Adapter/Exception.php';
                throw new Zend_Http_Client_Adapter_Exception(
                    'Error writing request to server');
            }
        }
        return 'Large upload, request is not cached.';
    }
}
PK:F% remie-bda0fb9b1ddd/server/run/.hgkeepUTOUPK:F) ^remie-bda0fb9b1ddd/server/run/log/.hgkeepUTOUPK:Fao)'% remie-bda0fb9b1ddd/server/src/CHANGESUTOUPK:FGU% Eremie-bda0fb9b1ddd/server/src/LICENSEUTOUPK:FW`& `remie-bda0fb9b1ddd/server/src/MANIFESTUTOUPK:F3aX$ remie-bda0fb9b1ddd/server/src/READMEUTOUPK:F(' 큨!remie-bda0fb9b1ddd/server/src/manage.pyUTOUPK:F/ "remie-bda0fb9b1ddd/server/src/remie/__init__.pyUTOUPK:F>?, '#remie-bda0fb9b1ddd/server/src/remie/admin.pyUTOUPK:F: #remie-bda0fb9b1ddd/server/src/remie/middleware/__init__.pyUTOUPK:F\b/q@ ;$remie-bda0fb9b1ddd/server/src/remie/middleware/cas_proxy_auth.pyUTOUPK:F: &remie-bda0fb9b1ddd/server/src/remie/migrations/__init__.pyUTOUPK:F"N69- T'remie-bda0fb9b1ddd/server/src/remie/models.pyUTOUPK:FF0K 'remie-bda0fb9b1ddd/server/src/remie/static/remie/css/jq-css/jquery.qtip.cssUTOUPK:Fdfm /remie-bda0fb9b1ddd/server/src/remie/static/remie/css/jq-css/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.pngUTOUPK:FYodn 0remie-bda0fb9b1ddd/server/src/remie/static/remie/css/jq-css/themes/base/images/ui-bg_flat_75_ffffff_40x100.pngUTOUPK:F;\wxn 2remie-bda0fb9b1ddd/server/src/remie/static/remie/css/jq-css/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.pngUTOUPK:Fgin $3remie-bda0fb9b1ddd/server/src/remie/static/remie/css/jq-css/themes/base/images/ui-bg_glass_65_ffffff_1x400.pngUTOUPK:Fۇmon 04remie-bda0fb9b1ddd/server/src/remie/static/remie/css/jq-css/themes/base/images/ui-bg_glass_75_dadada_1x400.pngUTOUPK:F-nlnn B5remie-bda0fb9b1ddd/server/src/remie/static/remie/css/jq-css/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.pngUTOUPK:Fevwn S6remie-bda0fb9b1ddd/server/src/remie/static/remie/css/jq-css/themes/base/images/ui-bg_glass_95_fef1ec_1x400.pngUTOUPK:F,XIbew n7remie-bda0fb9b1ddd/server/src/remie/static/remie/css/jq-css/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.pngUTOUPK:FTx(j ~8remie-bda0fb9b1ddd/server/src/remie/static/remie/css/jq-css/themes/base/images/ui-icons_222222_256x240.pngUTOUPK:F`+j GIremie-bda0fb9b1ddd/server/src/remie/static/remie/css/jq-css/themes/base/images/ui-icons_2e83ff_256x240.pngUTOUPK:Fޑn'j Zremie-bda0fb9b1ddd/server/src/remie/static/remie/css/jq-css/themes/base/images/ui-icons_454545_256x240.pngUTOUPK:F(j jremie-bda0fb9b1ddd/server/src/remie/static/remie/css/jq-css/themes/base/images/ui-icons_888888_256x240.pngUTOUPK:Fp.*j {remie-bda0fb9b1ddd/server/src/remie/static/remie/css/jq-css/themes/base/images/ui-icons_cd0a0a_256x240.pngUTOUPK:FYeGU oremie-bda0fb9b1ddd/server/src/remie/static/remie/css/jq-css/themes/base/jquery-ui.cssUTOUPK:F> Bremie-bda0fb9b1ddd/server/src/remie/static/remie/css/style.cssUTOUPK:FToH remie-bda0fb9b1ddd/server/src/remie/static/remie/js/LdtPlayer-release.jsUTOUPK:F׽ qD ڒremie-bda0fb9b1ddd/server/src/remie/static/remie/js/LdtPlayer.min.jsUTOUPK:F$} 8&D aremie-bda0fb9b1ddd/server/src/remie/static/remie/js/ZeroClipboard.jsUTOUPK:FoYvH remie-bda0fb9b1ddd/server/src/remie/static/remie/js/jquery-1.11.2.min.jsUTOUPK:F4zD {remie-bda0fb9b1ddd/server/src/remie/static/remie/js/jquery-ui.min.jsUTOUPK:Ffi5CTE ށremie-bda0fb9b1ddd/server/src/remie/static/remie/js/jquery.history.jsUTOUPK:Fy]</+= Kremie-bda0fb9b1ddd/server/src/remie/static/remie/js/jquery.jsUTOUPK:FG'kA vremie-bda0fb9b1ddd/server/src/remie/static/remie/js/jquery.min.jsUTOUPK:FRFJ0oO Yremie-bda0fb9b1ddd/server/src/remie/static/remie/js/jquery.nyroModal-ie6.min.jsUTOUPK:FEh}K )^remie-bda0fb9b1ddd/server/src/remie/static/remie/js/jquery.nyroModal.min.jsUTOUPK:FfZ_ >F =~remie-bda0fb9b1ddd/server/src/remie/static/remie/js/jquery.qtip.min.jsUTOUPK:F]+mG üremie-bda0fb9b1ddd/server/src/remie/static/remie/js/jquery.sparkline.jsUTOUPK:FFkK remie-bda0fb9b1ddd/server/src/remie/static/remie/js/jquery.sparkline.min.jsUTOUPK:FBBL remie-bda0fb9b1ddd/server/src/remie/static/remie/js/jquery.textchange.min.jsUTOUPK:F?1G fremie-bda0fb9b1ddd/server/src/remie/static/remie/js/jquery.tools.min.jsUTOUPK:FER;%TF Cremie-bda0fb9b1ddd/server/src/remie/static/remie/js/jquery.validate.jsUTOUPK:FI&qD< ;iremie-bda0fb9b1ddd/server/src/remie/static/remie/js/json2.jsUTOUPK:F= 8m? ~remie-bda0fb9b1ddd/server/src/remie/static/remie/js/jwplayer.jsUTOUPK:FkJ:? Aremie-bda0fb9b1ddd/server/src/remie/static/remie/js/mustache.jsUTOUPK:F8JIhHQK remie-bda0fb9b1ddd/server/src/remie/static/remie/js/popcorn-complete.min.jsUTOUPK:FC i0remie-bda0fb9b1ddd/server/src/remie/static/remie/js/popcorn.code.jsUTOUPK:FZ;9> 5remie-bda0fb9b1ddd/server/src/remie/static/remie/js/popcorn.jsUTOUPK:F342F premie-bda0fb9b1ddd/server/src/remie/static/remie/js/popcorn.youtube.jsUTOUPK:Fy~c;YvK vremie-bda0fb9b1ddd/server/src/remie/static/remie/js/processing-1.3.6.min.jsUTOUPK:FTxzbB qremie-bda0fb9b1ddd/server/src/remie/static/remie/js/raphael-min.jsUTOUPK:F)"> remie-bda0fb9b1ddd/server/src/remie/static/remie/js/raphael.jsUTOUPK:F V'@ 7 remie-bda0fb9b1ddd/server/src/remie/static/remie/js/swfobject.jsUTOUPK:F} )OC  remie-bda0fb9b1ddd/server/src/remie/static/remie/js/tracemanager.jsUTOUPK:F4E remie-bda0fb9b1ddd/server/src/remie/static/remie/js/underscore-min.jsUTOUPK:FG remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/.keepmeUTOUPK:F&Q ~ remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/AdaptivePlayer.jsUTOUPK:F9lD N remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/Annotation.cssUTOUPK:Fup M )M  remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/Annotation.jsUTOUPK:F !Y remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/AnnotationsController.cssUTOUPK:FD;g X remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/AnnotationsController.jsUTOUPK:FPRf S remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/AnnotationsList.cssUTOUPK:FZלIKR } remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/AnnotationsList.jsUTOUPK:FW`? H remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/Arrow.jsUTOUPK:FvM remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/AutoPlayer.jsUTOUPK:F3/^ N remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/Controller.cssUTOUPK:Fdž Q%M remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/Controller.jsUTOUPK:F3k0T remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/CreateAnnotation.cssUTOUPK:F1 remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/HelloWorld.jsUTOUPK:F>DOUM ]3 remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/HtmlPlayer.jsUTOUPK:F L }4 remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/JwpPlayer.jsUTOUPK:Fh4V?!uV 8 remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/KnowledgeConcierge.cssUTOUPK:F`hn 3U =; remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/KnowledgeConcierge.jsUTOUPK:F’pT 7I remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/LatestAnnotation.cssUTOUPK:Fc5kS J remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/LatestAnnotation.jsUTOUPK:FWpdLR O remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/LdtPlayer-core.cssUTOUPK:F Q)JUQ jQ remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/LdtPlayer-core.jsUTOUPK:FR`@M  remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/MediaList.cssUTOUPK:FzL remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/MediaList.jsUTOUPK:Fɕ P \ remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/Mediafragment.jsUTOUPK:Fsg }P remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/MultiSegments.jsUTOUPK:F+`/IK remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/Polemic.cssUTOUPK:Fi٨ 2J ʯ remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/Polemic.jsUTOUPK:F^~M.P remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/PopcornPlayer.jsUTOUPK:FPWq0L remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/Segments.cssUTOUPK:FbF3ZK remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/Segments.jsUTOUPK:F;I remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/Slice.cssUTOUPK:F}0H remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/Slice.jsUTOUPK:FX)TJ S remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/Slider.cssUTOUPK:F}AI remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/Slider.jsUTOUPK:F.vN remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/Slideshare.cssUTOUPK:F٣u/M ^ remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/Slideshare.jsUTOUPK:F,'-J remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/Social.cssUTOUPK:F#CZI ( remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/Social.jsUTOUPK:F F L remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/Sparkline.jsUTOUPK:FL R remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/Tagcloud.cssUTOUPK:Fh@K remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/Tagcloud.jsUTOUPK:F6K remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/Tooltip.cssUTOUPK:F>c J  remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/Tooltip.jsUTOUPK:F QH  remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/Trace.jsUTOUPK:Fi ^I remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/Tweet.cssUTOUPK:FhJKH  remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/Tweet.jsUTOUPK:F}WCSYN ) remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/img/loader.gifUTOUPK:F%5V [ remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/img/pinstripe-grey.pngUTOUPK:F*?X ^ remie-bda0fb9b1ddd/server/src/remie/static/remie/metadataplayer/img/pinstripe-purple.pngUTOUPK:Fz Yremie-bda0fb9b1ddd/server/virtualenv/res/lib/lib_create_env.pyUTOUPK:FvJI5 remie-bda0fb9b1ddd/server/virtualenv/res/lib/patch.pyUTOUPK:F@H