<?php

namespace Omnipay\Mollie\Message;

use Guzzle\Common\Event;

abstract class AbstractRequest extends \Omnipay\Common\Message\AbstractRequest {

    protected $endpoint = 'https://api.mollie.nl/v1';

    public function getApiKey() {
        return $this->getParameter('apiKey');
    }

    public function setApiKey($value) {
        return $this->setParameter('apiKey', $value);
    }

    public function setTransactionId($value) {
        return $this->setParameter('transactionId', $value);
    }

    public function getTransactionId() {
        return $this->getParameter('transactionId');
    }

    protected function sendRequest($method, $endpoint, $data = null) {
        $this->httpClient->getEventDispatcher()->addListener('request.error', function (Event $event) {
            /**
             * @var \Guzzle\Http\Message\Response $response
             */
            $response = $event['response'];

            if ($response->isError()) {
                $event->stopPropagation();
            }
        });

        $httpRequest = $this->httpClient->createRequest(
                $method, $this->endpoint . $endpoint, array(
            'Authorization' => 'Bearer ' . $this->getApiKey()
                ), $data
        );

        return $httpRequest->send();
    }

}
