<?php
/**
 * 2007-2014 [PagSeguro Internet Ltda.]
 *
 * NOTICE OF LICENSE
 *
 *Licensed under the Apache License, Version 2.0 (the "License");
 *you may not use this file except in compliance with the License.
 *You may obtain a copy of the License at
 *
 *http://www.apache.org/licenses/LICENSE-2.0
 *
 *Unless required by applicable law or agreed to in writing, software
 *distributed under the License is distributed on an "AS IS" BASIS,
 *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *See the License for the specific language governing permissions and
 *limitations under the License.
 *
 *  @author    PagSeguro Internet Ltda.
 *  @copyright 2007-2014 PagSeguro Internet Ltda.
 *  @license   http://www.apache.org/licenses/LICENSE-2.0
 */

/***
 * Identifies a PagSeguro account
 */
class PagSeguroAccountCredentials extends PagSeguroCredentials
{

    /***
     * Primary email associated with this account
     */
    private $email;

    /***
     * PagSeguro token
     */
    private $token;

    /***
     * Initializes a new instance of PagSeguroAccountCredentials class
     *
     * @throws Exception when credentials aren't provided.
     *
     * @param string $email
     * @param string $token
     */
    public function __construct($email, $token)
    {
        if ($email !== null && $token !== null) {
            $this->setEmail($email);
            $this->setToken($token);
        } else {
            throw new Exception("Credentials not set.");
        }
    }

    /***
     * @return string the e-mail from this account credential object
     */
    public function getEmail()
    {
        return $this->email;
    }

    /***
     * Sets the e-mail from this account credential object
     */
    public function setEmail($email)
    {
        $this->email = $email;
    }

    /***
     * @return string the token from this account credential object
     */
    public function getToken()
    {
        return $this->token;
    }

    /***
     * Sets the token in this account credential object
     */
    public function setToken($token)
    {
        $this->token = $token;
    }

    /***
     * @return array a map of name value pairs that compose this set of credentials
     */
    public function getAttributesMap()
    {
        return array(
            'email' => $this->email,
            'token' => $this->token
        );
    }

    /***
     * @return string a string that represents the current object
     */
    public function toString()
    {
        $credentials = array();
        $credentials['E-mail'] = $this->email;
        $credentials['Token'] = $this->token;
        return implode(' - ', $credentials);
    }
}
