aboutsummaryrefslogtreecommitdiff
path: root/bridges/EpicGamesFreeBridge.php
blob: 087b95be7cd2313dc5cd4bf70004b7f449902b00 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
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;
    }
}
2022-07-07Bump examplesbun-v0.1.2Gravatar Jarred Sumner 4-3/+91 2022-07-07Updating format of Next.js example app README to match the restGravatar Hassan El Mghari 1-0/+8 2022-07-07Deleted installing dependencies from Discord README since it's done automatic...Gravatar Hassan El Mghari 1-6/+0 2022-07-07Updating README for React example to match DiscordGravatar Hassan El Mghari 1-1/+12 2022-07-07Clean up README for React exampleGravatar Hassan El Mghari 1-65/+8 2022-07-07Update command to run react app to bun devGravatar Hassan El Mghari 1-2/+2 2022-07-07fix: napi_get_version should return the Node-API version and not the bun versionGravatar K.J. Valencik 1-4/+2 2022-07-07Add troubleshooting for old intel CPUsGravatar CoffeeMovedCoder 1-1/+19 2022-07-07Delete second.tsx page as it's not being usedGravatar Hassan El Mghari 1-22/+0 2022-07-07Removed unused parts of index.tsxGravatar Hassan El Mghari 1-6/+0 2022-07-07Cleaned up the Next.js example READMEGravatar Hassan El Mghari 1-6/+2 2022-07-07Fix: long numbers + unused cssGravatar michell brito 1-21/+13 2022-07-07Update README.mdGravatar PyBaker 1-26/+26 2022-07-07[install] Use an identifier for the accept header valueGravatar Jarred Sumner 1-3/+9 2022-07-07Fixes https://github.com/Jarred-Sumner/bun/issues/341Gravatar Jarred Sumner 1-1/+1 2022-07-07Outdated typeGravatar Jarred Sumner 1-2/+2 2022-07-07Fix copyGravatar Jarred Sumner 2-2/+2 2022-07-07fix devcontainer starship installationGravatar shanehsi 1-1/+1 2022-07-07Use Node.js v18.x from NodeSource to use string.replaceAll methodGravatar Hiroaki Nakamura 1-1/+1 2022-07-07[strings] Fix typo in string_immutable.zigGravatar Ikko Ashimine 1-1/+1 2022-07-07Bump build-idGravatar Jarred Sumner 1-1/+1 2022-07-07Update list of unsupported bun Next.js featuresGravatar Hassan El Mghari 1-0/+1 2022-07-06[next] Fix @types/react errorGravatar Jarred Sumner 1-4/+4 2022-07-06[cli] ClarifyGravatar Jarred Sumner 1-1/+1 2022-07-06Improve error message for outdated linux kernelGravatar Jarred Sumner 1-1/+28 2022-07-06[tsconfig] Fix crash affecting preactGravatar Jarred Sumner 1-0/+15 2022-07-06[internal] Fix failing buildGravatar Jarred Sumner 1-4/+5 2022-07-06[bun install] Fix `NotSameFileSystem` errorGravatar Jarred Sumner 1-1/+1 2022-07-06chore(examples): Updates start docoGravatar mrowles 1-3/+1 2022-07-06Updated CPU in benchmarksGravatar Isaac McFadyen 1-2/+2 2022-07-06docs: add callout for typedefs with TypeScriptGravatar josefaidt 1-1/+20 2022-07-06fix: spawn thread on linuxGravatar Egor 1-3/+6 2022-07-07fix: add unzip is required informationGravatar Moritz Löwenstein 1-0/+28 2022-07-06Update Deno number for React SSR after 8c1157be229137963d1dd513d389ae181db00821Gravatar Jarred Sumner 1-4/+4 2022-07-06Add needed dependencies to Makefile devcontainer targetGravatar Hiroaki Nakamura 1-1/+1 2022-07-06fix tabpanel a11yGravatar Alexander 1-31/+47 2022-07-06fix a11y issues on landingGravatar Alexander 2-86/+139 2022-07-06docs: Fix broken toc linkGravatar Yongwook Choi 1-4/+4 2022-07-06fixup!: add newline to end of fileGravatar Joe Previte 1-1/+1 2022-07-06refactor: wrap BigInt tests in describe blockGravatar Joe Previte 1-9/+11 2022-07-06Add a space in page.tsxGravatar Eyal Cohen 1-1/+1 2022-07-06Add Bun logoGravatar Daniel Tolentino 1-0/+3