Пример #1
0
 /**
  * Filters the YouTube video id from a URL and returns the id. Return an
  * empty string on an invalid URL.
  * 
  * @param string $value
  * @return string
  */
 public function filter($value)
 {
     try {
         $uri = Zend_Uri_Http::factory($value);
         if ($uri->valid()) {
             $query = $uri->getQueryAsArray();
             if (isset($query['v'])) {
                 return $query['v'];
             }
         }
     } catch (Zend_Uri_Exception $e) {
     }
     return '';
 }
 public function testSearchResult()
 {
     $object = new Zend_Service_Technorati_SearchResult($this->domElements->item(0));
     // check properties
     $this->assertTrue(is_string($object->getTitle()));
     $this->assertContains('El SDK de Android', $object->getTitle());
     $this->assertTrue(is_string($object->getExcerpt()));
     $this->assertContains('[ Android]', $object->getExcerpt());
     $this->assertTrue($object->getPermalink() instanceof Zend_Uri_Http);
     $this->assertEquals(Zend_Uri_Http::factory('http://blogs.eurielec.etsit.upm.es/miotroblog/?p=271'), $object->getPermalink());
     $this->assertTrue($object->getCreated() instanceof Zend_Date);
     $this->assertEquals(new Zend_Date('2007-11-14 22:18:04 GMT'), $object->getCreated());
     // check weblog
     $this->assertTrue($object->getWeblog() instanceof Zend_Service_Technorati_Weblog);
     $this->assertContains('Mi otro blog', $object->getWeblog()->getName());
 }
Пример #3
0
 /**
  * Checks if a username is a valid Twitter account by sending an HTTP
  * request to the profile page.
  * @param string $value
  * @return <type>
  */
 public function isValid($value)
 {
     $this->_setValue((string) $value);
     try {
         $uri = Zend_Uri_Http::factory(self::BASEURI . $value);
     } catch (Zend_Uri_Exception $e) {
         $this->_error(self::INVALID_ACCOUNT);
         return false;
     }
     $httpClient = new Zend_Http_Client($uri);
     $response = $httpClient->request();
     if ($response->getStatus() != '200') {
         $this->_error(self::INVALID_ACCOUNT);
         return false;
     }
     return true;
 }
Пример #4
0
 /**
  * Does a request to the YouTube API.
  * @param string|int $id
  * @return boolean
  */
 protected function _checkYoutubeApi($id)
 {
     try {
         $uri = Zend_Uri_Http::factory(self::API_URL . $id);
         $httpClient = new Zend_Http_Client($uri);
         $response = $httpClient->request();
     } catch (Zend_Uri_Exception $e) {
         // the id is malformed
         return false;
     } catch (Zend_Http_Client_Adapter_Exception $e) {
         /**
          * Catch the timeout
          *
          * We do not know if the video is valid and are unable to check
          * so we assume it is OK.
          */
         return true;
     }
     return $response->getStatus() == '200';
 }
Пример #5
0
 /**
  * Generate a new Cookie object from a cookie string
  * (for example the value of the Set-Cookie HTTP header)
  *
  * @param string $cookieStr
  * @param Zend_Uri_Http|string $refUri Reference URI for default values (domain, path)
  * @param boolean $encodeValue Whether or not the cookie's value should be
  *                             passed through urlencode/urldecode
  * @return Zend_Http_Cookie A new Zend_Http_Cookie object or false on failure.
  */
 public static function fromString($cookieStr, $refUri = null, $encodeValue = true)
 {
     // Set default values
     if (is_string($refUri)) {
         $refUri = Zend_Uri_Http::factory($refUri);
     }
     $name = '';
     $value = '';
     $domain = '';
     $path = '';
     $expires = null;
     $secure = false;
     $parts = explode(';', $cookieStr);
     // If first part does not include '=', fail
     if (strpos($parts[0], '=') === false) {
         return false;
     }
     // Get the name and value of the cookie
     list($name, $value) = explode('=', trim(array_shift($parts)), 2);
     $name = trim($name);
     if ($encodeValue) {
         $value = urldecode(trim($value));
     }
     // Set default domain and path
     if ($refUri instanceof Zend_Uri_Http) {
         $domain = $refUri->getHost();
         $path = $refUri->getPath();
         $path = substr($path, 0, strrpos($path, '/'));
     }
     // Set other cookie parameters
     foreach ($parts as $part) {
         $part = trim($part);
         if (strtolower($part) == 'secure') {
             $secure = true;
             continue;
         }
         $keyValue = explode('=', $part, 2);
         if (count($keyValue) == 2) {
             list($k, $v) = $keyValue;
             switch (strtolower($k)) {
                 case 'expires':
                     if (($expires = strtotime($v)) === false) {
                         /**
                          * The expiration is past Tue, 19 Jan 2038 03:14:07 UTC
                          * the maximum for 32-bit signed integer. Zend_Date
                          * can get around that limit.
                          *
                          * @see Zend_Date
                          */
                         require_once 'Zend/Date.php';
                         $expireDate = new Zend_Date($v);
                         $expires = $expireDate->getTimestamp();
                     }
                     break;
                 case 'path':
                     $path = $v;
                     break;
                 case 'domain':
                     $domain = $v;
                     break;
                 default:
                     break;
             }
         }
     }
     if ($name !== '') {
         $ret = new self($name, $value, $domain, $expires, $path, $secure);
         $ret->encodeValue = $encodeValue ? true : false;
         return $ret;
     } else {
         return false;
     }
 }
