예제 #1
0
 /**
  * @param \Zend_Controller_Request_Http $request
  * @return array
  * @throws \Exception
  */
 protected function getJsonRequestFromRequestRawBody(\Zend_Controller_Request_Http $request)
 {
     $requestText = $request->getRawBody();
     $rpcData = json_decode($requestText, true);
     if (!is_array($rpcData)) {
         throw new \Exception("Invalid request at " . __METHOD__);
     }
     return $rpcData;
 }
예제 #2
0
 /**
  * @group ZF-7756
  */
 public function testCallingGetRawBodyMultipleTimesShouldReturnSameValue()
 {
     require_once 'Zend/AllTests/StreamWrapper/PhpInput.php';
     Zend_AllTests_StreamWrapper_PhpInput::mockInput('foobar');
     $request = new Zend_Controller_Request_Http();
     $first = $request->getRawBody();
     $this->assertSame($first, $request->getRawBody());
     stream_wrapper_restore('php');
 }
예제 #3
0
 /**
  * Process HTTP request object and prepare for token validation
  *
  * @param \Zend_Controller_Request_Http $httpRequest
  * @return array
  */
 public function prepareRequest($httpRequest)
 {
     $oauthParams = $this->_processRequest($httpRequest->getHeader('Authorization'), $httpRequest->getHeader(\Zend_Http_Client::CONTENT_TYPE), $httpRequest->getRawBody(), $this->getRequestUrl($httpRequest));
     return $oauthParams;
 }
예제 #4
0
 /**
  * Retrieve protocol and request parameters from request object
  *
  * @param string $authHeaderValue
  * @link http://tools.ietf.org/html/rfc5849#section-3.5
  * @return Mage_Oauth_Model_Server
  */
 protected function _fetchParams($authHeaderValue = null)
 {
     if (is_null($authHeaderValue)) {
         $authHeaderValue = $this->_request->getHeader('Authorization');
     }
     if ($authHeaderValue && 'oauth' === strtolower(substr($authHeaderValue, 0, 5))) {
         $authHeaderValue = substr($authHeaderValue, 6);
         // ignore 'OAuth ' at the beginning
         foreach (explode(',', $authHeaderValue) as $paramStr) {
             $nameAndValue = explode('=', trim($paramStr), 2);
             if (count($nameAndValue) < 2) {
                 continue;
             }
             if ($this->_isProtocolParameter($nameAndValue[0])) {
                 $this->_protocolParams[rawurldecode($nameAndValue[0])] = rawurldecode(trim($nameAndValue[1], '"'));
             }
         }
     }
     $contentTypeHeader = $this->_request->getHeader(Zend_Http_Client::CONTENT_TYPE);
     if ($contentTypeHeader && 0 === strpos($contentTypeHeader, Zend_Http_Client::ENC_URLENCODED)) {
         $protocolParamsNotSet = !$this->_protocolParams;
         parse_str($this->_request->getRawBody(), $bodyParams);
         foreach ($bodyParams as $bodyParamName => $bodyParamValue) {
             if (!$this->_isProtocolParameter($bodyParamName)) {
                 $this->_params[$bodyParamName] = $bodyParamValue;
             } elseif ($protocolParamsNotSet) {
                 $this->_protocolParams[$bodyParamName] = $bodyParamValue;
             }
         }
     }
     $protocolParamsNotSet = !$this->_protocolParams;
     $url = $this->_request->getScheme() . '://' . $this->_request->getHttpHost() . $this->_request->getRequestUri();
     if ($queryString = Zend_Uri_Http::fromString($url)->getQuery()) {
         foreach (explode('&', $queryString) as $paramToValue) {
             $paramData = explode('=', $paramToValue);
             if (2 === count($paramData) && !$this->_isProtocolParameter($paramData[0])) {
                 $this->_params[rawurldecode($paramData[0])] = rawurldecode($paramData[1]);
             }
         }
     }
     if ($protocolParamsNotSet) {
         $this->_fetchProtocolParamsFromQuery();
     }
     return $this;
 }
예제 #5
0
파일: HttpTest.php 프로젝트: lortnus/zf1
 public function testGetRawBodyReturnsFalseWithNoPost()
 {
     $this->assertFalse($this->_request->getRawBody());
 }