diff options
Diffstat (limited to 'bridges/GoogleGroupsBridge.php')
-rw-r--r-- | bridges/GoogleGroupsBridge.php | 118 |
1 files changed, 61 insertions, 57 deletions
diff --git a/bridges/GoogleGroupsBridge.php b/bridges/GoogleGroupsBridge.php index 03152f5f..5bd7df47 100644 --- a/bridges/GoogleGroupsBridge.php +++ b/bridges/GoogleGroupsBridge.php @@ -1,67 +1,71 @@ <?php -class GoogleGroupsBridge extends XPathAbstract { - const NAME = 'Google Groups Bridge'; - const DESCRIPTION = 'Returns the latest posts on a Google Group'; - const URI = 'https://groups.google.com'; - const PARAMETERS = array( array( - 'group' => array( - 'name' => 'Group id', - 'title' => 'The string that follows /g/ in the URL', - 'exampleValue' => 'governance', - 'required' => true - ), - 'account' => array( - 'name' => 'Account id', - 'title' => 'Some Google groups have an additional id following /a/ in the URL', - 'exampleValue' => 'mozilla.org', - 'required' => false - ) - )); - const CACHE_TIMEOUT = 3600; +class GoogleGroupsBridge extends XPathAbstract +{ + const NAME = 'Google Groups Bridge'; + const DESCRIPTION = 'Returns the latest posts on a Google Group'; + const URI = 'https://groups.google.com'; + const PARAMETERS = [ [ + 'group' => [ + 'name' => 'Group id', + 'title' => 'The string that follows /g/ in the URL', + 'exampleValue' => 'governance', + 'required' => true + ], + 'account' => [ + 'name' => 'Account id', + 'title' => 'Some Google groups have an additional id following /a/ in the URL', + 'exampleValue' => 'mozilla.org', + 'required' => false + ] + ]]; + const CACHE_TIMEOUT = 3600; - const TEST_DETECT_PARAMETERS = array( - 'https://groups.google.com/a/mozilla.org/g/announce' => array( - 'account' => 'mozilla.org', 'group' => 'announce' - ), - 'https://groups.google.com/g/ansible-project' => array( - 'account' => null, 'group' => 'ansible-project' - ), - ); + const TEST_DETECT_PARAMETERS = [ + 'https://groups.google.com/a/mozilla.org/g/announce' => [ + 'account' => 'mozilla.org', 'group' => 'announce' + ], + 'https://groups.google.com/g/ansible-project' => [ + 'account' => null, 'group' => 'ansible-project' + ], + ]; - const XPATH_EXPRESSION_ITEM = '//div[@class="yhgbKd"]'; - const XPATH_EXPRESSION_ITEM_TITLE = './/span[@class="o1DPKc"]'; - const XPATH_EXPRESSION_ITEM_CONTENT = './/span[@class="WzoK"]'; - const XPATH_EXPRESSION_ITEM_URI = './/a[@class="ZLl54"]/@href'; - const XPATH_EXPRESSION_ITEM_AUTHOR = './/span[@class="z0zUgf"][last()]'; - const XPATH_EXPRESSION_ITEM_TIMESTAMP = './/div[@class="tRlaM"]'; - const XPATH_EXPRESSION_ITEM_ENCLOSURES = ''; - const XPATH_EXPRESSION_ITEM_CATEGORIES = ''; - const SETTING_FIX_ENCODING = true; + const XPATH_EXPRESSION_ITEM = '//div[@class="yhgbKd"]'; + const XPATH_EXPRESSION_ITEM_TITLE = './/span[@class="o1DPKc"]'; + const XPATH_EXPRESSION_ITEM_CONTENT = './/span[@class="WzoK"]'; + const XPATH_EXPRESSION_ITEM_URI = './/a[@class="ZLl54"]/@href'; + const XPATH_EXPRESSION_ITEM_AUTHOR = './/span[@class="z0zUgf"][last()]'; + const XPATH_EXPRESSION_ITEM_TIMESTAMP = './/div[@class="tRlaM"]'; + const XPATH_EXPRESSION_ITEM_ENCLOSURES = ''; + const XPATH_EXPRESSION_ITEM_CATEGORIES = ''; + const SETTING_FIX_ENCODING = true; - protected function getSourceUrl() { - $source = self::URI; + protected function getSourceUrl() + { + $source = self::URI; - $account = $this->getInput('account'); - if($account) { - $source = $source . '/a/' . $account; - } - return $source . '/g/' . $this->getInput('group'); - } + $account = $this->getInput('account'); + if ($account) { + $source = $source . '/a/' . $account; + } + return $source . '/g/' . $this->getInput('group'); + } - protected function provideWebsiteContent() { - return defaultLinkTo(getContents($this->getSourceUrl()), self::URI); - } + protected function provideWebsiteContent() + { + return defaultLinkTo(getContents($this->getSourceUrl()), self::URI); + } - const URL_REGEX = '#^https://groups.google.com(?:/a/(?<account>\S+))?(?:/g/(?<group>\S+))#'; + const URL_REGEX = '#^https://groups.google.com(?:/a/(?<account>\S+))?(?:/g/(?<group>\S+))#'; - public function detectParameters($url) { - $params = array(); - if(preg_match(self::URL_REGEX, $url, $matches)) { - $params['group'] = $matches['group']; - $params['account'] = $matches['account']; - return $params; - } - return null; - } + public function detectParameters($url) + { + $params = []; + if (preg_match(self::URL_REGEX, $url, $matches)) { + $params['group'] = $matches['group']; + $params['account'] = $matches['account']; + return $params; + } + return null; + } } |