示例#1
0
文件: Runner.php 项目: slince/runner
 /**
  * 从响应中提取需要catch的参数
  * @param Examination $examination
  * @param Response $response
  * @return bool
  * @throws InvalidArgumentException
  */
 protected function extractArguments(Examination $examination, Response $response)
 {
     $catch = $examination->getCatch();
     if (empty($catch)) {
         return true;
     }
     //从header里面提取
     if (isset($catch['header']) && is_array($catch['header'])) {
         foreach ($catch['header'] as $parameter => $name) {
             if (is_numeric($parameter)) {
                 $newArgumentName = $name;
                 $oldArgumentName = $name;
             } else {
                 $newArgumentName = $name;
                 $oldArgumentName = $parameter;
             }
             $this->arguments->set($newArgumentName, $response->getHeaderLine($oldArgumentName));
         }
     }
     //从body里面提取
     if (isset($catch['body']) && is_array($catch['body'])) {
         $json = json_decode($response->getBody(), true);
         if (json_last_error() != JSON_ERROR_NONE) {
             throw new InvalidArgumentException(sprintf("Invalid Json Format"));
         }
         foreach ($catch['body'] as $parameter => $name) {
             if (is_numeric($parameter)) {
                 $newArgumentName = $name;
                 $oldArgumentName = $name;
             } else {
                 $newArgumentName = $name;
                 $oldArgumentName = $parameter;
             }
             $this->arguments->set($newArgumentName, Hash::get($json, $oldArgumentName));
         }
     }
     return true;
 }