Skip to content

Commit 73c1c43

Browse files
v1.1.0 (#14)
* Add generic rest endpoint class for calling custom endpoints * fix doc string on rest endpoint * code quality fixes * code review: add types * Abstract Custom Headers Setup + Add Unit Tests * Fix Code Quality * Update Code Quality on Filter Abstraction + Add All Filters to Filter Builder * Add in PHP 8.4 PR Check --------- Co-authored-by: achodoff-sugarcrm <77338571+achodoff-sugarcrm@users.noreply.github.com>
1 parent 9cb0e23 commit 73c1c43

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+1213
-121
lines changed

.github/workflows/pr-checks.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
strategy:
1313
matrix:
1414
operating-system: [ubuntu-latest]
15-
php-versions: ['8.0','8.2','8.3']
15+
php-versions: ['8.0','8.2','8.3', '8.4']
1616
steps:
1717
- uses: actions/checkout@v3
1818

rector.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@
1414
SimplifyEmptyCheckOnEmptyArrayRector::class,
1515
])
1616
->withSets([
17-
SetList::PHP_80,
17+
SetList::PHP_82,
18+
SetList::PHP_83,
19+
SetList::PHP_84,
1820
SetList::DEAD_CODE,
1921
SetList::CODE_QUALITY,
2022
SetList::CODING_STYLE,

src/Client/SugarApi.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use Sugarcrm\REST\Endpoint\MLPackage;
1515
use Sugarcrm\REST\Endpoint\ModuleLoader;
1616
use Sugarcrm\REST\Endpoint\Ping;
17+
use Sugarcrm\REST\Endpoint\Rest;
1718
use Sugarcrm\REST\Endpoint\Smart;
1819
use Sugarcrm\REST\Endpoint\SugarBean;
1920
use Sugarcrm\REST\Endpoint\ModuleFilter;
@@ -48,6 +49,7 @@
4849
* @method ModuleLoader moduleLoader() -
4950
* @method MLPackage mlp(string $id = null)
5051
* @method Integrate integrate(string $module = '', string $id = '')
52+
* @method Rest rest(string $endpoint = '')
5153
*/
5254
class SugarApi extends AbstractClient implements PlatformAwareInterface
5355
{

src/Endpoint/Abstracts/AbstractSmartSugarEndpoint.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,13 @@
66

77
namespace Sugarcrm\REST\Endpoint\Abstracts;
88

9+
use GuzzleHttp\Psr7\Request;
910
use MRussell\REST\Endpoint\Data\ValidatedEndpointData;
1011
use MRussell\REST\Endpoint\SmartEndpoint;
1112
use MRussell\REST\Traits\PsrLoggerTrait;
1213
use Sugarcrm\REST\Endpoint\SugarEndpointInterface;
1314
use Sugarcrm\REST\Endpoint\Traits\CompileRequestTrait;
15+
use Sugarcrm\REST\Endpoint\Traits\CustomHeadersTrait;
1416

1517
/**
1618
* Provide a smarter interface for Endpoints, to better manage passed in data
@@ -20,6 +22,12 @@ abstract class AbstractSmartSugarEndpoint extends SmartEndpoint implements Sugar
2022
{
2123
use CompileRequestTrait;
2224
use PsrLoggerTrait;
25+
use CustomHeadersTrait;
2326

2427
protected string $_dataInterface = ValidatedEndpointData::class;
28+
29+
protected function configureRequest(Request $request, $data): Request
30+
{
31+
return parent::configureRequest($this->addCustomHeadersToRequest($request), $data);
32+
}
2533
}

src/Endpoint/Abstracts/AbstractSugarBeanCollectionEndpoint.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66

77
namespace Sugarcrm\REST\Endpoint\Abstracts;
88

9+
use GuzzleHttp\Psr7\Request;
910
use Sugarcrm\REST\Endpoint\SugarBean;
1011
use MRussell\REST\Endpoint\Abstracts\AbstractModelEndpoint;
12+
use Sugarcrm\REST\Endpoint\Traits\CustomHeadersTrait;
1113
use Sugarcrm\REST\Endpoint\Traits\FieldsDataTrait;
1214
use Sugarcrm\REST\Endpoint\Traits\ModuleAwareTrait;
1315

@@ -22,6 +24,7 @@ abstract class AbstractSugarBeanCollectionEndpoint extends AbstractSugarCollecti
2224
{
2325
use FieldsDataTrait;
2426
use ModuleAwareTrait;
27+
use CustomHeadersTrait;
2528

2629
public const SUGAR_ORDERBY_DATA_PROPERTY = 'order_by';
2730

@@ -97,6 +100,11 @@ protected function configurePayload(): mixed
97100
return $this->configureFieldsDataProps($data);
98101
}
99102

103+
protected function configureRequest(Request $request, $data): Request
104+
{
105+
return parent::configureRequest($this->addCustomHeadersToRequest($request), $data);
106+
}
107+
100108
/**
101109
* Add module to url options
102110
* @inheritdoc

src/Endpoint/Abstracts/AbstractSugarBeanEndpoint.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
use Sugarcrm\REST\Endpoint\Integrate;
2323
use Sugarcrm\REST\Endpoint\SugarEndpointInterface;
2424
use Sugarcrm\REST\Endpoint\Traits\CompileRequestTrait;
25+
use Sugarcrm\REST\Endpoint\Traits\CustomHeadersTrait;
2526
use Sugarcrm\REST\Endpoint\Traits\FieldsDataTrait;
2627
use Sugarcrm\REST\Endpoint\Traits\IntegrateSyncKeyTrait;
2728
use Sugarcrm\REST\Endpoint\Traits\ModuleAwareTrait;
@@ -53,6 +54,7 @@ abstract class AbstractSugarBeanEndpoint extends ModelEndpoint implements SugarE
5354
use FieldsDataTrait;
5455
use FileUploadsTrait;
5556
use IntegrateSyncKeyTrait;
57+
use CustomHeadersTrait;
5658

5759
public const MODEL_ACTION_VAR = 'action';
5860

@@ -173,7 +175,7 @@ protected function configureRequest(Request $request, $data): Request
173175
$data = $this->configureFieldsDataProps($data);
174176
}
175177

176-
return parent::configureRequest($request, $data);
178+
return parent::configureRequest($this->addCustomHeadersToRequest($request), $data);
177179
}
178180

179181
/**

src/Endpoint/Abstracts/AbstractSugarCollectionEndpoint.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,15 @@
66

77
namespace Sugarcrm\REST\Endpoint\Abstracts;
88

9+
use GuzzleHttp\Psr7\Request;
910
use MRussell\REST\Exception\Endpoint\InvalidRequest;
1011
use GuzzleHttp\Psr7\Response;
1112
use MRussell\REST\Endpoint\Data\AbstractEndpointData;
1213
use MRussell\REST\Endpoint\CollectionEndpoint;
1314
use MRussell\REST\Traits\PsrLoggerTrait;
1415
use Sugarcrm\REST\Endpoint\SugarEndpointInterface;
1516
use Sugarcrm\REST\Endpoint\Traits\CompileRequestTrait;
17+
use Sugarcrm\REST\Endpoint\Traits\CustomHeadersTrait;
1618

1719
/**
1820
* Provides access to a multi-bean collection retrieved from Sugar 7 REST Api
@@ -23,6 +25,7 @@ abstract class AbstractSugarCollectionEndpoint extends CollectionEndpoint implem
2325
{
2426
use CompileRequestTrait;
2527
use PsrLoggerTrait;
28+
use CustomHeadersTrait;
2629

2730
public const SUGAR_OFFSET_PROPERTY = 'offset';
2831

@@ -82,6 +85,11 @@ protected function configurePayload(): mixed
8285
return $data;
8386
}
8487

88+
protected function configureRequest(Request $request, $data): Request
89+
{
90+
return parent::configureRequest($this->addCustomHeadersToRequest($request), $data);
91+
}
92+
8593
/**
8694
* Get the configured offset
8795
*/

src/Endpoint/Abstracts/AbstractSugarEndpoint.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,12 @@
66

77
namespace Sugarcrm\REST\Endpoint\Abstracts;
88

9+
use GuzzleHttp\Psr7\Request;
910
use MRussell\REST\Endpoint\Endpoint;
1011
use MRussell\REST\Traits\PsrLoggerTrait;
1112
use Sugarcrm\REST\Endpoint\SugarEndpointInterface;
1213
use Sugarcrm\REST\Endpoint\Traits\CompileRequestTrait;
14+
use Sugarcrm\REST\Endpoint\Traits\CustomHeadersTrait;
1315

1416
/**
1517
* Base Sugar API Endpoint for the simplest of REST functionality
@@ -19,4 +21,10 @@ abstract class AbstractSugarEndpoint extends Endpoint implements SugarEndpointIn
1921
{
2022
use CompileRequestTrait;
2123
use PsrLoggerTrait;
24+
use CustomHeadersTrait;
25+
26+
protected function configureRequest(Request $request, $data): Request
27+
{
28+
return parent::configureRequest($this->addCustomHeadersToRequest($request), $data);
29+
}
2230
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php
2+
3+
namespace Sugarcrm\REST\Endpoint\Data\Filters;
4+
5+
use Sugarcrm\REST\Endpoint\Data\Filters\Operator\AbstractOperator;
6+
7+
abstract class AbstractPredefinedFilter extends AbstractOperator
8+
{
9+
public function __construct(array $arguments = [])
10+
{
11+
if (!empty($arguments) && count($arguments) < 2) {
12+
$arguments = [
13+
$this->getOperator(),
14+
$arguments[0] ?? '',
15+
];
16+
}
17+
18+
parent::__construct($arguments);
19+
}
20+
21+
public function compile(): array
22+
{
23+
return [
24+
$this->getOperator() => $this->getValue(),
25+
];
26+
}
27+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?php
2+
3+
namespace Sugarcrm\REST\Endpoint\Data\Filters;
4+
5+
class Creator extends AbstractPredefinedFilter
6+
{
7+
public const OPERATOR = '$creator';
8+
}

0 commit comments

Comments
 (0)