Skip to content

Commit 7f8e192

Browse files
committed
new service to handle multi entity levels
1 parent b9d1b29 commit 7f8e192

20 files changed

+644
-0
lines changed

docs/sample/code/test.php

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
<?php
2+
/**
3+
* Copyright © Thomas Klein, All rights reserved.
4+
* See LICENSE bundled with this library for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
include __DIR__ . '/../../../vendor/autoload.php';
9+
10+
use Zoho\Desk\Api\Metadata;
11+
use Zoho\Desk\Client\ConfigProviderBuilder;
12+
use Zoho\Desk\Exception\CouldNotDeleteException;
13+
use Zoho\Desk\Exception\CouldNotReadException;
14+
use Zoho\Desk\Exception\CouldNotSaveException;
15+
use Zoho\Desk\Gateway;
16+
use Zoho\Desk\Model\ListCriteria;
17+
use Zoho\Desk\Model\ListCriteriaBuilder;
18+
use Zoho\OAuth\ZohoOAuth;
19+
20+
// Optional, it's used by the zoho/oauth package
21+
define('LOGGER_PATH', __DIR__ . '/');
22+
23+
$configBuilder = ConfigProviderBuilder::getInstance();
24+
$configBuilder->setClientId('1000.51C3ETBOWTOA03UL19U5EMV0F74VQR')
25+
->setClientSecret('4086937c603d0e174ee58d5b6d9b21fb6b93802fd8')
26+
->setRedirectUrl('')
27+
->setCurrentUserEmail('[email protected]')
28+
->setApiBaseUrl(Metadata::API_ENDPOINT_EU)
29+
->setApiVersion(Metadata::API_VERSION)
30+
->setOrgId(20076919967)
31+
->setIsSandbox(false)
32+
->setAccountsUrl(Metadata::API_ACCOUNTS_EU)
33+
->setTokenPersistencePath(__DIR__);
34+
35+
$config = $configBuilder->create();
36+
$gateway = new Gateway($config);
37+
38+
// Optional: if you need to register the token first
39+
// ZohoOAuth::initialize($config->get());
40+
// ZohoOAuth::getClientInstance()->generateAccessToken('1000.125d9d14ca4c42d8c3be5164d19433a8.c6c3be950b0290639f5126f5d9ff810b');
41+
42+
43+
try {
44+
$criteriaBuilder = new ListCriteriaBuilder();
45+
$criteriaBuilder->setFields(['id','subject', 'email', 'description','webUrl']);
46+
// $criteriaBuilder->setFields()->setFilters()...
47+
$ticketList = $gateway->getOperationPool()->getListOperation('tickets')->getList($criteriaBuilder->create());
48+
//$ticketList = $gateway->getOperationPool()->getListOperation('tickets')->getByIds([1,2,3]);
49+
} catch (CouldNotReadException $e) {
50+
echo $e->getMessage();
51+
echo "<br>";
52+
echo $e->getPrevious()->getMessage();
53+
}
54+
55+
echo '<pre>';
56+
foreach ($ticketList as $ticket) {
57+
echo '<hr>';
58+
print_r($ticket->toArray());
59+
}
60+
61+
die;
62+
63+
/** CRUD Operations **/
64+
65+
$ticketDataObject = $gateway->getDataObjectFactory()->create('tickets', /* Entity values */);
66+
67+
try {
68+
$ticketDataObject = $gateway->getOperationPool()->getCreateOperation('tickets')->create($ticketDataObject);
69+
} catch (CouldNotSaveException $e) {
70+
// Handle the exception...
71+
}
72+
73+
try {
74+
$ticketDataObject = $gateway->getOperationPool()->getReadOperation('tickets')->get(1234);
75+
} catch (CouldNotReadException $e) {
76+
// Handle the exception...
77+
}
78+
79+
try {
80+
$criteriaBuilder = new ListCriteriaBuilder();
81+
// $criteriaBuilder->setFields()->setFilters()...
82+
$ticketList = $gateway->getOperationPool()->getListOperation('tickets')->getList($criteriaBuilder->create());
83+
$ticketList = $gateway->getOperationPool()->getListOperation('tickets')->getByIds([1,2,3]);
84+
} catch (CouldNotReadException $e) {
85+
// Handle the exception...
86+
}
87+
88+
try {
89+
$ticketDataObject = $gateway->getOperationPool()->getUpdateOperation('tickets')->update($ticketDataObject);
90+
} catch (CouldNotSaveException $e) {
91+
// Handle the exception...
92+
}
93+
94+
try {
95+
$gateway->getOperationPool()->getDeleteOperation('tickets', ['resolution'])->delete(1234);
96+
} catch (CouldNotDeleteException $e) {
97+
// Handle the exception...
98+
}
478 Bytes
Binary file not shown.

docs/sample/code/zoho_oauth.log

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
2021-03-24 09:14:01 INFO: Access Token has expired. Hence refreshing.

src/Client/RequestBuilder.php

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,20 @@
1212
use Zoho\Desk\Exception\Exception;
1313
use Zoho\Desk\Exception\InvalidArgumentException;
1414
use Zoho\Desk\OAuth\ClientInterface;
15+
16+
use function array_keys;
17+
use function array_map;
1518
use function array_merge;
19+
use function array_values;
1620
use function curl_init;
1721
use function curl_setopt;
1822
use function http_build_query;
1923
use function is_array;
2024
use function is_numeric;
2125
use function json_encode;
2226
use function sprintf;
27+
use function str_replace;
28+
2329
use const CURLOPT_CUSTOMREQUEST;
2430
use const CURLOPT_HEADER;
2531
use const CURLOPT_HTTPHEADER;
@@ -61,13 +67,25 @@ public function __construct(ClientInterface $client, array $mandatoryData = [])
6167
$this->data = [];
6268
}
6369

70+
/**
71+
* @deprecated
72+
*/
6473
public function setEntityType(string $entityType): self
6574
{
6675
$this->data['entityType'] = $entityType;
6776

6877
return $this;
6978
}
7079

80+
public function setPath(string $path, array $bind = []): self
81+
{
82+
$search = array_map(static function (string $variable): string {
83+
return '{' . $variable . '}';
84+
}, array_keys($bind));
85+
86+
return $this->setEntityType(str_replace($search, array_values($bind), $path));
87+
}
88+
7189
public function setMethod(string $method): self
7290
{
7391
$this->data['method'] = $method;

src/Model/Operation/CreateOperationInterface.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
/**
1414
* @api
15+
* @deprecated
1516
*/
1617
interface CreateOperationInterface
1718
{

src/Model/Operation/DeleteOperationInterface.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
/**
1313
* @api
14+
* @deprecated
1415
*/
1516
interface DeleteOperationInterface
1617
{

src/Model/Operation/ListOperationInterface.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
/**
1515
* @api
16+
* @deprecated
1617
*/
1718
interface ListOperationInterface
1819
{

src/Model/Operation/ReadOperationInterface.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
/**
1414
* @api
15+
* @deprecated
1516
*/
1617
interface ReadOperationInterface
1718
{

src/Model/Operation/UpdateOperationInterface.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
/**
1414
* @api
15+
* @deprecated
1516
*/
1617
interface UpdateOperationInterface
1718
{

src/Model/OperationPool.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@
2121
use function implode;
2222
use function md5;
2323

24+
/**
25+
* @deprecated
26+
*/
2427
final class OperationPool
2528
{
2629
private RequestBuilder $requestBuilder;

0 commit comments

Comments
 (0)