Пример #6
0
 /**
  * Generate a new Cookie object from a cookie string
  * (for example the value of the Set-Cookie HTTP header)
  *
  * @param string $cookieStr
  * @param Zend_Uri_Http|string $ref_uri Reference URI for default values (domain, path)
  * @return Zend_Http_Cookie A new Zend_Http_Cookie object or false on failure.
  */
 public static function fromString($cookieStr, $ref_uri = null)
 {
     // Set default values
     if (is_string($ref_uri)) {
         $ref_uri = Zend_Uri_Http::factory($ref_uri);
     }
     $name = '';
     $value = '';
     $domain = '';
     $path = '';
     $expires = null;
     $secure = false;
     $parts = explode(';', $cookieStr);
     // If first part does not include '=', fail
     if (strpos($parts[0], '=') === false) {
         return false;
     }
     // Get the name and value of the cookie
     list($name, $value) = explode('=', trim(array_shift($parts)), 2);
     $name = trim($name);
     $value = urldecode(trim($value));
     // Set default domain and path
     if ($ref_uri instanceof Zend_Uri_Http) {
         $domain = $ref_uri->getHost();
         $path = $ref_uri->getPath();
         $path = substr($path, 0, strrpos($path, '/'));
     }
     // Set other cookie parameters
     foreach ($parts as $part) {
         $part = trim($part);
         if (strtolower($part) == 'secure') {
             $secure = true;
             continue;
         }
         $keyValue = explode('=', $part, 2);
         if (count($keyValue) == 2) {
             list($k, $v) = $keyValue;
             switch (strtolower($k)) {
                 case 'expires':
                     $expires = strtotime($v);
                     break;
                 case 'path':
                     $path = $v;
                     break;
                 case 'domain':
                     $domain = $v;
                     break;
                 default:
                     break;
             }
         }
     }
     if ($name !== '') {
         return new Zend_Http_Cookie($name, $value, $domain, $expires, $path, $secure);
     } else {
         return false;
     }
 }
Пример #7
0
 /**
  * Set the URI for the next request
  *
  * @param Zend_Uri_Http|string $uri
  */
 public function setUri($uri)
 {
     if (is_string($uri) && Zend_Uri_Http::check($uri)) {
         $uri = Zend_Uri_Http::factory($uri);
     }
     if ($uri instanceof Zend_Uri_Http) {
         // We have no ports, set the defaults
         if (!$uri->getPort()) {
             $uri->setPort($uri->getScheme() == 'https' ? 443 : 80);
         }
         $this->uri = $uri;
     } else {
         throw new Zend_Http_Exception('Passed parameter is not a valid HTTP URI.');
     }
 }
Пример #8
0
 /**
  * Delete a cookie according to it's name and domain. If no name is specified,
  * all cookies from this domain will be cleared out.
  *
  * @param string|Zend_Uri_Http $domain
  * @param string $cookie_name 
  * @return boolean true if cookie was deleted.
  */
 public function deleteCookies($domain, $cookie_name = null)
 {
     $ret = false;
     $path = '/';
     if ($domain instanceof Zend_Uri_Http) {
         $path = dirname($domain->getPath());
         $domain = $domain->getHost();
     } elseif (is_string($domain) && Zend_Uri_Http::check($domain)) {
         $domain = Zend_Uri_Http::factory($domain);
         $path = dirname($domain->getPath());
         $domain = $domain->getHost();
     }
     // If we have a cookie's name, delete only this one
     if (isset($cookie_name) && isset($this->cookies[$domain][$path][$cookie_name])) {
         unset($this->cookies[$domain][$path][$cookie_name]);
         $ret = true;
         // If we only got a URI, clear all cookies matching this URI.
     } else {
         $cookies = $this->_matchPath($this->_matchDomain($domain), $path);
         foreach ($cookies as $cookie) {
             if (isset($this->cookies[$cookie->getDomain()][$cookie->getPath])) {
                 unset($this->cookies[$cookie->getDomain()][$cookie->getPath]);
                 $ret = true;
                 if (count($this->cookies[$cookie->getDomain()]) == 0) {
                     unset($this->cookies[$cookie->getDomain()]);
                 }
             }
         }
     }
     return $ret;
 }
