Skip to content

Commit cb31df4

Browse files
committed
Fixes hotmeteor#3
1 parent e6336e1 commit cb31df4

6 files changed

Lines changed: 68 additions & 12 deletions

File tree

src/Contracts/Factory.php

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,5 @@
44

55
interface Factory
66
{
7-
/**
8-
* Get an webhook provider implementation.
9-
*
10-
* @param string $driver
11-
* @return \Receiver\Contracts\Provider
12-
*/
137
public function driver($driver = null);
148
}

src/Contracts/Provider.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,12 @@
22

33
namespace Receiver\Contracts;
44

5+
use Illuminate\Http\Request;
6+
57
interface Provider
68
{
9+
public function receive(Request $request): static;
10+
711
/**
812
* Get the webhook instance.
913
*

src/Facades/Receiver.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77
use Receiver\Contracts\Factory;
88

99
/**
10-
* @method static \Receiver\Contracts\Factory driver(string $driver = null)
11-
* @method static \Receiver\Contracts\Factory receive(Request $request)
12-
* @method static \Receiver\Contracts\Factory respond()
13-
* @mixin \Receiver\Contracts\Factory
14-
* @mixin \Receiver\Contracts\Provider
10+
* @method static \Receiver\Providers\AbstractProvider driver(string $driver = null)
11+
* @method static \Receiver\Providers\AbstractProvider receive(Request $request)
12+
* @method static \Symfony\Component\HttpFoundation\Response ok()
13+
* @see \Receiver\Contracts\Factory
14+
* @see \Receiver\Contracts\Provider
1515
*/
1616
class Receiver extends Facade
1717
{

src/Providers/FakeProvider.php

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?php
2+
3+
namespace Receiver\Providers;
4+
5+
use Illuminate\Http\Request;
6+
7+
class FakeProvider extends AbstractProvider
8+
{
9+
/**
10+
* @param Request $request
11+
* @return string
12+
*/
13+
public function getEvent(Request $request): string
14+
{
15+
return $request->input('type', 'fake');
16+
}
17+
18+
/**
19+
* @param Request $request
20+
* @return array
21+
*/
22+
public function getData(Request $request): array
23+
{
24+
return $request->input('data', []);
25+
}
26+
}

src/ReceiverManager.php

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
use Illuminate\Support\Manager;
77
use InvalidArgumentException;
88
use Receiver\Contracts\Factory;
9+
use Receiver\Providers\AbstractProvider;
10+
use Receiver\Providers\FakeProvider;
911
use Receiver\Providers\GithubProvider;
1012
use Receiver\Providers\HubspotProvider;
1113
use Receiver\Providers\PostmarkProvider;
@@ -90,12 +92,23 @@ protected function createStripeDriver(): StripeProvider
9092
);
9193
}
9294

95+
/**
96+
* Create an instance of the specified driver.
97+
*/
98+
protected function createFakeDriver(): FakeProvider
99+
{
100+
return $this->buildProvider(
101+
FakeProvider::class,
102+
[]
103+
);
104+
}
105+
93106
/**
94107
* Build a webhook provider instance.
95108
*
96109
* @param string $provider
97110
* @param array $config
98-
* @return \Receiver\Providers\AbstractProvider
111+
* @return AbstractProvider
99112
*/
100113
public function buildProvider(string $provider, array $config): Providers\AbstractProvider
101114
{

tests/FacadeTest.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
namespace Receiver\Tests;
4+
5+
use Illuminate\Http\JsonResponse;
6+
use Illuminate\Http\Request;
7+
use Receiver\Facades\Receiver;
8+
9+
class FacadeTest extends TestCase
10+
{
11+
public function test_ide_helpers()
12+
{
13+
$request = new Request();
14+
15+
$receiver = Receiver::driver('fake')->receive($request);
16+
17+
$this->assertInstanceOf(JsonResponse::class, $receiver->ok());
18+
}
19+
}

0 commit comments

Comments
 (0)