Skip to content

Commit

Permalink
Merge d51a21b into 5dad284
Browse files Browse the repository at this point in the history
  • Loading branch information
peter279k committed Jun 7, 2018
2 parents 5dad284 + d51a21b commit cc929e2
Show file tree
Hide file tree
Showing 6 changed files with 174 additions and 0 deletions.
18 changes: 18 additions & 0 deletions src/Collection/AssetsRecord.php
@@ -0,0 +1,18 @@
<?php
declare(strict_types=1);

namespace PayCrypto\Collection;

use ScriptFUSION\Porter\Collection\CountableProviderRecords;
use ScriptFUSION\Porter\Provider\Resource\ProviderResource;

class AssetsRecord extends CountableProviderRecords
{
public function __construct(
\Iterator $providerRecords,
int $count,
ProviderResource $resource
) {
parent::__construct($providerRecords, $count, $resource);
}
}
18 changes: 18 additions & 0 deletions src/Collection/ExchangesRecord.php
@@ -0,0 +1,18 @@
<?php
declare(strict_types=1);

namespace PayCrypto\Collection;

use ScriptFUSION\Porter\Collection\CountableProviderRecords;
use ScriptFUSION\Porter\Provider\Resource\ProviderResource;

class ExchangesRecord extends CountableProviderRecords
{
public function __construct(
\Iterator $providerRecords,
int $count,
ProviderResource $resource
) {
parent::__construct($providerRecords, $count, $resource);
}
}
42 changes: 42 additions & 0 deletions src/Resource/GetAssets.php
@@ -0,0 +1,42 @@
<?php
declare(strict_types=1);

namespace PayCrypto\Resource;

use PayCrypto\CryptoMonitor;
use PayCrypto\Collection\AssetsRecord;
use ScriptFUSION\Porter\Connector\ImportConnector;
use ScriptFUSION\Porter\Provider\Patreon\Collection\PledgeRecords;
use ScriptFUSION\Porter\Provider\Patreon\PatreonProvider;
use ScriptFUSION\Porter\Provider\Resource\ProviderResource;

class GetAssets implements ProviderResource
{
private $apiKey;

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

public function getProviderClassName(): string
{
return CryptoMonitor::class;
}

public function fetch(ImportConnector $connector): \Iterator
{
$response = \json_decode(
(string) $connector->fetch(
CryptoMonitor::buildExchangeApiUrl(
"v1/assets"
)
),
true
);

$assets = new \ArrayIterator($response);

return new AssetsRecord($assets, count($assets), $this);
}
}
42 changes: 42 additions & 0 deletions src/Resource/GetExchanges.php
@@ -0,0 +1,42 @@
<?php
declare(strict_types=1);

namespace PayCrypto\Resource;

use PayCrypto\CryptoMonitor;
use PayCrypto\Collection\ExchangesRecord;
use ScriptFUSION\Porter\Connector\ImportConnector;
use ScriptFUSION\Porter\Provider\Patreon\Collection\PledgeRecords;
use ScriptFUSION\Porter\Provider\Patreon\PatreonProvider;
use ScriptFUSION\Porter\Provider\Resource\ProviderResource;

class GetExchanges implements ProviderResource
{
private $apiKey;

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

public function getProviderClassName(): string
{
return CryptoMonitor::class;
}

public function fetch(ImportConnector $connector): \Iterator
{
$response = \json_decode(
(string) $connector->fetch(
CryptoMonitor::buildExchangeApiUrl(
"v1/exchanges"
)
),
true
);

$exchanges = new \ArrayIterator($response);

return new ExchangesRecord($exchanges, count($exchanges), $this);
}
}
27 changes: 27 additions & 0 deletions tests/Functional/GetAssetsTest.php
@@ -0,0 +1,27 @@
<?php
declare(strict_types=1);

namespace PayCrypto\Tests;

use PHPUnit\Framework\TestCase;
use PayCrypto\Resource\GetAssets;
use PayCrypto\Collection\AssetsRecord;
use ScriptFUSION\Porter\Specification\ImportSpecification;

final class GetAssetsTest extends TestCase
{
/** @var $apiKey This is the Coin API Key for test environment*/
private $apiKey = '4E861687-19D6-4894-87B9-E785B1EE3900';

public function testGetAssets()
{
/** @var AssetsRecord */
$assets = FixtureFactory::createPorter()->import(new ImportSpecification(new GetAssets($this->apiKey)));

foreach ($assets as $assetRecord) {
$this->assertArrayHasKey('asset_id', $assetRecord);
$this->assertArrayHasKey('name', $assetRecord);
$this->assertArrayHasKey('type_is_crypto', $assetRecord);
}
}
}
27 changes: 27 additions & 0 deletions tests/Functional/GetExchangesTest.php
@@ -0,0 +1,27 @@
<?php
declare(strict_types=1);

namespace PayCrypto\Tests;

use PHPUnit\Framework\TestCase;
use PayCrypto\Resource\GetExchanges;
use PayCrypto\Collection\ExchangesRecord;
use ScriptFUSION\Porter\Specification\ImportSpecification;

final class GetExchangesTest extends TestCase
{
/** @var $apiKey This is the Coin API Key for test environment*/
private $apiKey = '4E861687-19D6-4894-87B9-E785B1EE3900';

public function testGetExchanges()
{
/** @var ExchangesRecord */
$exchanges = FixtureFactory::createPorter()->import(new ImportSpecification(new GetExchanges($this->apiKey)));

foreach ($exchanges as $exchangeRecord) {
$this->assertArrayHasKey('exchange_id', $exchangeRecord);
$this->assertArrayHasKey('website', $exchangeRecord);
$this->assertArrayHasKey('name', $exchangeRecord);
}
}
}

0 comments on commit cc929e2

Please sign in to comment.