Mercurial > hg > isophonics-drupal-site
comparison vendor/zendframework/zend-feed/src/PubSubHubbub/PubSubHubbub.php @ 0:4c8ae668cc8c
Initial import (non-working)
| author | Chris Cannam |
|---|---|
| date | Wed, 29 Nov 2017 16:09:58 +0000 |
| parents | |
| children | 7a779792577d |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:4c8ae668cc8c |
|---|---|
| 1 <?php | |
| 2 /** | |
| 3 * Zend Framework (http://framework.zend.com/) | |
| 4 * | |
| 5 * @link http://github.com/zendframework/zf2 for the canonical source repository | |
| 6 * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) | |
| 7 * @license http://framework.zend.com/license/new-bsd New BSD License | |
| 8 */ | |
| 9 | |
| 10 namespace Zend\Feed\PubSubHubbub; | |
| 11 | |
| 12 use Zend\Escaper\Escaper; | |
| 13 use Zend\Feed\Reader; | |
| 14 use Zend\Http; | |
| 15 | |
| 16 class PubSubHubbub | |
| 17 { | |
| 18 /** | |
| 19 * Verification Modes | |
| 20 */ | |
| 21 const VERIFICATION_MODE_SYNC = 'sync'; | |
| 22 const VERIFICATION_MODE_ASYNC = 'async'; | |
| 23 | |
| 24 /** | |
| 25 * Subscription States | |
| 26 */ | |
| 27 const SUBSCRIPTION_VERIFIED = 'verified'; | |
| 28 const SUBSCRIPTION_NOTVERIFIED = 'not_verified'; | |
| 29 const SUBSCRIPTION_TODELETE = 'to_delete'; | |
| 30 | |
| 31 /** | |
| 32 * @var Escaper | |
| 33 */ | |
| 34 protected static $escaper; | |
| 35 | |
| 36 /** | |
| 37 * Singleton instance if required of the HTTP client | |
| 38 * | |
| 39 * @var Http\Client | |
| 40 */ | |
| 41 protected static $httpClient = null; | |
| 42 | |
| 43 /** | |
| 44 * Simple utility function which imports any feed URL and | |
| 45 * determines the existence of Hub Server endpoints. This works | |
| 46 * best if directly given an instance of Zend\Feed\Reader\Atom|Rss | |
| 47 * to leverage off. | |
| 48 * | |
| 49 * @param \Zend\Feed\Reader\Feed\AbstractFeed|string $source | |
| 50 * @return array | |
| 51 * @throws Exception\InvalidArgumentException | |
| 52 */ | |
| 53 public static function detectHubs($source) | |
| 54 { | |
| 55 if (is_string($source)) { | |
| 56 $feed = Reader\Reader::import($source); | |
| 57 } elseif ($source instanceof Reader\Feed\AbstractFeed) { | |
| 58 $feed = $source; | |
| 59 } else { | |
| 60 throw new Exception\InvalidArgumentException('The source parameter was' | |
| 61 . ' invalid, i.e. not a URL string or an instance of type' | |
| 62 . ' Zend\Feed\Reader\Feed\AbstractFeed'); | |
| 63 } | |
| 64 return $feed->getHubs(); | |
| 65 } | |
| 66 | |
| 67 /** | |
| 68 * Allows the external environment to make ZendOAuth use a specific | |
| 69 * Client instance. | |
| 70 * | |
| 71 * @param Http\Client $httpClient | |
| 72 * @return void | |
| 73 */ | |
| 74 public static function setHttpClient(Http\Client $httpClient) | |
| 75 { | |
| 76 static::$httpClient = $httpClient; | |
| 77 } | |
| 78 | |
| 79 /** | |
| 80 * Return the singleton instance of the HTTP Client. Note that | |
| 81 * the instance is reset and cleared of previous parameters GET/POST. | |
| 82 * Headers are NOT reset but handled by this component if applicable. | |
| 83 * | |
| 84 * @return Http\Client | |
| 85 */ | |
| 86 public static function getHttpClient() | |
| 87 { | |
| 88 if (!isset(static::$httpClient)) { | |
| 89 static::$httpClient = new Http\Client; | |
| 90 } else { | |
| 91 static::$httpClient->resetParameters(); | |
| 92 } | |
| 93 return static::$httpClient; | |
| 94 } | |
| 95 | |
| 96 /** | |
| 97 * Simple mechanism to delete the entire singleton HTTP Client instance | |
| 98 * which forces a new instantiation for subsequent requests. | |
| 99 * | |
| 100 * @return void | |
| 101 */ | |
| 102 public static function clearHttpClient() | |
| 103 { | |
| 104 static::$httpClient = null; | |
| 105 } | |
| 106 | |
| 107 /** | |
| 108 * Set the Escaper instance | |
| 109 * | |
| 110 * If null, resets the instance | |
| 111 * | |
| 112 * @param null|Escaper $escaper | |
| 113 */ | |
| 114 public static function setEscaper(Escaper $escaper = null) | |
| 115 { | |
| 116 static::$escaper = $escaper; | |
| 117 } | |
| 118 | |
| 119 /** | |
| 120 * Get the Escaper instance | |
| 121 * | |
| 122 * If none registered, lazy-loads an instance. | |
| 123 * | |
| 124 * @return Escaper | |
| 125 */ | |
| 126 public static function getEscaper() | |
| 127 { | |
| 128 if (null === static::$escaper) { | |
| 129 static::setEscaper(new Escaper()); | |
| 130 } | |
| 131 return static::$escaper; | |
| 132 } | |
| 133 | |
| 134 /** | |
| 135 * RFC 3986 safe url encoding method | |
| 136 * | |
| 137 * @param string $string | |
| 138 * @return string | |
| 139 */ | |
| 140 public static function urlencode($string) | |
| 141 { | |
| 142 $escaper = static::getEscaper(); | |
| 143 $rawencoded = $escaper->escapeUrl($string); | |
| 144 $rfcencoded = str_replace('%7E', '~', $rawencoded); | |
| 145 return $rfcencoded; | |
| 146 } | |
| 147 } |
