Compare commits
45 commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
f4744d10fd | ||
![]() |
1171642992 | ||
![]() |
c9d8e4ad61 | ||
![]() |
674be0f7fc | ||
![]() |
6128e82393 | ||
![]() |
17c53f7e7b | ||
![]() |
9bd1144042 | ||
![]() |
bfdab54f92 | ||
![]() |
a65579ee42 | ||
![]() |
3e8ab8ed1b | ||
![]() |
3c5b7d4bc3 | ||
![]() |
a251147362 | ||
![]() |
398e96c475 | ||
![]() |
98fa8b4c50 | ||
![]() |
d7d25e7a2e | ||
![]() |
2f7b1a7e57 | ||
![]() |
c136026ef8 | ||
![]() |
92e696cbe9 | ||
![]() |
6e34fe92ff | ||
![]() |
392e17d6f9 | ||
![]() |
c6728e4148 | ||
![]() |
203c6b01bb | ||
![]() |
e61399564d | ||
![]() |
687ad9c2e3 | ||
![]() |
e4b45c9365 | ||
![]() |
59c7525150 | ||
![]() |
784268b94e | ||
![]() |
78faf324ad | ||
![]() |
69f8584a0f | ||
![]() |
92d5d03f8d | ||
![]() |
b4fb05808b | ||
![]() |
4bc32e6b37 | ||
![]() |
766233bb98 | ||
![]() |
21ee8316b4 | ||
![]() |
3202472ab7 | ||
![]() |
62be53aee1 | ||
![]() |
ca882f9c9c | ||
![]() |
123122c1de | ||
![]() |
36f137bb3c | ||
![]() |
0f755ac9bd | ||
![]() |
815dd8cf26 | ||
![]() |
eb14651691 | ||
![]() |
75934fbdd5 | ||
![]() |
fc6441fb61 | ||
![]() |
de84caa616 |
5 changed files with 585 additions and 46 deletions
7
.github/dependabot.yml
vendored
Normal file
7
.github/dependabot.yml
vendored
Normal file
|
@ -0,0 +1,7 @@
|
|||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: composer
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: daily
|
||||
open-pull-requests-limit: 10
|
14
.github/workflows/automerge.yml
vendored
Normal file
14
.github/workflows/automerge.yml
vendored
Normal file
|
@ -0,0 +1,14 @@
|
|||
name: Dependabot auto-merge minor/patch
|
||||
on:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
repository-projects: write
|
||||
|
||||
jobs:
|
||||
dependabot:
|
||||
uses: ShaneMcC/.github/.github/workflows/automergeMinorOrPatch.yml@master
|
||||
secrets: inherit
|
|
@ -12,7 +12,7 @@
|
|||
],
|
||||
"require": {
|
||||
"php": ">=7.1",
|
||||
"rmccue/requests": "^1.7"
|
||||
"rmccue/requests": "^2.0"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
|
|
72
composer.lock
generated
72
composer.lock
generated
|
@ -1,37 +1,57 @@
|
|||
{
|
||||
"_readme": [
|
||||
"This file locks the dependencies of your project to a known state",
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"hash": "cb150c262c5789b25121c563653566ff",
|
||||
"content-hash": "0e9868a816da68c50ceb0f080e96fe30",
|
||||
"content-hash": "55d65ecd209ff9bb30f393746ff9b81d",
|
||||
"packages": [
|
||||
{
|
||||
"name": "rmccue/requests",
|
||||
"version": "v1.7.0",
|
||||
"version": "v2.0.14",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/rmccue/Requests.git",
|
||||
"reference": "87932f52ffad70504d93f04f15690cf16a089546"
|
||||
"url": "https://github.com/WordPress/Requests.git",
|
||||
"reference": "9b228eef149e1752b037bf79cef4ca73a7b1fea1"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/rmccue/Requests/zipball/87932f52ffad70504d93f04f15690cf16a089546",
|
||||
"reference": "87932f52ffad70504d93f04f15690cf16a089546",
|
||||
"url": "https://api.github.com/repos/WordPress/Requests/zipball/9b228eef149e1752b037bf79cef4ca73a7b1fea1",
|
||||
"reference": "9b228eef149e1752b037bf79cef4ca73a7b1fea1",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.2"
|
||||
"ext-json": "*",
|
||||
"php": ">=5.6"
|
||||
},
|
||||
"require-dev": {
|
||||
"requests/test-server": "dev-master"
|
||||
"dealerdirect/phpcodesniffer-composer-installer": "^0.7",
|
||||
"php-parallel-lint/php-console-highlighter": "^0.5.0",
|
||||
"php-parallel-lint/php-parallel-lint": "^1.3.1",
|
||||
"phpcompatibility/php-compatibility": "^9.0",
|
||||
"requests/test-server": "dev-main",
|
||||
"roave/security-advisories": "dev-latest",
|
||||
"squizlabs/php_codesniffer": "^3.6",
|
||||
"wp-coding-standards/wpcs": "^2.0",
|
||||
"yoast/phpunit-polyfills": "^1.0.0"
|
||||
},
|
||||
"suggest": {
|
||||
"art4/requests-psr18-adapter": "For using Requests as a PSR-18 HTTP Client",
|
||||
"ext-curl": "For improved performance",
|
||||
"ext-openssl": "For secure transport support",
|
||||
"ext-zlib": "For improved performance when decompressing encoded streams"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Requests": "library/"
|
||||
}
|
||||
"files": [
|
||||
"library/Deprecated.php"
|
||||
],
|
||||
"psr-4": {
|
||||
"WpOrg\\Requests\\": "src/"
|
||||
},
|
||||
"classmap": [
|
||||
"library/Requests.php"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
|
@ -40,11 +60,23 @@
|
|||
"authors": [
|
||||
{
|
||||
"name": "Ryan McCue",
|
||||
"homepage": "http://ryanmccue.info"
|
||||
"homepage": "https://rmccue.io/"
|
||||
},
|
||||
{
|
||||
"name": "Alain Schlesser",
|
||||
"homepage": "https://github.com/schlessera"
|
||||
},
|
||||
{
|
||||
"name": "Juliette Reinders Folmer",
|
||||
"homepage": "https://github.com/jrfnl"
|
||||
},
|
||||
{
|
||||
"name": "Contributors",
|
||||
"homepage": "https://github.com/WordPress/Requests/graphs/contributors"
|
||||
}
|
||||
],
|
||||
"description": "A HTTP library written in PHP, for human beings.",
|
||||
"homepage": "http://github.com/rmccue/Requests",
|
||||
"homepage": "https://requests.ryanmccue.info/",
|
||||
"keywords": [
|
||||
"curl",
|
||||
"fsockopen",
|
||||
|
@ -54,7 +86,12 @@
|
|||
"iri",
|
||||
"sockets"
|
||||
],
|
||||
"time": "2016-10-13 00:11:37"
|
||||
"support": {
|
||||
"docs": "https://requests.ryanmccue.info/",
|
||||
"issues": "https://github.com/WordPress/Requests/issues",
|
||||
"source": "https://github.com/WordPress/Requests"
|
||||
},
|
||||
"time": "2024-12-11T09:46:32+00:00"
|
||||
}
|
||||
],
|
||||
"packages-dev": [],
|
||||
|
@ -66,5 +103,6 @@
|
|||
"platform": {
|
||||
"php": ">=7.1"
|
||||
},
|
||||
"platform-dev": []
|
||||
"platform-dev": [],
|
||||
"plugin-api-version": "2.6.0"
|
||||
}
|
||||
|
|
|
@ -20,6 +20,10 @@
|
|||
private $debug = FALSE;
|
||||
/** Last API Response */
|
||||
private $lastResponse = NULL;
|
||||
/** Our device ID. */
|
||||
private $deviceID = NULL;
|
||||
/** Our device Name. */
|
||||
private $deviceName = NULL;
|
||||
|
||||
/**
|
||||
* Create a new MyDNSHostAPI
|
||||
|
@ -63,6 +67,20 @@
|
|||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Auth using 2FA Push.
|
||||
* This isn't a real auth type, but will get us a 2fa code to use.
|
||||
*
|
||||
* @param $user User to auth with
|
||||
* @param $pass Password to auth with
|
||||
* @return $this for chaining.
|
||||
*/
|
||||
public function doAuth2FAPush($user, $pass) {
|
||||
$auth = ['type' => 'userpass', 'user' => $user, 'pass' => $pass, '2fa_push' => true];
|
||||
|
||||
return $this->api('/session', 'GET', [], $auth);
|
||||
}
|
||||
|
||||
/**
|
||||
* Auth using a username and api key.
|
||||
*
|
||||
|
@ -98,6 +116,17 @@
|
|||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Auth using JWT Token.
|
||||
*
|
||||
* @param $token Token to auth with
|
||||
* @return $this for chaining.
|
||||
*/
|
||||
public function setAuthJWT($token) {
|
||||
$this->auth = ['type' => 'jwt', 'token' => $token];
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Auth using a custom auth method.
|
||||
*
|
||||
|
@ -109,6 +138,28 @@
|
|||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set device ID
|
||||
*
|
||||
* @param $id Device ID
|
||||
* @return $this for chaining.
|
||||
*/
|
||||
public function setDeviceID($id) {
|
||||
$this->deviceID = $id;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set device Name
|
||||
*
|
||||
* @param $name Device Name
|
||||
* @return $this for chaining.
|
||||
*/
|
||||
public function setDeviceName($name) {
|
||||
$this->deviceName = $name;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Impersonate a user
|
||||
*
|
||||
|
@ -148,11 +199,13 @@
|
|||
* Register a new account.
|
||||
*
|
||||
* @param $email Email address
|
||||
* @param $name Real namereturn isset($result['response']) ? $result['response'] : NULL;/sessi
|
||||
* @param $name Real name
|
||||
* @param $acceptTerms Do we accept the terms of registration?
|
||||
* @return Data from API
|
||||
*/
|
||||
public function register($email, $name) {
|
||||
return $this->api('/register', 'POST', ['email' => $email, 'realname' => $name]);
|
||||
public function register($email, $name, $acceptTerms = false) {
|
||||
$registrationData = ['email' => $email, 'realname' => $name, 'acceptterms' => $acceptTerms];
|
||||
return $this->api('/register', 'POST', $registrationData);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -177,6 +230,16 @@
|
|||
return $this->api('/users/' . $userid . '/resendwelcome', 'POST', []);
|
||||
}
|
||||
|
||||
/**
|
||||
* Accept the terms of service.
|
||||
*
|
||||
* @param $user (Optional) User ID - defaults to self.
|
||||
* @return Data from API
|
||||
*/
|
||||
public function acceptTerms($userid = 'self') {
|
||||
return $this->api('/users/' . $userid . '/acceptterms', 'POST', ['acceptterms' => "true"]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Submit a password reset request
|
||||
*
|
||||
|
@ -237,6 +300,51 @@
|
|||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get system info.
|
||||
*
|
||||
* @return Result from the API.
|
||||
*/
|
||||
public function getSystemDataValue($key, $all = false) {
|
||||
if (empty($key)) { return NULL; }
|
||||
|
||||
$result = $this->api('/system/datavalue/' . $key);
|
||||
if ($all && isset($result['response'])) {
|
||||
return $result['response'];
|
||||
} else if (!$all && isset($result['response'][$key])) {
|
||||
return $result['response'][$key];
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get system stats.
|
||||
*
|
||||
* @return Result from the API.
|
||||
*/
|
||||
public function getSystemStats($type, $options) {
|
||||
if ($this->auth === FALSE) { return []; }
|
||||
|
||||
$result = $this->api('/system/stats/' . $type, 'GET', $options);
|
||||
return isset($result['response']['stats']) ? $result['response']['stats'] : [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get users statistics
|
||||
*
|
||||
* @param $type Statistics type.
|
||||
* @param $options Options to pass to statistics.
|
||||
* @param $userid User ID to get data for (Default: 'self')
|
||||
* @return Array of stats.
|
||||
*/
|
||||
public function getUserStats($type, $options = [], $userID = 'self') {
|
||||
if ($this->auth === FALSE) { return NULL; }
|
||||
|
||||
$result = $this->api('/users/' . $userID . '/stats/' . $type, 'GET', $options);
|
||||
return isset($result['response']['stats']) ? $result['response']['stats'] : [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Set information a given user id.
|
||||
*
|
||||
|
@ -287,6 +395,20 @@
|
|||
return $this->api('/users/' . $userID, 'DELETE');
|
||||
}
|
||||
|
||||
/**
|
||||
* Confirm delete the given user id
|
||||
*
|
||||
* @param $userid User ID to delete.
|
||||
* @param $confirmCode Confirmation code.
|
||||
* @param $twoFactorCode Optional twofactor code.
|
||||
* @return Result from the api
|
||||
*/
|
||||
public function deleteUserConfirm($userID, $confirmCode, $twoFactorCode = '') {
|
||||
if ($this->auth === FALSE) { return []; }
|
||||
|
||||
return $this->api('/users/' . $userID . '/confirm/' . $confirmCode . (!empty($twoFactorCode) ? '/' . $twoFactorCode : ''), 'DELETE');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get API Keys for a user
|
||||
*
|
||||
|
@ -340,6 +462,32 @@
|
|||
return $this->api('/users/' . $userid . '/keys/' . $key, 'DELETE');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get 2FA Devices for the current user
|
||||
*
|
||||
* @param $userid User ID to get devices for
|
||||
* @return Array of 2FA devices.
|
||||
*/
|
||||
public function get2FADevices($userid = 'self') {
|
||||
if ($this->auth === FALSE) { return NULL; }
|
||||
|
||||
$result = $this->api('/users/' . $userid . '/2fadevices');
|
||||
return isset($result['response']) ? $result['response'] : (isset($result['error']) ? NULL : []);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a 2FA Device.
|
||||
*
|
||||
* @param $key Device to delete
|
||||
* @param $userid User ID to delete device for
|
||||
* @return Result of delete operation.
|
||||
*/
|
||||
public function delete2FADevice($device, $userid = 'self') {
|
||||
if ($this->auth === FALSE) { return []; }
|
||||
|
||||
return $this->api('/users/' . $userid . '/2fadevices/' . $device, 'DELETE');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get 2FA Keys for the current user
|
||||
*
|
||||
|
@ -407,6 +555,72 @@
|
|||
return $this->api('/users/' . $userid . '/2fa/' . $key, 'DELETE');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Custom Data for the current user
|
||||
*
|
||||
* @param $userid User ID to get data for
|
||||
* @return Array of Custom Data.
|
||||
*/
|
||||
public function getCustomDataList($userid = 'self') {
|
||||
if ($this->auth === FALSE) { return NULL; }
|
||||
|
||||
$result = $this->api('/users/' . $userid . '/customdata');
|
||||
return isset($result['response']) ? $result['response'] : (isset($result['error']) ? NULL : []);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create/Update a Custom Data Value.
|
||||
*
|
||||
* @param $key Key to create/update
|
||||
* @param $value Data to use for the create/update
|
||||
* @param $userid User ID to create/update for
|
||||
* @return Result of update operation.
|
||||
*/
|
||||
public function setCustomData($key, $value, $userid = 'self') {
|
||||
if ($this->auth === FALSE) { return []; }
|
||||
|
||||
return $this->api('/users/' . $userid . '/customdata/' . $key, 'POST', ['value' => $value]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a Custom Data Value.
|
||||
*
|
||||
* @param $key Key to get
|
||||
* @param $userid User ID to get for
|
||||
* @return Result of update operation.
|
||||
*/
|
||||
public function getCustomData($key, $userid = 'self') {
|
||||
if ($this->auth === FALSE) { return []; }
|
||||
|
||||
$result = $this->api('/users/' . $userid . '/customdata/' . $key, 'GET');
|
||||
return isset($result['response']['value']) ? $result['response']['value'] : NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a Custom Data Value.
|
||||
*
|
||||
* @param $key Key to delete
|
||||
* @param $userid User ID to delete key for
|
||||
* @return Result of delete operation.
|
||||
*/
|
||||
public function deleteCustomData($key, $userid = 'self') {
|
||||
if ($this->auth === FALSE) { return []; }
|
||||
|
||||
return $this->api('/users/' . $userid . '/customdata/' . $key, 'DELETE');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a JWT Token from the backend
|
||||
*
|
||||
* @return Backend JWT Token or null if we are not authed.
|
||||
*/
|
||||
public function getJWTToken() {
|
||||
if ($this->auth === FALSE) { return NULL; }
|
||||
|
||||
$result = $this->api('/session/jwt');
|
||||
return isset($result['response']['token']) ? $result['response']['token'] : NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a session ID from the backend
|
||||
*
|
||||
|
@ -437,7 +651,7 @@
|
|||
* @param $value (Default: true) Set value for domain admin override.
|
||||
*/
|
||||
public function domainAdmin($value = true) {
|
||||
$this->domainAdmin = true;
|
||||
$this->domainAdmin = $value;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
@ -445,12 +659,17 @@
|
|||
/**
|
||||
* Get list of our domains.
|
||||
*
|
||||
* @param $queryParams (Optional) Array of query params to use.
|
||||
* @return Array of domains or an empty array.
|
||||
*/
|
||||
public function getDomains() {
|
||||
public function getDomains($queryParams = []) {
|
||||
if ($this->auth === FALSE) { return []; }
|
||||
|
||||
$result = $this->api(($this->domainAdmin ? '/admin' : '') . '/domains');
|
||||
$url = ($this->domainAdmin ? '/admin' : '') . '/domains';
|
||||
$qs = http_build_query($queryParams);
|
||||
if (!empty($qs)) { $url .= '?' . $qs; }
|
||||
|
||||
$result = $this->api($url);
|
||||
return isset($result['response']) ? $result['response'] : [];
|
||||
}
|
||||
|
||||
|
@ -520,7 +739,7 @@
|
|||
if ($this->auth === FALSE) { return []; }
|
||||
|
||||
$result = $this->api(($this->domainAdmin ? '/admin' : '') . '/domains/' . $domain . '/access');
|
||||
return isset($result['response']['access']) ? $result['response']['access'] : [];
|
||||
return isset($result['response']) ? $result['response'] : [];
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -550,11 +769,24 @@
|
|||
return isset($result['response']['stats']) ? $result['response']['stats'] : [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get domain logs
|
||||
*
|
||||
* @param $domain Domain to get logs for.
|
||||
* @return Array of logs.
|
||||
*/
|
||||
public function getDomainLogs($domain) {
|
||||
if ($this->auth === FALSE) { return []; }
|
||||
|
||||
$result = $this->api(($this->domainAdmin ? '/admin' : '') . '/domains/' . $domain . '/logs', 'GET', $options);
|
||||
return isset($result['response']) ? $result['response'] : [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Attempt to sync the domain to the backends.
|
||||
*
|
||||
* @param $domain Domain to export.
|
||||
* @return Array of records or an empty array.
|
||||
* @param $domain Domain to sync.
|
||||
* @return API Result
|
||||
*/
|
||||
public function syncDomain($domain) {
|
||||
if ($this->auth === FALSE) { return []; }
|
||||
|
@ -562,16 +794,29 @@
|
|||
return $this->api(($this->domainAdmin ? '/admin' : '') . '/domains/' . $domain . '/sync');
|
||||
}
|
||||
|
||||
/**
|
||||
* Attempt to verify a domain.
|
||||
*
|
||||
* @param $domain Domain to verify
|
||||
* @return API Result
|
||||
*/
|
||||
public function verifyDomain($domain) {
|
||||
if ($this->auth === FALSE) { return []; }
|
||||
|
||||
return $this->api(($this->domainAdmin ? '/admin' : '') . '/domains/' . $domain . '/verify');
|
||||
}
|
||||
|
||||
/**
|
||||
* Export domain as bind zone file.
|
||||
*
|
||||
* @param $domain Domain to export.
|
||||
* @param $type (Optional) Format to export as
|
||||
* @return Array of records or an empty array.
|
||||
*/
|
||||
public function exportZone($domain) {
|
||||
public function exportZone($domain, $type = NULL) {
|
||||
if ($this->auth === FALSE) { return []; }
|
||||
|
||||
$result = $this->api(($this->domainAdmin ? '/admin' : '') . '/domains/' . $domain . '/export');
|
||||
$result = $this->api(($this->domainAdmin ? '/admin' : '') . '/domains/' . $domain . '/export' . ($type !== NULL ? '/' . $type : ''));
|
||||
return isset($result['response']['zone']) ? $result['response']['zone'] : [];
|
||||
}
|
||||
|
||||
|
@ -580,12 +825,13 @@
|
|||
*
|
||||
* @param $domain Domain to import.
|
||||
* @param $zone Zonefile data
|
||||
* @param $type (Optional) Format to import from as
|
||||
* @return Array of records or an empty array.
|
||||
*/
|
||||
public function importZone($domain, $zone) {
|
||||
public function importZone($domain, $zone, $type = NULL) {
|
||||
if ($this->auth === FALSE) { return []; }
|
||||
|
||||
return $this->api(($this->domainAdmin ? '/admin' : '') . '/domains/' . $domain . '/import', 'POST', ['zone' => $zone]);
|
||||
return $this->api(($this->domainAdmin ? '/admin' : '') . '/domains/' . $domain . '/import' . ($type !== NULL ? '/' . $type : ''), 'POST', ['zone' => $zone]);
|
||||
}
|
||||
|
||||
|
||||
|
@ -599,7 +845,7 @@
|
|||
if ($this->auth === FALSE) { return []; }
|
||||
|
||||
$result = $this->api(($this->domainAdmin ? '/admin' : '') . '/domains/' . $domain . '/records');
|
||||
return isset($result['response']['records']) ? $result['response']['records'] : [];
|
||||
return isset($result['response']) ? $result['response'] : [];
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -753,6 +999,194 @@
|
|||
return $this->api(($this->domainAdmin ? '/admin' : '') . '/domains/' . $domain . '/keys/' . $key, 'DELETE');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Domain Hooks for the given domain
|
||||
*
|
||||
* @param $domain Domain to get hooks for
|
||||
* @return Array of domain hooks.
|
||||
*/
|
||||
public function getDomainHooks($domain) {
|
||||
if ($this->auth === FALSE) { return NULL; }
|
||||
|
||||
$result = $this->api(($this->domainAdmin ? '/admin' : '') . '/domains/' . $domain . '/hooks');
|
||||
return isset($result['response']) ? $result['response'] : (isset($result['error']) ? NULL : []);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new Domain Hook.
|
||||
*
|
||||
* @param $domain Domain to create hook for
|
||||
* @param $data Data to use for the create
|
||||
* @return Result of create operation.
|
||||
*/
|
||||
public function createDomainHook($domain, $data) {
|
||||
if ($this->auth === FALSE) { return []; }
|
||||
|
||||
return $this->api(($this->domainAdmin ? '/admin' : '') . '/domains/' . $domain . '/hooks', 'POST', $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a Domain Hook.
|
||||
*
|
||||
* @param $domain Domain to update hook for
|
||||
* @param $hookid Hook ID to update
|
||||
* @param $data Data to use for the update
|
||||
* @return Result of update operation.
|
||||
*/
|
||||
public function updateDomainHook($domain, $hookid, $data) {
|
||||
if ($this->auth === FALSE) { return []; }
|
||||
|
||||
return $this->api(($this->domainAdmin ? '/admin' : '') . '/domains/' . $domain . '/hooks/' . $hookid, 'POST', $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a Domain Hook.
|
||||
*
|
||||
* @param $domain Domain to delete hook for
|
||||
* @param $hookid hookid to delete
|
||||
* @return Result of delete operation.
|
||||
*/
|
||||
public function deleteDomainHook($domain, $hookid) {
|
||||
if ($this->auth === FALSE) { return []; }
|
||||
|
||||
return $this->api(($this->domainAdmin ? '/admin' : '') . '/domains/' . $domain . '/hooks/' . $hookid, 'DELETE');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get articles.
|
||||
*
|
||||
* @return Result from the API.
|
||||
*/
|
||||
public function getArticles() {
|
||||
$result = $this->api('/articles');
|
||||
return isset($result['response']) ? $result['response'] : [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all articles.
|
||||
*
|
||||
* @return Result from the API.
|
||||
*/
|
||||
public function getAllArticles() {
|
||||
if ($this->auth === FALSE) { return []; }
|
||||
|
||||
$result = $this->api('/admin/articles');
|
||||
return isset($result['response']) ? $result['response'] : [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Crate a new article.
|
||||
*
|
||||
* @param $data Data for create
|
||||
* @return Result from the API.
|
||||
*/
|
||||
public function createArticle($data) {
|
||||
if ($this->auth === FALSE) { return []; }
|
||||
|
||||
return $this->api('/admin/articles', 'POST', $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a specific article.
|
||||
*
|
||||
* @param $articleid Article to get
|
||||
* @return Result from the API.
|
||||
*/
|
||||
public function getArticle($articleid) {
|
||||
if ($this->auth === FALSE) { return []; }
|
||||
|
||||
$result = $this->api('/admin/articles/' . $articleid);
|
||||
return isset($result['response']) ? $result['response'] : [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a specific article.
|
||||
*
|
||||
* @param $articleid Article to update
|
||||
* @param $data Data for update
|
||||
* @return Result from the API.
|
||||
*/
|
||||
public function updateArticle($articleid, $data) {
|
||||
if ($this->auth === FALSE) { return []; }
|
||||
|
||||
return $this->api('/admin/articles/' . $articleid, 'POST', $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a specific article.
|
||||
*
|
||||
* @param $articleid Article to delete
|
||||
* @return Result from the API.
|
||||
*/
|
||||
public function deleteArticle($articleid) {
|
||||
if ($this->auth === FALSE) { return []; }
|
||||
|
||||
return $this->api('/admin/articles/' . $articleid, 'DELETE');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all blockregexes.
|
||||
*
|
||||
* @return Result from the API.
|
||||
*/
|
||||
public function getAllBlockRegexes() {
|
||||
if ($this->auth === FALSE) { return []; }
|
||||
|
||||
$result = $this->api('/admin/blockregexes');
|
||||
return isset($result['response']) ? $result['response'] : [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new blockregex.
|
||||
*
|
||||
* @param $data Data for create
|
||||
* @return Result from the API.
|
||||
*/
|
||||
public function createBlockRegex($data) {
|
||||
if ($this->auth === FALSE) { return []; }
|
||||
|
||||
return $this->api('/admin/blockregexes', 'POST', $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a specific blockregex.
|
||||
*
|
||||
* @param $blockregexid BlockRegex to get
|
||||
* @return Result from the API.
|
||||
*/
|
||||
public function getBlockRegex($blockregexid) {
|
||||
if ($this->auth === FALSE) { return []; }
|
||||
|
||||
$result = $this->api('/admin/blockregexes/' . $blockregexid);
|
||||
return isset($result['response']) ? $result['response'] : [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a specific blockregex.
|
||||
*
|
||||
* @param $blockregexid BlockRegex to update
|
||||
* @param $data Data for update
|
||||
* @return Result from the API.
|
||||
*/
|
||||
public function updateBlockRegex($blockregexid, $data) {
|
||||
if ($this->auth === FALSE) { return []; }
|
||||
|
||||
return $this->api('/admin/blockregexes/' . $blockregexid, 'POST', $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a specific blockregex.
|
||||
*
|
||||
* @param $blockregexid BlockRegex to delete
|
||||
* @return Result from the API.
|
||||
*/
|
||||
public function deleteBlockRegex($blockregexid) {
|
||||
if ($this->auth === FALSE) { return []; }
|
||||
|
||||
return $this->api('/admin/blockregexes/' . $blockregexid, 'DELETE');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the last response from the API
|
||||
*
|
||||
|
@ -768,28 +1202,39 @@
|
|||
* @param $apimethod API Method to poke
|
||||
* @param $method Request method to access the API with
|
||||
* @param $data (Default: []) Data to send if POST
|
||||
* @param $auth (Default: []) Custom auth data to use for just this request.
|
||||
* @return Response from the API as an array.
|
||||
*/
|
||||
private function api($apimethod, $method = 'GET', $data = []) {
|
||||
public function api($apimethod, $method = 'GET', $data = [], $auth = NULL) {
|
||||
$headers = [];
|
||||
$options = [];
|
||||
if ($this->auth !== FALSE) {
|
||||
if ($this->auth['type'] == 'session') {
|
||||
$headers['X-SESSION-ID'] = $this->auth['sessionid'];
|
||||
} else if ($this->auth['type'] == 'userkey') {
|
||||
$headers['X-API-USER'] = $this->auth['user'];
|
||||
$headers['X-API-KEY'] = $this->auth['key'];
|
||||
} else if ($this->auth['type'] == 'domainkey') {
|
||||
$headers['X-DOMAIN'] = $this->auth['domain'];
|
||||
$headers['X-DOMAIN-KEY'] = $this->auth['key'];
|
||||
} else if ($this->auth['type'] == 'userpass') {
|
||||
$options['auth'] = [$this->auth['user'], $this->auth['pass']];
|
||||
if (isset($this->auth['2fa'])) {
|
||||
$headers['X-2FA-KEY'] = $this->auth['2fa'];
|
||||
if ($auth == NULL) { $auth = $this->auth; }
|
||||
|
||||
if ($auth !== FALSE) {
|
||||
if ($auth['type'] == 'jwt') {
|
||||
$headers['Authorization'] = 'Bearer ' . $auth['token'];
|
||||
} else if ($auth['type'] == 'session') {
|
||||
$headers['X-SESSION-ID'] = $auth['sessionid'];
|
||||
} else if ($auth['type'] == 'userkey') {
|
||||
$headers['X-API-USER'] = $auth['user'];
|
||||
$headers['X-API-KEY'] = $auth['key'];
|
||||
} else if ($auth['type'] == 'domainkey') {
|
||||
$headers['X-DOMAIN'] = $auth['domain'];
|
||||
$headers['X-DOMAIN-KEY'] = $auth['key'];
|
||||
} else if ($auth['type'] == 'userpass') {
|
||||
$options['auth'] = [$auth['user'], $auth['pass']];
|
||||
if (isset($auth['2fa'])) {
|
||||
$headers['X-2FA-KEY'] = $auth['2fa'];
|
||||
}
|
||||
if (isset($auth['2fa_push'])) {
|
||||
$headers['X-2FA-PUSH'] = $auth['2fa_push'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->deviceID !== NULL) { $headers['X-2FA-DEVICE-ID'] = $this->deviceID; }
|
||||
if ($this->deviceName !== NULL) { $headers['X-2FA-SAVE-DEVICE'] = $this->deviceName; }
|
||||
|
||||
if ($this->impersonate !== FALSE) {
|
||||
if ($this->impersonateType == 'id') {
|
||||
$headers['X-IMPERSONATE-ID'] = $this->impersonate;
|
||||
|
@ -802,6 +1247,22 @@
|
|||
|
||||
try {
|
||||
if ($method == 'GET') {
|
||||
if (!is_array($data)) {
|
||||
$data = empty($data) ? [] : ['data' => $data];
|
||||
}
|
||||
|
||||
if (count($data) > 0) {
|
||||
$url = parse_url($url);
|
||||
if (isset($url['query'])) {
|
||||
$query = [];
|
||||
parse_str($url['query'], $query);
|
||||
$url['query'] = http_build_query(array_merge($query, $data));
|
||||
} else {
|
||||
$url['query'] = http_build_query($data);
|
||||
}
|
||||
$url = $this->unparse_url($url);
|
||||
}
|
||||
|
||||
$response = Requests::get($url, $headers, $options);
|
||||
} else if ($method == 'POST') {
|
||||
$response = Requests::post($url, $headers, json_encode(['data' => $data]), $options);
|
||||
|
@ -829,4 +1290,23 @@
|
|||
$this->lastResponse = $data;
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Take an array from parse_url and turn it back into a URL.
|
||||
*
|
||||
* @param $parsed_url Array from parse_url.
|
||||
* @return String representing the URL.
|
||||
*/
|
||||
function unparse_url($parsed_url) {
|
||||
$scheme = isset($parsed_url['scheme']) ? $parsed_url['scheme'] . '://' : '';
|
||||
$host = isset($parsed_url['host']) ? $parsed_url['host'] : '';
|
||||
$port = isset($parsed_url['port']) ? ':' . $parsed_url['port'] : '';
|
||||
$user = isset($parsed_url['user']) ? $parsed_url['user'] : '';
|
||||
$pass = isset($parsed_url['pass']) ? ':' . $parsed_url['pass'] : '';
|
||||
$pass = ($user || $pass) ? "$pass@" : '';
|
||||
$path = isset($parsed_url['path']) ? $parsed_url['path'] : '';
|
||||
$query = isset($parsed_url['query']) ? '?' . $parsed_url['query'] : '';
|
||||
$fragment = isset($parsed_url['fragment']) ? '#' . $parsed_url['fragment'] : '';
|
||||
return "$scheme$user$pass$host$port$path$query$fragment";
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue