<?php

class GOGBridge extends BridgeAbstract
{
    const NAME = 'GOGBridge';
    const MAINTAINER = 'teromene';
    const URI = 'https://gog.com';
    const DESCRIPTION = 'Returns the latest releases from GOG.com';

    public function collectData()
    {
        $values = getContents('https://www.gog.com/games/ajax/filtered?limit=25&sort=new');
        $decodedValues = json_decode($values);

        $limit = 0;
        foreach ($decodedValues->products as $game) {
            $item = [];
            $item['author'] = $game->developer . ' / ' . $game->publisher;
            $item['title'] = $game->title;
            $item['id'] = $game->id;
            $item['uri'] = self::URI . $game->url;
            $item['content'] = $this->buildGameContentPage($game);
            $item['timestamp'] = $game->globalReleaseDate;

            foreach ($game->gallery as $image) {
                $item['enclosures'][] = $image . '.jpg';
            }

            $this->items[] = $item;
            $limit += 1;

            if ($limit == 10) {
                break;
            }
        }
    }

    private function buildGameContentPage($game)
    {
        $gameDescriptionText = getContents('https://api.gog.com/products/' . $game->id . '?expand=description');

        $gameDescriptionValue = json_decode($gameDescriptionText);

        $content = 'Genres: ';
        $content .= implode(', ', $game->genres);

        $content .= '<br />Supported Platforms: ';
        if ($game->worksOn->Windows) {
            $content .= 'Windows ';
        }
        if ($game->worksOn->Mac) {
            $content .= 'Mac ';
        }
        if ($game->worksOn->Linux) {
            $content .= 'Linux ';
        }

        $content .= '<br />' . $gameDescriptionValue->description->full;

        return $content;
    }
}