Пример #9
0
 /**
  * Checks if a url is within the set domain and/or subdomain.
  * @param string $value
  * @return boolean
  */
 public function isValid($value)
 {
     $this->_setValue($value);
     try {
         $uri = Zend_Uri_Http::factory($value);
     } catch (Zend_Uri_Exception $e) {
         $this->_error(self::INVALID);
         return false;
     }
     // Explode the base and subdomains for our valid and input domains
     list($validBase, $validSub) = $this->_splitHost($this->_domain);
     list($inputBase, $inputSub) = $this->_splitHost($uri->getHost());
     if ($validBase != $inputBase) {
         $this->_error(self::OUTSIDE_DOMAIN);
         return false;
     }
     // See if we need to validate the subdomain
     if ($this->_validateSubdomain) {
         if ($validSub != $inputSub) {
             $this->_error(self::OUTSIDE_DOMAIN);
             return false;
         }
     }
     return true;
 }
Пример #10
0
 /**
  * Generate a new Cookie object from a cookie string 
  * (for example the value of the Set-Cookie HTTP header)
  *
  * @param string $cookieStr
  * @param Zend_Uri_Http|string $ref_uri Reference URI for default values (domain, path)
  * @return Zend_Http_Cookie A new Zend_Http_Cookie object or false on failure.
  */
 public static function factory($cookieStr, $ref_uri = null)
 {
     // Set default values
     if (is_string($ref_uri)) {
         $ref_uri = Zend_Uri_Http::factory($ref_uri);
     }
     $name = null;
     $value = null;
     $expires = null;
     $domain = null;
     $path = null;
     $secure = false;
     if ($ref_uri instanceof Zend_Uri_Http) {
         $domain = $ref_uri->getHost();
         $path = dirname($ref_uri->getPath());
     }
     foreach (explode(';', $cookieStr) as $part) {
         $part = trim($part);
         if (strtolower($part) == 'secure') {
             $secure = true;
             continue;
         }
         list($k, $v) = explode('=', $part);
         if (isset($k) && isset($v)) {
             switch ($k) {
                 case 'expires':
                     $expires = strtotime($v);
                     break;
                 case 'path':
                     $path = $v;
                     break;
                 case 'domain':
                     $domain = $v;
                     break;
                 default:
                     $name = $k;
                     $value = $v;
                     break;
             }
         }
     }
     if ($name && isset($value)) {
         return new Zend_Http_Cookie($name, $value, $domain, $expires, $path, $secure);
     } else {
         return false;
     }
 }
Пример #11
0
 public function testRelativePathRedirect()
 {
     $client = $this->_prepareClient('testRelativeRedirections');
     $client->setParameterGet('redirect', 'relpath');
     $client->setMaxRedirects(1);
     $res = $client->request('GET');
     // Get the new expected path
     $uri = Zend_Uri_Http::factory($this->baseuri);
     $uri->setPort(80);
     $uri->setPath($uri->getPath() . 'path/to/fake/file.ext');
     $uri = $uri->__toString();
     $this->assertEquals("{$uri}?redirect=relpath", $client->getUri(true), "The new location is not as expected: {$client->getUri(true)}");
 }
Пример #12
-1
 protected function filterBefore(Mage_Api2_Model_Request $request, Mage_Api2_Model_Response $response)
 {
     // Add generic CORS headers - this is not the 'right' way to do this, but Magento has no CORS support in Mage_Api2
     $response->setHeader('Access-Control-Allow-Origin', '*', true);
     $response->setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE', true);
     $response->setHeader('Access-Control-Allow-Headers', 'Content-Type', true);
     $response->setHeader('Access-Control-Max-Age', '86400', true);
     // Support credentials
     $response->setHeader('Access-Control-Allow-Credentials', 'true', true);
     $origin = $request->getHeader('Origin');
     if ($origin) {
         try {
             $origin = Zend_Uri_Http::factory($origin);
             $response->setHeader('Access-Control-Allow-Origin', $origin->getUri(), true);
         } catch (Exception $e) {
             // NOOP
         }
     }
     Mage::dispatchEvent('api2_server_filter_before', ['request' => $request, 'response' => $response]);
 }