Exemplo n.º 1
0
 /**
  * I fetch a value from pathparams and request
  * @todo wrap pathparams and request in a composite
  * @param $pathParams
  * @param Request $Request
  * @return bool
  * @throws \Exception
  */
 public function fetch($pathParams, Request $Request)
 {
     $this->value = null;
     $this->_hasFetched = false;
     $filters = [];
     $name = $this->_data->name;
     switch ($this->_data->in) {
         case 'path':
             if (array_key_exists($name, $pathParams)) {
                 $this->_hasFetched = true;
                 $this->setValue($pathParams[$name]);
             }
             break;
         case 'query':
             $this->_hasFetched = $Request->hasQuery($name);
             $this->setValue($Request->getQuery($name, $filters, null));
             break;
         case 'header':
             // this syntax won't work... yet???
             //$value = $Request->getHeader($name, $filters, null);
             $nameWithHttpPrefix = strtoupper(str_replace('-', '_', $name));
             if ($Request->hasServer($name) || $Request->hasServer($nameWithHttpPrefix)) {
                 $this->setValue($Request->getHeader($name));
                 $this->_hasFetched = true;
             }
             break;
         case 'formData':
             switch (strtolower($Request->getMethod())) {
                 case 'post':
                     if ($Request->hasPost($name)) {
                         $this->_hasFetched = true;
                         $this->setValue($Request->getPost($name, $filters, null));
                     }
                     break;
                 case 'put':
                     if ($Request->hasPut($name)) {
                         $this->_hasFetched = true;
                         $this->setValue($Request->getPut($name, $filters, null));
                     }
                     break;
                     // parameters on delete request not supported yet
                 // parameters on delete request not supported yet
                 case 'delete':
                 default:
                     throw new \Exception('TBI: ' . $Request->getMethod());
             }
             break;
         case 'body':
             throw new \Exception('TBI');
             break;
         default:
             throw new \Exception('invalid or not implemented "in" value: ' . $this->_data->in);
     }
     return $this->_hasFetched;
 }