Skip to content

Commit 8018d0c

Browse files
committed
Merge branch 'YP-980__api_dlya_raboty_s_polzovatelyami_rolyami_privilegiyami' into 'main'
YP-980_API functionality has been added to work with Users, Roles and Privileges. See merge request ypmn-public/php-api-client!1
2 parents 8034e83 + 45b6ed1 commit 8018d0c

8 files changed

+969
-82
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Ypmn;
6+
7+
interface ApiCpanelArraySerializeInterface
8+
{
9+
/**
10+
* Возвращает сериализованное в массив представление объекта
11+
* @return array
12+
*/
13+
public function arraySerialize(): array;
14+
}

src/ApiCpanelUserException.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Ypmn;
6+
7+
use Exception;
8+
9+
class ApiCpanelUserException extends Exception
10+
{
11+
}

src/ApiCpanelUserRequest.php

Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Ypmn;
6+
7+
/*
8+
* API-USRMNG
9+
*/
10+
class ApiCpanelUserRequest extends ApiRequest
11+
{
12+
/** ApiCpanelUser endpoints. Task YP-980 */
13+
protected const CPANEL_PRIVILEGE_API = '/api/v4/users/privilege';
14+
protected const CPANEL_ROLE_API = '/api/v4/users/role';
15+
protected const CPANEL_USER_API = '/api/v4/users/user';
16+
17+
/**
18+
* @return array
19+
*/
20+
public function getPrivilegesList(): array
21+
{
22+
try {
23+
$result = parent::sendGetRequest(self::CPANEL_PRIVILEGE_API);
24+
} catch (PaymentException $pe) {
25+
return ['response' => null, 'error' => $pe->getMessage()];
26+
}
27+
28+
return $result;
29+
}
30+
31+
/**
32+
* @param array $merchants
33+
* @return array
34+
*/
35+
public function getRolesList(array $merchants = []): array
36+
{
37+
$apiUrlWithQuery = self::CPANEL_ROLE_API;
38+
if (!empty($merchants)) {
39+
$apiUrlWithQuery .= '?merchants=' . implode(',', $merchants);
40+
}
41+
try {
42+
$result = parent::sendGetRequest($apiUrlWithQuery);
43+
} catch (PaymentException $pe) {
44+
return ['response' => null, 'error' => $pe->getMessage()];
45+
}
46+
47+
return $result;
48+
}
49+
50+
/**
51+
* @param array $merchants
52+
* @return array
53+
*/
54+
public function getUsersList(array $merchants = []): array
55+
{
56+
$apiUrlWithQuery = self::CPANEL_USER_API;
57+
if (!empty($merchants)) {
58+
$apiUrlWithQuery .= '?merchants=' . implode(',', $merchants);
59+
}
60+
try {
61+
$result = parent::sendGetRequest($apiUrlWithQuery);
62+
} catch (PaymentException $pe) {
63+
return ['response' => null, 'error' => $pe->getMessage()];
64+
}
65+
66+
return $result;
67+
}
68+
69+
/**
70+
* @param CpanelUser $newUser
71+
* @return array
72+
*/
73+
public function createUser(CpanelUser $newUser): array
74+
{
75+
$newUserSerialized = json_encode($newUser->arraySerialize());
76+
try {
77+
$result = parent::sendPostRequest(
78+
$newUserSerialized,
79+
self::CPANEL_USER_API,
80+
'Ошибка создания пользователя'
81+
);
82+
} catch (PaymentException $pe) {
83+
return ['response' => null, 'error' => $pe->getMessage()];
84+
}
85+
86+
return $result;
87+
}
88+
89+
/**
90+
* @param CpanelUser $editUser
91+
* @return array
92+
*/
93+
public function updateUser(CpanelUser $editUser): array
94+
{
95+
$editUserSerialized = json_encode($editUser->arraySerialize());
96+
try {
97+
$result = parent::sendPutRequest(
98+
$editUserSerialized,
99+
self::CPANEL_USER_API,
100+
'Ошибка изменения пользователя'
101+
);
102+
} catch (PaymentException $pe) {
103+
return ['response' => null, 'error' => $pe->getMessage()];
104+
}
105+
106+
return $result;
107+
}
108+
109+
/**
110+
* @param Role $newRole
111+
* @return array
112+
*/
113+
public function createRole(Role $newRole): array
114+
{
115+
$newRoleSerialized = json_encode($newRole->arraySerialize());
116+
try {
117+
$result = parent::sendPostRequest(
118+
$newRoleSerialized,
119+
self::CPANEL_ROLE_API,
120+
'Ошибка создания роли'
121+
);
122+
} catch (PaymentException $pe) {
123+
return ['response' => null, 'error' => $pe->getMessage()];
124+
}
125+
126+
return $result;
127+
}
128+
129+
/**
130+
* @param Role $editRole
131+
* @return array
132+
*/
133+
public function updateRole(Role $editRole): array
134+
{
135+
$editRoleSerialized = json_encode($editRole->arraySerialize());
136+
try {
137+
$result = parent::sendPutRequest(
138+
$editRoleSerialized,
139+
self::CPANEL_ROLE_API,
140+
'Ошибка изменения роли'
141+
);
142+
} catch (PaymentException $pe) {
143+
return ['response' => null, 'error' => $pe->getMessage()];
144+
}
145+
146+
return $result;
147+
}
148+
}

0 commit comments

Comments
 (0)