<?php

namespace App\Helpers\SocialHelper;

use GuzzleHttp\Client;
use Exception;

class GoogleLogin implements SocialLoginInterface
{
    private $accessToken = '';

    public function __construct($accessToken)
    {
        $this->accessToken = $accessToken;
    }

    public function getUser()
    {
        $guzzleClient = new Client();
        try {
            return json_decode($guzzleClient->get("https://www.googleapis.com/oauth2/v3/userinfo?prettyPrint=false", [
                'headers' => ['Authorization' => 'Bearer ' . $this->accessToken]
            ])->getBody());
        } catch (Exception $e) {
            return null;
        }
    }

    public static function mapUserData($userInfoResponse)
    {
        return [
            'first_name' => @$userInfoResponse->given_name,
            'last_name' => @$userInfoResponse->family_name,
            'email' => $userInfoResponse->email,
            'photo' => @$userInfoResponse->picture,
            'social_id' => $userInfoResponse->sub,
            'social_platform' => 'google'
        ];
    }
}
