/**
  * @dataProvider parseDataProvider
  */
 public function testParse($header, $categories)
 {
     $cats = CategoryHeader::parse($header);
     foreach ($categories as $scheme => $category) {
         $this->assertEquals($category, $cats->get($scheme));
     }
 }
Exemplo n.º 2
0
 public function beforeAction($action)
 {
     foreach (Yii::app()->log->routes as $route) {
         if ($route instanceof CWebLogRoute) {
             $route->enabled = false;
         }
     }
     // Output format can be selected using a special GET param or by Accept: header
     if (isset($_GET['_format'])) {
         if (preg_match('/json/', $_GET['_format'])) {
             $this->output_format = 'json';
         } elseif (preg_match('/xml/', $_GET['_format'])) {
             $this->output_format = 'xml';
         }
     } else {
         foreach (Yii::app()->request->preferredAcceptTypes as $type) {
             if ($type['baseType'] == 'xml' || $type['subType'] == 'xml' || $type['subType'] == '*') {
                 $this->output_format = 'xml';
                 break;
             }
             if ($type['baseType'] == 'json' || $type['subType'] == 'json') {
                 $this->output_format = 'json';
                 break;
             }
         }
     }
     if (!isset($this->output_format)) {
         $this->sendResponse(406);
     }
     // Attach error handlers as soon as we know what format to send the error in
     Yii::app()->attachEventHandler("onError", array($this, "handleError"));
     Yii::app()->attachEventHandler("onException", array($this, "handleException"));
     if (!isset($_SERVER['PHP_AUTH_USER'])) {
         $this->sendError("Authentication required", 401, FhirValueSet::ISSUETYPE_SECURITY_LOGIN);
     }
     $identity = new UserIdentity($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']);
     if (!$identity->authenticate()) {
         $this->sendError("Authentication failed", 401, FhirValueSet::ISSUETYPE_SECURITY_UNKNOWN);
     }
     Yii::app()->user->login($identity);
     if (!Yii::app()->user->checkAccess('OprnApi')) {
         $this->sendError("Not authorised", 403, FhirValueSet::ISSUETYPE_SECURITY_FORBIDDEN);
     }
     // Tags, aka HTTP categories: http://hl7.org/implement/standards/fhir/http.html#tags
     $tags = CategoryHeader::load();
     $this->general_tags = $tags->get('http://hl7.org/fhir/tag');
     $this->profile_tags = $tags->get('http://hl7.org/fhir/tag/profile');
     $this->security_tags = $tags->get('http://hl7.org/fhir/tag/security');
     return true;
 }