Skip to content

Commit 72d1f00

Browse files
authored
Merge pull request #36 from php-api-clients/add-webhook-interface
Add WebHook Interface
2 parents 016c977 + 20ce3c3 commit 72d1f00

File tree

3 files changed

+44
-1
lines changed

3 files changed

+44
-1
lines changed

src/Generator.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
use ApiClients\Tools\OpenApiClientGenerator\Generator\Path;
77
use ApiClients\Tools\OpenApiClientGenerator\Generator\Schema;
88
use ApiClients\Tools\OpenApiClientGenerator\Generator\WebHook;
9+
use ApiClients\Tools\OpenApiClientGenerator\Generator\WebHookInterface;
910
use ApiClients\Tools\OpenApiClientGenerator\Generator\WebHooks;
1011
use cebe\openapi\Reader;
1112
use cebe\openapi\spec\OpenApi;
@@ -133,6 +134,10 @@ private function all(string $namespace): iterable
133134
);
134135
}
135136

137+
yield from WebHookInterface::generate(
138+
$this->dirname($namespace . 'WebHookInterface'),
139+
'WebHookInterface',
140+
);
136141
yield from WebHooks::generate(
137142
$this->dirname($namespace . 'WebHooks'),
138143
$pathClassNameMapping,

src/Generator/WebHook.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public static function generate(string $path, string $namespace, string $baseNam
3131
$factory = new BuilderFactory();
3232
$stmt = $factory->namespace($namespace);
3333

34-
$class = $factory->class($className)->makeFinal();
34+
$class = $factory->class($className)->makeFinal()->implement($baseNamespace . 'WebHookInterface');
3535

3636
$method = $factory->method('resolve')->makePublic()->setReturnType('string')->addParam(
3737
(new Param('data'))->setType('array')

src/Generator/WebHookInterface.php

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<?php
2+
3+
namespace ApiClients\Tools\OpenApiClientGenerator\Generator;
4+
5+
use ApiClients\Tools\OpenApiClientGenerator\File;
6+
use cebe\openapi\spec\Operation as OpenAPiOperation;
7+
use cebe\openapi\spec\PathItem;
8+
use Jawira\CaseConverter\Convert;
9+
use League\OpenAPIValidation\Schema\Exception\SchemaMismatch;
10+
use PhpParser\Builder\Param;
11+
use PhpParser\BuilderFactory;
12+
use PhpParser\Node;
13+
use PhpParser\Node\Stmt\Class_;
14+
use Psr\Http\Message\RequestInterface;
15+
use Psr\Http\Message\ServerRequestInterface;
16+
use RingCentral\Psr7\Request;
17+
18+
final class WebHookInterface
19+
{
20+
/**
21+
* @param string $path
22+
* @param string $namespace
23+
* @param string $baseNamespace
24+
* @param string $className
25+
* @param PathItem $pathItem
26+
* @return iterable<Node>
27+
* @throws \Jawira\CaseConverter\CaseConverterException
28+
*/
29+
public static function generate(string $namespace, string $className): iterable
30+
{
31+
$factory = new BuilderFactory();
32+
$stmt = $factory->namespace($namespace);
33+
34+
yield new File($namespace . '\\' . $className, $stmt->addStmt($factory->interface($className)->addStmt($factory->method('resolve')->makePublic()->setReturnType('string')->addParam(
35+
(new Param('data'))->setType('array')
36+
)))->getNode());
37+
}
38+
}

0 commit comments

Comments
 (0)