diff --git a/bridges/EpicGamesFreeBridge.php b/bridges/EpicGamesFreeBridge.php new file mode 100644 index 00000000..087b95be --- /dev/null +++ b/bridges/EpicGamesFreeBridge.php @@ -0,0 +1,74 @@ + [ + 'name' => 'Language', + 'type' => 'list', + 'values' => [ + 'English' => 'en-US', + 'العربية' => 'ar', + 'Deutsch' => 'de', + 'Español (Spain)' => 'es-ES', + 'Español (LA)' => 'es-MX', + 'Français' => 'fr', + 'Italiano' => 'it', + '日本語' => 'ja', + '한국어' => 'ko', + 'Polski' => 'pl', + 'Português (Brasil)' => 'pt-BR', + 'Русский' => 'ru', + 'ไทย' => 'th', + 'Türkçe' => 'tr', + '简体中文' => 'zh-CN', + '繁體中文' => 'zh-Hant', + ], + 'title' => 'Language for game information', + 'defaultValue' => 'en-US', + ], + 'country' => [ + 'name' => 'Country', + 'title' => 'Country store to check for deals', + 'defaultValue' => 'US', + ] + ]]; + + public function collectData() + { + $url = 'https://store-site-backend-static.ak.epicgames.com/freeGamesPromotions?'; + $params = [ + 'locale' => $this->getInput('locale'), + 'country' => $this->getInput('country'), + 'allowCountries' => $this->getInput('country'), + ]; + $url .= http_build_query($params); + $json = Json::decode(getContents($url)); + + $data = $json['data']['Catalog']['searchStore']['elements']; + foreach ($data as $element) { + if (!isset($element['promotions']['promotionalOffers'][0])) { + continue; + } + $item = [ + 'author' => $element['seller']['name'], + 'content' => $element['description'], + 'enclosures' => array_map(fn($item) => $item['url'], $element['keyImages']), + 'timestamp' => strtotime($element['promotions']['promotionalOffers'][0]['promotionalOffers'][0]['startDate']), + 'title' => $element['title'], + 'url' => parent::getURI() . $this->getInput('locale') . '/p/' . $element['urlSlug'], + ]; + $this->items[] = $item; + } + } + + public function getURI() + { + $uri = parent::getURI() . $this->getInput('locale') . '/free-games'; + return $uri; + } +}