/** * Get clear uri. * * @static * * @param \Zend\Uri\Uri $uri * * @return boolean|\Zend\Uri\Uri False if uri is not auhorized */ public static function clearUri(Uri $uri) { if ($uri->getScheme() !== 'http') { return false; } $uri->setHost('www.vimeo.com'); // clear $uri->setPort(0); $uri->setUserInfo(''); $uri->setQuery(''); $uri->setFragment(''); return $uri; }
/** * Get clear uri. * * @static * * @param \Zend\Uri\Uri $uri * * @return boolean|\Zend\Uri\Uri False if uri is not auhorized */ public static function clearUri(Uri $uri) { if ($uri->getScheme() !== 'http') { return false; } $query = $uri->getQueryAsArray(); if (empty($query['v'])) { return false; } $uri->setQuery(array('v' => $query['v'])); $uri->setHost('www.youtube.com'); $uri->setPath('/watch'); // clear $uri->setPort(0); $uri->setUserInfo(''); $uri->setFragment(''); return $uri; }
/** * Execute geocoding * * @param Request $request * @return Response */ public function geocode(Request $request) { if (null === $request) { throw new Exception\InvalidArgumentException('request'); } $uri = new Uri(); $uri->setHost(self::GOOGLE_MAPS_APIS_URL); $uri->setPath(self::GOOGLE_GEOCODING_API_PATH); $urlParameters = $request->getUrlParameters(); if (null === $urlParameters) { throw new Exception\RuntimeException('Invalid URL parameters'); } $uri->setQuery($urlParameters); $client = $this->getHttpClient(); $client->setAdapter('Zend\\Http\\Client\\Adapter\\Curl'); $client->resetParameters(); $uri->setScheme("https"); $client->setUri($uri->toString()); $stream = $client->send(); $body = Json::decode($stream->getBody(), Json::TYPE_ARRAY); $hydrator = new ArraySerializable(); $response = new Response(); $response->setRawBody($body); if (!isset($body['status'])) { throw new Exception\RuntimeException('Invalid status'); } $response->setStatus($body['status']); if (!isset($body['results'])) { throw new Exception\RuntimeException('Invalid results'); } $resultSet = new ResultSet(); foreach ($body['results'] as $data) { $result = new Result(); $hydrator->hydrate($data, $result); $resultSet->addElement($result); } $response->setResults($resultSet); return $response; }
/** * Data provider for invalid relative URI objects * * @return array */ public function invalidRelativeUriObjectProvider() { // Empty URI is not valid $obj1 = new Uri(); // Path cannot begin with '//' $obj2 = new Uri(); $obj2->setPath('//path'); // A object with port $obj3 = new Uri(); $obj3->setPort(123); // A object with userInfo $obj4 = new Uri(); $obj4->setUserInfo('shahar:password'); // A object with scheme $obj5 = new Uri(); $obj5->setScheme('https'); // A object with host $obj6 = new Uri(); $obj6->setHost('example.com'); return array(array($obj1), array($obj2), array($obj3), array($obj4), array($obj5), array($obj6)); }
/** * Test that we can set the host part to 'null' * */ public function testSetNullHost() { $uri = new Uri('http://example.com/bar'); $uri->setHost(null); $this->assertNull($uri->getHost()); }
/** * Get clear uri. * * @static * * @param \Zend\Uri\Uri $uri * * @return boolean|\Zend\Uri\Uri False if uri is not auhorized */ public static function clearUri(Uri $uri) { if ($uri->getScheme() !== 'http') { return false; } $paths = explode('/', $uri->getPath()); $pathsCount = count($paths); if ($pathsCount < 2) { return false; } $type = $paths[$pathsCount - 2]; if (!in_array($type, self::$typesAuthorized)) { return false; } $uri->setHost('www.deezer.com'); // clear $uri->setPort(0); $uri->setUserInfo(''); $uri->setQuery(''); $uri->setFragment(''); return $uri; }
/** * Set the URI host * * @param string $host * @throws Exception\InvalidUriPartException * @return \Zend\Uri\Uri */ public function setHost($host) { $this->uri->setHost($host); return $this; }