PluginProbe
Boxzilla – WordPress Popup Builder / 3.1.9
Boxzilla – WordPress Popup Builder v3.1.9
3.4.11 3.4.10 3.4.9 3.4.3 3.4.4 3.4.5 3.4.6 3.4.7 3.4.8 trunk 3.0 3.0.1 3.0.2 3.0.3 3.1 3.1.1 3.1.10 3.1.11 3.1.12 3.1.13 3.1.14 3.1.15 3.1.16 3.1.17 3.1.18 All 72 releases
← All changes | src/licensing/class-api.php +145 -154 3.4.53.1.9 View file →
@@ -5,179 +5,170 @@
5 5 use Boxzilla\Plugin;
6 6 use Exception;
7 7 use WP_Error;
8 8
9 -class API
10 -{
11 - /**
12 - * @var License
13 - */
14 - protected $license;
9 +class API {
15 10
16 - /**
17 - * The API url
18 - *
19 - * @var string
20 - */
21 - public $url = '';
11 + /**
12 + * @var License
13 + */
14 + protected $license;
22 15
23 - /**
24 - * @var int
25 - */
26 - protected $error_code = 0;
16 + /**
17 + * The API url
18 + *
19 + * @var string
20 + */
21 + public $url = '';
27 22
28 - /**
29 - * @var string
30 - */
31 - protected $error_message = '';
23 + /**
24 + * @var int
25 + */
26 + protected $error_code = 0;
32 27
33 - /**
34 - * @var
35 - */
36 - protected $last_response;
28 + /**
29 + * @var string
30 + */
31 + protected $error_message = '';
37 32
38 - /**
39 - * @param string $url
40 - * @param License $license
41 - */
42 - public function __construct($url, License $license)
43 - {
44 - $this->url = $url;
45 - $this->license = $license;
46 - }
33 + /**
34 + * @var
35 + */
36 + protected $last_response;
47 37
48 - /**
49 - * Gets license status
50 - *
51 - * @return object
52 - */
53 - public function get_license()
54 - {
55 - $endpoint = '/license';
56 - $response = $this->request('GET', $endpoint);
57 - return $response;
58 - }
38 + /**
39 + * @param string $url
40 + * @param License $license
41 + */
42 + public function __construct( $url, License $license ) {
43 + $this->url = $url;
44 + $this->license = $license;
45 + }
59 46
47 + /**
48 + * Gets license status
49 + *
50 + * @return object
51 + */
52 + public function get_license() {
53 + $endpoint = '/license';
54 + $response = $this->request( 'GET', $endpoint );
55 + return $response;
56 + }
60 57
61 - /**
62 - * Logs the current site in to the remote API
63 - *
64 - * @return object
65 - */
66 - public function activate_license()
67 - {
68 - $endpoint = '/license/activations';
69 - $args = [
70 - 'site_url' => get_option('siteurl'),
71 - ];
72 - $response = $this->request('POST', $endpoint, $args);
73 - return $response;
74 - }
75 58
76 - /**
77 - * Logs the current site out of the remote API
78 - *
79 - * @return object
80 - */
81 - public function deactivate_license()
82 - {
83 - $endpoint = sprintf('/license/activations/%s', $this->license->activation_key);
84 - $response = $this->request('DELETE', $endpoint);
85 - return $response;
86 - }
59 + /**
60 + * Logs the current site in to the remote API
61 + *
62 + * @return object
63 + */
64 + public function activate_license() {
65 + $endpoint = '/license/activations';
66 + $args = array(
67 + 'site_url' => get_option( 'siteurl' )
68 + );
69 + $response = $this->request( 'POST', $endpoint, $args );
70 + return $response;
71 + }
87 72
88 - /**
89 - * @param Plugin $plugin
90 - * @return object
91 - */
92 - public function get_plugin(Plugin $plugin)
93 - {
94 - $endpoint = sprintf('/plugins/%s?format=wp', $plugin->id());
95 - $response = $this->request('GET', $endpoint);
96 - return $response;
97 - }
73 + /**
74 + * Logs the current site out of the remote API
75 + *
76 + * @return object
77 + */
78 + public function deactivate_license() {
79 + $endpoint = sprintf( '/license/activations/%s', $this->license->activation_key );
80 + $response = $this->request( 'DELETE', $endpoint );
81 + return $response;
82 + }
98 83
99 - /**
100 - * @param Plugin[] $plugins (optional)
101 - * @return object
102 - */
103 - public function get_plugins($plugins = null)
104 - {
105 - $args = [
106 - 'format' => 'wp',
107 - ];
84 + /**
85 + * @param Plugin $plugin
86 + * @return object
87 + */
88 + public function get_plugin( Plugin $plugin ) {
89 + $endpoint = sprintf( '/plugins/%s?format=wp', $plugin->id() );
90 + $response = $this->request( 'GET', $endpoint );
91 + return $response;
92 + }
108 93
109 - $endpoint = add_query_arg($args, '/plugins');
110 - $response = $this->request('GET', $endpoint);
111 - return $response;
112 - }
94 + /**
95 + * @param Plugin[] $plugins (optional)
96 + * @return object
97 + */
98 + public function get_plugins( $plugins = null ) {
113 99
114 - /**
115 - * @param string $method
116 - * @param string $endpoint
117 - * @param array $data
118 - *
119 - * @return object|array
120 - */
121 - public function request($method, $endpoint, $data = [])
122 - {
123 - $url = $this->url . $endpoint;
124 - $args = [
125 - 'method' => $method,
126 - 'headers' => [
127 - 'Content-Type' => 'application/json',
128 - 'Accepts' => 'application/json',
129 - ],
130 - 'timeout' => 10,
131 - ];
100 + $args = array(
101 + 'format' => 'wp',
102 + );
132 103
133 - // add license key to headers if set
134 - if (! empty($this->license->key)) {
135 - $args['headers']['Authorization'] = 'Bearer ' . urlencode($this->license->key);
136 - }
104 + // create array of plugin sids if given
105 + if( $plugins ) {
106 + $plugin_slugs = $plugins->map(function( $p ) { return $p->id(); });
107 + $args['sids'] = implode(',', $plugin_slugs );
108 + }
137 109
138 - if (! empty($data)) {
139 - if (in_array($method, [ 'GET', 'DELETE' ], true)) {
140 - $url = add_query_arg($data, $url);
141 - } else {
142 - $args['body'] = json_encode($data);
143 - }
144 - }
110 + $endpoint = add_query_arg( $args, '/plugins' );
111 + $response = $this->request( 'GET', $endpoint );
112 + return $response;
113 + }
145 114
146 - $response = wp_remote_request($url, $args);
147 - return $this->parse_response($response);
148 - }
115 + /**
116 + * @param string $method
117 + * @param string $endpoint
118 + * @param array $data
119 + *
120 + * @return object|array
121 + */
122 + public function request( $method, $endpoint, $data = array() ) {
149 123
150 - /**
151 - * @param mixed $response
152 - *
153 - * @return object|null
154 - *
155 - * @throws API_Exception
156 - */
157 - public function parse_response($response)
158 - {
159 - // test for wp errors (request failures)
160 - if ($response instanceof WP_Error) {
161 - throw new API_Exception($response->get_error_message());
162 - }
124 + $url = $this->url . $endpoint;
125 + $args = array(
126 + 'method' => $method,
127 + 'headers' => array(),
128 + );
163 129
164 - // retrieve response body
165 - $body = wp_remote_retrieve_body($response);
166 - if (empty($body)) {
167 - return null;
168 - }
130 + // add license key to headers if set
131 + if( ! empty( $this->license->key ) ) {
132 + $args['headers']['Authorization'] = 'Bearer ' . urlencode( $this->license->key );
133 + }
169 134
170 - $json = json_decode($body, false);
171 - if (is_null($json)) {
172 - throw new API_Exception(esc_html__('The Boxzilla server returned an invalid response.', 'boxzilla'));
173 - }
135 + if( in_array( $method, array( 'GET', 'DELETE' ) ) ) {
136 + $url = add_query_arg( $data, $url );
137 + } else {
138 + $args['body'] = $data;
139 + }
174 140
175 - // did request return an error response?
176 - if (wp_remote_retrieve_response_code($response) >= 400) {
177 - throw new API_Exception($json->message, $json->code);
178 - }
141 + $response = wp_remote_request( $url, $args );
142 + return $this->parse_response( $response );
143 + }
179 144
180 - // return actual response data
181 - return $json;
182 - }
183 -}
145 + /**
146 + * @param mixed $response
147 + *
148 + * @return object|null
149 + *
150 + * @throws API_Exception
151 + */
152 + public function parse_response( $response ) {
153 + // test for wp errors
154 + if( $response instanceof WP_Error) {
155 + throw new API_Exception( $response->get_error_message() );
156 + }
157 +
158 + // retrieve response body
159 + $body = wp_remote_retrieve_body( $response );
160 + $json = json_decode( $body );
161 + if( ! is_object( $json ) ) {
162 + throw new API_Exception( __( "The Boxzilla server returned an invalid response.", 'boxzilla' ) );
163 + }
164 +
165 + // did request return an error response?
166 + if( isset( $json->error ) ) {
167 + throw new API_Exception( $json->error->message, $json->error->code );
168 + }
169 +
170 + // return actual response data
171 + return $json->data;
172 + }
173 +
174 +}