Skip to content

Commit

Permalink
headers: add X-PagarMe-User-Agent and User-Agent (#330)
Browse files Browse the repository at this point in the history
* add X-PagarMe-User-Agent to requests

* fix: update sdk version
  • Loading branch information
murilohns authored and ahmarcia committed May 24, 2019
1 parent 7c60006 commit 97545f5
Show file tree
Hide file tree
Showing 3 changed files with 116 additions and 1 deletion.
6 changes: 5 additions & 1 deletion lib/PagarMe.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@

class PagarMe
{
const VERSION = '3.8.1';

/**
* @param Client
*/
Expand Down Expand Up @@ -136,13 +138,15 @@ public function __construct(
$headers = [],
$requestOptions = []
) {
$requestHeaders = new RequestHeaders();

$this->client = new Client(
new GuzzleClient(
[
'base_url' => 'https://api.pagar.me/1/',
'base_uri' => 'https://api.pagar.me/1/',
'defaults' => [
'headers' => $headers
'headers' => $requestHeaders->getSdkHeaders($headers)
]
]
),
Expand Down
65 changes: 65 additions & 0 deletions lib/RequestHeaders.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
<?php

namespace PagarMe\Sdk;

class RequestHeaders
{
/**
* @param array $headers
*
* @return array
*/
public function getSdkHeaders($headers)
{
$headerWithUserAgent = $this->addUserAgentHeader($headers);
$headerWithPagarMeUserAgent = $this->addPagarMeUserAgentHeader(
$headerWithUserAgent
);

return $headerWithPagarMeUserAgent;
}

/**
* @param array $headers
*
* @return array
*/
private function addPagarMeUserAgentHeader($headers)
{
if (isset($headers['X-PagarMe-User-Agent'])) {
$headers['X-PagarMe-User-Agent'] .= ' ' . $this->getDefaultHeaders();

return $headers;
}

$headers['X-PagarMe-User-Agent'] = $this->getDefaultHeaders();

return $headers;
}

/**
* @param array $headers
*
* @return array
*/
private function addUserAgentHeader($headers)
{
if (isset($headers['User-Agent'])) {
$headers['User-Agent'] .= ' ' . $this->getDefaultHeaders();

return $headers;
}

$headers['User-Agent'] = $this->getDefaultHeaders();

return $headers;
}

/**
* @return string
*/
private function getDefaultHeaders()
{
return 'pagarme-php/' . PagarMe::VERSION;
}
}
46 changes: 46 additions & 0 deletions tests/unit/RequestHeadersTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
<?php

namespace PagarMe\SdkTest;

use PagarMe\Sdk\RequestHeaders;
use PagarMe\Sdk\PagarMe;

class RequestHeadersTest extends \PHPUnit_Framework_TestCase
{
/**
* @test
*/
public function mustReturnCorrectHeaders()
{
$requestHeaders = new RequestHeaders();
$defaultHeaders = $requestHeaders->getSdkHeaders([]);
$expectedUserAgent = sprintf(
'pagarme-php/%s',
PagarMe::VERSION
);
$expectedHeaders = [
'X-PagarMe-User-Agent' => $expectedUserAgent,
'User-Agent' => $expectedUserAgent
];

$this->assertEquals($defaultHeaders, $expectedHeaders);

$filledHeaders = [
'X-PagarMe-User-Agent' => 'Magento/1.9.1.0',
'User-Agent' => 'Magento/1.9.1.0'
];

$sdkHeadersFilled = $requestHeaders->getSdkHeaders($filledHeaders);

$expectedUserAgent = sprintf(
'Magento/1.9.1.0 pagarme-php/%s',
PagarMe::VERSION
);
$expectedHeaders = [
'X-PagarMe-User-Agent' => $expectedUserAgent,
'User-Agent' => $expectedUserAgent
];

$this->assertEquals($sdkHeadersFilled, $expectedHeaders);
}
}

0 comments on commit 97545f5

Please sign in to comment.