Skip to content

Commit

Permalink
[EpicGamesFreeBridge] Add new bridge
Browse files Browse the repository at this point in the history
  • Loading branch information
Phantop committed Dec 12, 2024
1 parent 4685bbd commit 5198748
Showing 1 changed file with 74 additions and 0 deletions.
74 changes: 74 additions & 0 deletions bridges/EpicGamesFreeBridge.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
<?php

class EpicGamesFreeBridge extends BridgeAbstract
{
const NAME = 'Epic Games Free Games';
const MAINTAINER = 'phantop';
const URI = 'https://store.epicgames.com/';
const DESCRIPTION = 'Returns the latest free games from Epic Games';
const PARAMETERS = [ [
'locale' => [
'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;
}
}

0 comments on commit 5198748

Please sign in to comment.