Changeset 409

Show
Ignore:
Timestamp:
03/21/07 17:47:59 (1 year ago)
Author:
mikey
Message:

added possibility to retrieve raw post data (closes ticket #23)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/src/main/php/net/stubbles/ipo/request/stubAbstractRequest.php

    r367 r409  
    209209     
    210210    /** 
    211      * checks whether a request value is valid or nor 
     211     * checks whether raw data is valid or not 
     212     * 
     213     * @param   stubValidator  $validator  validator to use 
     214     * @return  bool 
     215     */ 
     216    public function validateRawData(stubValidator $validator) 
     217    { 
     218        return $validator->validate($this->rawData); 
     219    } 
     220     
     221    /** 
     222     * returns the validated raw data 
     223     *  
     224     * If the validator says the value is not valid the return value is null. 
     225     * 
     226     * @param   stubValidator  $validator  validator to use 
     227     * @return  string 
     228     */ 
     229    public function getValidatedRawData(stubValidator $validator) 
     230    { 
     231        $rawData = $this->getRawData(); 
     232        if ($validator->validate($rawData) == true) { 
     233            return $this->rawData; 
     234        } 
     235         
     236        return null; 
     237    } 
     238     
     239    /** 
     240     * returns the raw data filtered 
     241     * 
     242     * @param   stubFilter  $filter 
     243     * @return  mixed 
     244     * @throws  stubFilterException 
     245     */ 
     246    public function getFilteredRawData(stubFilter $filter) 
     247    { 
     248        $rawData = $this->getRawData(); 
     249        if (null == $rawData) { 
     250            if ($filter->hasDefaultValue() == true) { 
     251                return $filter->getDefaultValue(); 
     252            } 
     253             
     254            return null; 
     255        } 
     256             
     257        return $filter->execute($rawData); 
     258    } 
     259     
     260    /** 
     261     * returns the raw data 
     262     * 
     263     * @return  string 
     264     */ 
     265    protected abstract function getRawData(); 
     266     
     267    /** 
     268     * checks whether a request value is valid or not 
    212269     * 
    213270     * @param   stubValidator  $validator  validator to use 
  • trunk/src/main/php/net/stubbles/ipo/request/stubRequest.php

    r367 r409  
    108108     
    109109    /** 
     110     * checks whether raw data is valid or not 
     111     * 
     112     * @param   stubValidator  $validator  validator to use 
     113     * @return  bool 
     114     */ 
     115    public function validateRawData(stubValidator $validator); 
     116     
     117    /** 
     118     * returns the validated raw data 
     119     *  
     120     * If the validator says the raw data is not valid the return value is null. 
     121     * 
     122     * @param   stubValidator  $validator  validator to use 
     123     * @return  string 
     124     */ 
     125    public function getValidatedRawData(stubValidator $validator); 
     126     
     127    /** 
     128     * returns the raw data filtered 
     129     * 
     130     * @param   stubFilter  $filter 
     131     * @return  mixed 
     132     * @throws  stubFilterException 
     133     */ 
     134    public function getFilteredRawData(stubFilter $filter); 
     135     
     136    /** 
    110137     * checks whether a request value is valid or nor 
    111138     * 
  • trunk/src/main/php/net/stubbles/ipo/request/stubRequestPrefixDecorator.php

    r367 r409  
    185185     
    186186    /** 
     187     * checks whether raw data is valid or not 
     188     * 
     189     * @param   stubValidator  $validator  validator to use 
     190     * @return  bool 
     191     */ 
     192    public function validateRawData(stubValidator $validator) 
     193    { 
     194        return $this->request->validateRawData($validator); 
     195    } 
     196     
     197    /** 
     198     * returns the validated raw data 
     199     *  
     200     * If the validator says the value is not valid the return value is null. 
     201     * 
     202     * @param   stubValidator  $validator  validator to use 
     203     * @return  string 
     204     */ 
     205    public function getValidatedRawData(stubValidator $validator) 
     206    { 
     207        return $this->request->getValidatedRawData($validator); 
     208    } 
     209     
     210    /** 
     211     * returns the raw data filtered 
     212     * 
     213     * @param   stubFilter  $filter 
     214     * @return  mixed 
     215     * @throws  stubFilterException 
     216     */ 
     217    public function getFilteredRawData(stubFilter $filter) 
     218    { 
     219        return $this->request->getFilteredRawData($filter); 
     220    } 
     221     
     222    /** 
    187223     * checks whether a request value is valid or nor 
    188224     * 
  • trunk/src/main/php/net/stubbles/ipo/request/stubWebRequest.php

    r405 r409  
    6666        return strtolower($_SERVER['REQUEST_METHOD']); 
    6767    } 
     68     
     69    /** 
     70     * returns the raw data 
     71     * 
     72     * @return  string 
     73     */ 
     74    protected function getRawData() 
     75    { 
     76        return file_get_contents('php://input'); 
     77    } 
    6878} 
    6979?> 
  • trunk/src/test/php/net/stubbles/ipo/request/stubAbstractRequestTestCase.php

    r367 r409  
    2222class stubTestRequest extends stubAbstractRequest 
    2323{ 
     24    protected $rawData = 'This is the raw request data.'; 
     25     
    2426    protected function doConstuct() 
    2527    { 
     
    3234    { 
    3335        return 'test'; 
     36    } 
     37     
     38    public function setRawData($rawData) 
     39    { 
     40        $this->rawData = $rawData; 
     41    } 
     42     
     43    protected function getRawData() 
     44    { 
     45        return $this->rawData; 
    3446    } 
    3547     
     
    326338        $this->assertEqual($this->request->getValueKeys(stubRequest::SOURCE_COOKIE), array('baz')); 
    327339    } 
     340     
     341    /** 
     342     * assure that raw data is handles correct 
     343     */ 
     344    public function testValidateRawData() 
     345    { 
     346        $mockValidator = new MockStubValidator(); 
     347        $mockValidator->setReturnValueAt(0, 'validate', true); 
     348        $mockValidator->setReturnValueAt(1, 'validate', false); 
     349        $this->assertTrue($this->request->validateRawData($mockValidator)); 
     350        $this->assertFalse($this->request->validateRawData($mockValidator)); 
     351    } 
     352     
     353    /** 
     354     * assure that raw data is handles correct 
     355     */ 
     356    public function testGetValidatedRawData() 
     357    { 
     358        $mockValidator = new MockStubValidator(); 
     359        $mockValidator->setReturnValueAt(0, 'validate', true); 
     360        $mockValidator->setReturnValueAt(1, 'validate', false); 
     361        $this->assertEqual($this->request->getValidatedRawData($mockValidator), 'This is the raw request data.'); 
     362        $this->assertNull($this->request->getValidatedRawData($mockValidator)); 
     363    } 
     364     
     365    /** 
     366     * assure that raw data is handles correct 
     367     */ 
     368    public function testGetFilteredRawData() 
     369    { 
     370        $mockFilter = new MockStubFilter(); 
     371        $mockFilter->setReturnValueAt(0, 'hasDefaultValue', true); 
     372        $mockFilter->setReturnValueAt(1, 'hasDefaultValue', false); 
     373        $mockFilter->setReturnValue('getDefaultValue', 'foo'); 
     374        $mockFilter->setReturnValue('execute', 'bam'); 
     375        $this->request->setRawData(null); 
     376        $this->assertEqual($this->request->getFilteredRawData($mockFilter), 'foo'); 
     377        $this->assertNull($this->request->getFilteredRawData($mockFilter)); 
     378         
     379        $this->request->setRawData('bar'); 
     380        $this->assertEqual($this->request->getFilteredRawData($mockFilter), 'bam'); 
     381         
     382        $this->expectException('stubFilterException'); 
     383        $this->request->getFilteredRawData(new stubTestExceptionFilter()); 
     384    } 
    328385} 
    329386?> 
  • trunk/src/test/php/net/stubbles/ipo/request/stubRequestPrefixDecoratorTestCase.php

    r367 r409  
    201201     
    202202    /** 
     203     * assure that raw data is handles correct 
     204     */ 
     205    public function testValidateRawData() 
     206    { 
     207        $mockValidator = new MockStubValidator(); 
     208        $this->mockRequest->expectOnce('validateRawData', array($mockValidator)); 
     209        $this->mockRequest->setReturnValue('validateRawData', false); 
     210        $this->assertFalse($this->request->validateRawData($mockValidator)); 
     211    } 
     212     
     213    /** 
     214     * assure that raw data is handles correct 
     215     */ 
     216    public function testGetValidatedRawData() 
     217    { 
     218        $mockValidator = new MockStubValidator(); 
     219        $this->mockRequest->expectOnce('getValidatedRawData', array($mockValidator)); 
     220        $this->mockRequest->setReturnValue('getValidatedRawData', 'foo'); 
     221        $this->assertEqual($this->request->getValidatedRawData($mockValidator), 'foo'); 
     222    } 
     223     
     224    /** 
     225     * assure that raw data is handles correct 
     226     */ 
     227    public function testGetFilteredRawData() 
     228    { 
     229        $mockFilter = new MockStubFilter(); 
     230        $this->mockRequest->expectOnce('getFilteredRawData', array($mockFilter)); 
     231        $this->mockRequest->setReturnValue('getFilteredRawData', 'foo'); 
     232        $this->assertEqual($this->request->getFilteredRawData($mockFilter), 'foo'); 
     233    } 
     234     
     235    /** 
    203236     * assure that value keys are delivered correct 
    204237     */