Skip to content

Commit

Permalink
feat: added market resource
Browse files Browse the repository at this point in the history
  • Loading branch information
andrepimpao committed May 21, 2024
1 parent 25f2cfa commit 2d26cf9
Show file tree
Hide file tree
Showing 8 changed files with 154 additions and 177 deletions.
20 changes: 5 additions & 15 deletions docs/03-supported-endpoints.md
Original file line number Diff line number Diff line change
Expand Up @@ -1661,22 +1661,17 @@ $response = $api->bookmakers()->getAllBySearchQuery('bet');
### Markets

- [Official documentation](https://docs.sportmonks.com/football/endpoints-and-entities/endpoints/markets)
- Cache default max age: `1 day`

#### `getAll`

```php
getAll(int $page = 1, int $perPage = 25, string $order = 'asc'): MarketCollection
getAll(): MarketCollection
```

Get all markets:

```php
$markets = $sportMonksFootball->markets()->getAll();

foreach ($markets->getData() as $market) {
echo $market->getName();
}
$response = $api->markets()->getAll();
```

#### `getById`
Expand All @@ -1688,24 +1683,19 @@ getById(int $id): MarketItem
Get market by id:

```php
$market = $sportMonksFootball->markets()->getById(1);
echo $market->getData()->getName();
$response = $api->markets()->getById(1);
```

#### `getAllBySearchQuery`

```php
getAllBySearchQuery(string $query, int $page = 1, int $perPage = 25, string $order = 'asc'): MarketCollection
getAllBySearchQuery(string $query): MarketCollection
```

Get all markets by search query:

```php
$markets = $sportMonksFootball->markets()->getAllBySearchQuery('goal');

foreach ($markets->getData() as $market) {
echo $market->getName();
}
$response = $api->markets()->getAllBySearchQuery('goal');
```

### Pre-match Odds
Expand Down
94 changes: 0 additions & 94 deletions src/Endpoint/MarketEndpoint.php

This file was deleted.

60 changes: 60 additions & 0 deletions src/Resource/MarketResource.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
<?php

namespace ProgrammatorDev\SportMonksFootball\Resource;

use ProgrammatorDev\SportMonksFootball\Entity\Response\MarketCollection;
use ProgrammatorDev\SportMonksFootball\Entity\Response\MarketItem;
use ProgrammatorDev\SportMonksFootball\Resource\Util\PaginationTrait;
use ProgrammatorDev\Validator\Exception\ValidationException;
use Psr\Http\Client\ClientExceptionInterface;

class MarketResource extends Resource
{
use PaginationTrait;

/**
* @throws ClientExceptionInterface
*/
public function getAll(): MarketCollection
{
$data = $this->api->request(
method: 'GET',
path: '/v3/odds/markets'
);

return new MarketCollection($data);
}

/**
* @throws ClientExceptionInterface
*/
public function getById(int $id): MarketItem
{
$data = $this->api->request(
method: 'GET',
path: $this->api->buildPath('/v3/odds/markets/{id}', [
'id' => $id
])
);

return new MarketItem($data);
}

/**
* @throws ValidationException
* @throws ClientExceptionInterface
*/
public function getAllBySearchQuery(string $query): MarketCollection
{
$this->validateQuery($query, 'query');

$data = $this->api->request(
method: 'GET',
path: $this->api->buildPath('/v3/odds/markets/search/{query}', [
'query' => $query
])
);

return new MarketCollection($data);
}
}
11 changes: 6 additions & 5 deletions src/SportMonksFootball.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
use ProgrammatorDev\SportMonksFootball\Resource\FixtureResource;
use ProgrammatorDev\SportMonksFootball\Resource\LeagueResource;
use ProgrammatorDev\SportMonksFootball\Resource\LivescoreResource;
use ProgrammatorDev\SportMonksFootball\Resource\MarketResource;

class SportMonksFootball extends Api
{
Expand Down Expand Up @@ -103,11 +104,11 @@ public function livescores(): LivescoreResource
return new LivescoreResource($this);
}

// public function markets(): MarketEndpoint
// {
// return new MarketEndpoint($this);
// }
//
public function markets(): MarketResource
{
return new MarketResource($this);
}

// public function players(): PlayerEndpoint
// {
// return new PlayerEndpoint($this);
Expand Down
55 changes: 55 additions & 0 deletions tests/Integration/MarketResourceTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
<?php

namespace ProgrammatorDev\SportMonksFootball\Test\Integration;

use ProgrammatorDev\SportMonksFootball\Entity\Response\MarketCollection;
use ProgrammatorDev\SportMonksFootball\Entity\Response\MarketItem;
use ProgrammatorDev\SportMonksFootball\Test\AbstractTest;
use ProgrammatorDev\SportMonksFootball\Test\MockResponse;
use ProgrammatorDev\SportMonksFootball\Test\Util\TestCollectionResponseTrait;
use ProgrammatorDev\SportMonksFootball\Test\Util\TestItemResponseTrait;
use ProgrammatorDev\SportMonksFootball\Test\Util\TestValidationExceptionTrait;

class MarketResourceTest extends AbstractTest
{
use TestItemResponseTrait;
use TestCollectionResponseTrait;
use TestValidationExceptionTrait;

public static function provideItemResponseData(): \Generator
{
yield 'get by id' => [
MarketItem::class,
MockResponse::MARKET_ITEM_DATA,
'markets',
'getById',
[1]
];
}

public static function provideCollectionResponseData(): \Generator
{
yield 'get all' => [
MarketCollection::class,
MockResponse::MARKET_COLLECTION_DATA,
'markets',
'getAll'
];
yield 'get all by search query' => [
MarketCollection::class,
MockResponse::MARKET_COLLECTION_DATA,
'markets',
'getAllBySearchQuery',
['test']
];
}

public static function provideValidationExceptionData(): \Generator
{
yield 'get all by search query, blank query' => [
'markets',
'getAllBySearchQuery',
['']
];
}
}
2 changes: 2 additions & 0 deletions tests/Integration/SportMonksFootballTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
use ProgrammatorDev\SportMonksFootball\Resource\FixtureResource;
use ProgrammatorDev\SportMonksFootball\Resource\LeagueResource;
use ProgrammatorDev\SportMonksFootball\Resource\LivescoreResource;
use ProgrammatorDev\SportMonksFootball\Resource\MarketResource;
use ProgrammatorDev\SportMonksFootball\Test\AbstractTest;

class SportMonksFootballTest extends AbstractTest
Expand All @@ -28,5 +29,6 @@ public function testMethods()
$this->assertInstanceOf(FixtureResource::class, $this->api->fixtures());
$this->assertInstanceOf(LeagueResource::class, $this->api->leagues());
$this->assertInstanceOf(LivescoreResource::class, $this->api->livescores());
$this->assertInstanceOf(MarketResource::class, $this->api->markets());
}
}
63 changes: 0 additions & 63 deletions tests/MarketEndpointTest_.php

This file was deleted.

Loading

0 comments on commit 2d26cf9

Please # to comment.