<?php

use dokuwiki\plugin\oauth\Adapter;
use dokuwiki\plugin\oauthdiscord\Discord;

/**
 * Service Implementation for oAuth Doorkeeper authentication
 */
class action_plugin_oauthdiscord extends Adapter
{

    /**
     * @inheritdoc
     */
    public function registerServiceClass()
    {
        return Discord::class;
    }

    /**
     * @inheritDoc
     */
    public function getUser()
    {
        $oauth = $this->getOAuthService();
        $data = array();

        // basic user data
        $result = json_decode($oauth->request('https://discord.com/api/users/@me'), true);
        $data['user'] = $result['username'];
        $data['name'] = $result['global_name'];

        if ($result['verified']) {
            $data['mail'] = $result['email'];
        }

        return $data;
    }

    /**
     * @inheritdoc
     */
    public function getScopes()
    {
        return [Discord::SCOPE_IDENTIFY, Discord::SCOPE_EMAIL];
    }

    /**
     * @inheritDoc
     */
    public function getLabel()
    {
        return 'Discord';
    }

    /**
     * @inheritDoc
     */
    public function getColor()
    {
        return '#7289da';
    }
}