diff options
Diffstat (limited to 'bridges/GooglePlayStoreBridge.php')
-rw-r--r-- | bridges/GooglePlayStoreBridge.php | 120 |
1 files changed, 62 insertions, 58 deletions
diff --git a/bridges/GooglePlayStoreBridge.php b/bridges/GooglePlayStoreBridge.php index ec0c1090..d61be2c8 100644 --- a/bridges/GooglePlayStoreBridge.php +++ b/bridges/GooglePlayStoreBridge.php @@ -1,60 +1,64 @@ <?php -class GooglePlayStoreBridge extends BridgeAbstract { - const NAME = 'Google Play Store'; - const URI = 'https://play.google.com/store/apps'; - const CACHE_TIMEOUT = 3600; // 1h - const DESCRIPTION = 'Returns the most recent version of an app with its changelog'; - - const TEST_DETECT_PARAMETERS = array( - 'https://play.google.com/store/apps/details?id=com.ichi2.anki' => array( - 'id' => 'com.ichi2.anki' - ) - ); - - const PARAMETERS = array(array( - 'id' => array( - 'name' => 'Application ID', - 'exampleValue' => 'com.ichi2.anki', - 'required' => true - ) - )); - - const INFORMATION_MAP = array( - 'Updated' => 'timestamp', - 'Current Version' => 'title', - 'Offered By' => 'author' - ); - - public function collectData() { - $appuri = static::URI . '/details?id=' . $this->getInput('id'); - $html = getSimpleHTMLDOM($appuri); - - $item = array(); - $item['uri'] = $appuri; - $item['content'] = $html->find('div[itemprop=description]', 1)->innertext; - - // Find other fields from Additional Information section - foreach($html->find('.hAyfc') as $info) { - $index = self::INFORMATION_MAP[$info->first_child()->plaintext] ?? null; - if (is_null($index)) { - continue; - } - $item[$index] = $info->children(1)->plaintext; - } - - $this->items[] = $item; - } - - public function detectParameters($url) { - // Example: https://play.google.com/store/apps/details?id=com.ichi2.anki - - $params = array(); - $regex = '/^(https?:\/\/)?play\.google\.com\/store\/apps\/details\?id=([^\/&?\n]+)/'; - if(preg_match($regex, $url, $matches) > 0) { - $params['id'] = urldecode($matches[2]); - return $params; - } - - return null; - } + +class GooglePlayStoreBridge extends BridgeAbstract +{ + const NAME = 'Google Play Store'; + const URI = 'https://play.google.com/store/apps'; + const CACHE_TIMEOUT = 3600; // 1h + const DESCRIPTION = 'Returns the most recent version of an app with its changelog'; + + const TEST_DETECT_PARAMETERS = [ + 'https://play.google.com/store/apps/details?id=com.ichi2.anki' => [ + 'id' => 'com.ichi2.anki' + ] + ]; + + const PARAMETERS = [[ + 'id' => [ + 'name' => 'Application ID', + 'exampleValue' => 'com.ichi2.anki', + 'required' => true + ] + ]]; + + const INFORMATION_MAP = [ + 'Updated' => 'timestamp', + 'Current Version' => 'title', + 'Offered By' => 'author' + ]; + + public function collectData() + { + $appuri = static::URI . '/details?id=' . $this->getInput('id'); + $html = getSimpleHTMLDOM($appuri); + + $item = []; + $item['uri'] = $appuri; + $item['content'] = $html->find('div[itemprop=description]', 1)->innertext; + + // Find other fields from Additional Information section + foreach ($html->find('.hAyfc') as $info) { + $index = self::INFORMATION_MAP[$info->first_child()->plaintext] ?? null; + if (is_null($index)) { + continue; + } + $item[$index] = $info->children(1)->plaintext; + } + + $this->items[] = $item; + } + + public function detectParameters($url) + { + // Example: https://play.google.com/store/apps/details?id=com.ichi2.anki + + $params = []; + $regex = '/^(https?:\/\/)?play\.google\.com\/store\/apps\/details\?id=([^\/&?\n]+)/'; + if (preg_match($regex, $url, $matches) > 0) { + $params['id'] = urldecode($matches[2]); + return $params; + } + + return null; + } } |