function testDefault() { $filter = new DeclFilter(); $filter->addStaticKeyFilters(array('hello' => 'digits')); $filter->addCatchAllFilter('alpha'); $data = $filter->filter(array('hello' => '123abc', 'world' => '123abc')); $this->assertEquals($data['world'], 'abc'); $this->assertEquals($data['hello'], '123'); }
function performRequest($url, $postBody = null) { $cachelib = TikiLib::lib('cache'); $tikilib = TikiLib::lib('tiki'); if ($cache = $cachelib->getSerialized($url . $postBody)) { if (time() < $cache['expires']) { return $cache['data']; } $cachelib->invalidate($url . $postBody); } $client = $tikilib->get_http_client($url); $method = null; if (empty($postBody)) { $method = 'GET'; $client->setHeaders(array('Accept' => 'application/json,text/x-yaml', 'OIntegrate-Version' => '1.0')); } else { $client->setHeaders(array('Accept' => 'application/json,text/x-yaml', 'OIntegrate-Version' => '1.0')); $client->setRawData($postBody, 'application/x-www-form-urlencoded'); } if (count($this->schemaVersion)) { $client->setHeaders('OIntegrate-SchemaVersion', implode(', ', $this->schemaVersion)); } if (count($this->acceptTemplates)) { $client->setHeaders('OIntegrate-AcceptTemplate', implode(', ', $this->acceptTemplates)); } $httpResponse = $client->request($method); $content = $httpResponse->getBody(); $contentType = $httpResponse->getHeader('Content-Type'); $cacheControl = $httpResponse->getHeader('Cache-Control'); $response = new OIntegrate_Response(); $response->contentType = $contentType; $response->cacheControl = $cacheControl; $response->data = $this->unserialize($contentType, $content); $filter = new DeclFilter(); $filter->addCatchAllFilter('xss'); $response->data = $filter->filter($response->data); $response->version = $httpResponse->getHeader('OIntegrate-Version'); $response->schemaVersion = $httpResponse->getHeader('OIntegrate-SchemaVersion'); if (!$response->schemaVersion && isset($response->data->_version)) { $response->schemaVersion = $response->data->_version; } $response->schemaDocumentation = $httpResponse->getHeader('OIntegrate-SchemaDocumentation'); global $prefs; // Respect cache duration asked for if (preg_match('/max-age=(\\d+)/', $cacheControl, $parts)) { $expiry = time() + $parts[1]; $cachelib->cacheItem($url, serialize(array('expires' => $expiry, 'data' => $response))); // Unless service specifies not to cache result, apply a default cache } elseif (false !== strpos($cacheControl, 'no-cache') && $prefs['webservice_consume_defaultcache'] > 0) { $expiry = time() + $prefs['webservice_consume_defaultcache']; $cachelib->cacheItem($url, serialize(array('expires' => $expiry, 'data' => $response))); } return $response; }