PluginProbe
WPGet API – Connect to any external REST API / 1.7.0
WPGet API – Connect to any external REST API v1.7.0
1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.1.0 2.1.1 2.1.3 2.1.4 2.1.5 2.2.0 2.2.1 2.2.10 2.2.2 2.2.3 All 97 releases
← All changes | includes/class-api.php +75 -458 2.1.41.7.0 View file →
@@ -28,11 +28,8 @@
28 28 public $header_parameters = ''; // the header paramaters
29 29 public $body_parameters = ''; // the body paramaters
30 30 public $body_json_encode = ''; // body_json_encode body
31 31 public $body_url_encode = ''; // urlencode body
32 - public $body_base64_encode = ''; // base64 encode body
33 - public $body_xml_format = ''; // xml format body
34 - public $xml_root_node = 'root'; // root node for xml
35 32
36 33 public $response = ''; // the returned response
37 34
38 35 public $final_url = ''; // final URL
@@ -37,17 +34,13 @@
37 34
38 35 public $final_url = ''; // final URL
39 36 public $final_request_args = array(); // final request_args
40 37
41 - public $results_format = 'json_string'; // results format
38 + public $results_format = 'json_string'; // reseults format
42 39
43 - public $response_code = ''; // the response code from the call
44 -
45 40 public $timeout = 10; // the timeout
46 - public $sslverify = 1; // ssl verify
41 + public $sslverify = 1; // the paramaters
47 42 public $debug = false;
48 -
49 - public $pro_plugin = false;
50 43
51 44
52 45 /**
53 46 * Main constructor
@@ -65,12 +58,10 @@
65 58 $this->endpoint_id = sanitize_text_field( $endpoint_id );
66 59 $this->keys = $keys;
67 60 $this->args = $args;
68 61
69 - $this->pro_plugin = is_plugin_active( 'wpgetapi-extras/wpgetapi-extras.php' ) ? true : false;
62 + add_filter( 'wpgetapi_raw_data', array( $this, 'maybe_add_debug_info' ), 5, 2 );
70 63
71 - add_filter( 'wpgetapi_raw_data', array( $this, 'maybe_add_debug_info' ), 99, 2 );
72 -
73 64 }
74 65
75 66
76 67 /**
@@ -77,29 +68,8 @@
77 68 * Init our api data
78 69 */
79 70 public function init() {
80 71
81 - // if we are doing importer plugin,
82 - // we need to intercept and modify most of our methods values
83 - if( $this->api_id === 'wpgetapi_importer' ) {
84 -
85 - $data = apply_filters( 'wpgetapi_api_importer_init', $this );
86 -
87 - if( $data ) {
88 -
89 - foreach ($data as $key => $value) {
90 - $this->{$key} = $value;
91 - }
92 -
93 - $this->query_parameters = ! empty( $this->query_parameters ) ? $this->do_parameters( $this->query_parameters ) : array();
94 - $this->header_parameters = ! empty( $this->header_parameters ) ? $this->do_parameters( $this->header_parameters ) : array();
95 - $this->body_parameters = ! empty( $this->body_parameters ) ? $this->do_parameters( $this->body_parameters ) : array();
96 - return;
97 -
98 - }
99 -
100 - }
101 -
102 72 // do some checks
103 73 if( empty( $this->setup ) || ! isset( $this->setup['apis'] ) || empty( $this->setup['apis'] ) )
104 74 return 'No API found.';
105 75
@@ -118,9 +88,9 @@
118 88 // loop through endpoints
119 89 foreach ( $this->api['endpoints'] as $index => $endpoint ) {
120 90
121 91 if( $this->endpoint_id == $endpoint['id'] ) {
122 -
92 +
123 93 $this->method = isset( $endpoint['method'] ) && $endpoint['method'] != '' ? sanitize_text_field( $endpoint['method'] ) : 'GET';
124 94 $this->cache_time = isset( $endpoint['cache_time'] ) && ! empty( $endpoint['cache_time'] ) ? absint( $endpoint['cache_time'] ) : '';
125 95 $this->endpoint = isset( $endpoint['endpoint'] ) && ! empty( $endpoint['endpoint'] ) ? sanitize_text_field( $endpoint['endpoint'] ) : '';
126 96
@@ -129,40 +99,13 @@
129 99 $this->header_parameters = isset( $endpoint['header_parameters'] ) && ! empty( $endpoint['header_parameters'] ) ? $this->do_parameters( $endpoint['header_parameters'] ) : array();
130 100
131 101 $this->body_parameters = isset( $endpoint['body_parameters'] ) && ! empty( $endpoint['body_parameters'] ) ? $this->do_parameters( $endpoint['body_parameters'] ) : array();
132 102
133 - // how to encode the body
134 103 $this->body_json_encode = isset( $endpoint['body_json_encode'] ) && $endpoint['body_json_encode'] == 'true' ? true : false;
135 104 $this->body_url_encode = isset( $endpoint['body_json_encode'] ) && $endpoint['body_json_encode'] == 'url' ? true : false;
136 - $this->body_base64_encode = isset( $endpoint['body_json_encode'] ) && $endpoint['body_json_encode'] == 'base64' ? true : false;
137 - $this->body_xml_format = isset( $endpoint['body_json_encode'] ) && $endpoint['body_json_encode'] == 'xml' ? true : false;
138 105
139 - $this->xml_root_node = isset( $endpoint['xml_root'] ) && ! empty( $endpoint['xml_root'] ) ? $endpoint['xml_root'] : $this->xml_root_node;
140 -
141 106 $this->results_format = isset( $endpoint['results_format'] ) ? sanitize_text_field( $endpoint['results_format'] ) : $this->results_format;
142 -
143 -
144 - if(
145 - // set the format to php array data if html format is set
146 - ( isset( $this->args['format'] ) && $this->args['format'] == 'html' && $this->results_format != 'xml_array' ) ||
147 - // set the format to php array data if it is set in the args (coming from the importer)
148 - ( isset( $this->args['results_format'] ) && $this->args['results_format'] == 'json_decoded' )
149 - ) {
150 - $this->results_format = 'json_decoded';
151 - }
152 -
153 - // set the format to JSON string if it is set in the args (coming from the wpdatatables integration)
154 - if( isset( $this->args['results_format'] ) && $this->args['results_format'] == 'json_string' ) {
155 - $this->results_format = 'json_string';
156 - }
157 -
158 - // set the format to JSON string if it is set in the args (coming from the wpdatatables integration)
159 - if( isset( $this->args['results_format'] ) && $this->args['results_format'] == 'json_decoded' ) {
160 - $this->results_format = 'json_decoded';
161 - }
162 -
163 107 }
164 -
165 108 }
166 109
167 110 $this->timeout = isset( $this->api['timeout'] ) && ! empty( $this->api['timeout'] ) ? $this->api['timeout'] : $this->timeout;
168 111 $this->sslverify = isset( $this->api['sslverify'] ) ? absint( $this->api['sslverify'] ) : $this->sslverify;
@@ -175,21 +118,58 @@
175 118 *
176 119 * @param string $field Field to retrieve
177 120 */
178 121 public function endpoint_output() {
122 + return $this->do_the_call();
123 + }
179 124
180 - do_action( 'wpgetapi_before_do_the_call', $this );
181 125
182 - return $this->do_the_call();
126 + /**
127 + * Sort out the parameters if they exist
128 + */
129 + public function do_parameters( $parameters ) {
130 +
131 + $new_array = array();
132 + $parameters = $this->decrypt($parameters);
183 133
134 + if( is_array( $parameters ) ) {
135 + foreach ( $parameters as $key => $parameter ) {
136 + if( ! empty( $parameter['name'] ) && ! empty( $parameter['value'] ) ) {
137 + $parameter['value'] = stripslashes( $parameter['value'] );
138 + $new_array[ sanitize_text_field( $parameter['name'] ) ] = $parameter['value'];
139 + }
140 + }
141 + }
142 +
143 + // look for array or json string and sort these out - for using such things in shortcode
144 + if( is_array( $new_array ) ) {
145 +
146 + foreach ( $new_array as $key => $value ) {
147 +
148 + // checking if the parameters have a json string
149 + if ( substr( $value, 0, 1 ) === '{' && substr( $value, -1 ) === '}' ) {
150 + $new_array[ $key ] = json_decode( $value, true);
151 + }
152 +
153 + // checking if the parameters have an array within the string
154 + // if they do, create them as an actual array
155 + if ( substr( $value, 0, 1 ) === '[' && substr( $value, -1 ) === ']' ) {
156 + $new_array[ $key ] = array( $value );
157 + }
158 +
159 + }
160 +
161 + }
162 +
163 + return $new_array;
164 +
184 165 }
185 166
186 -
187 167 /**
188 168 * Send the request and return our data
189 169 */
190 170 public function do_the_call() {
191 -
171 +
192 172 $this->init();
193 173
194 174 // build the URL
195 175 $this->final_url = apply_filters( 'wpgetapi_final_url', $this->build_url(), $this );
@@ -195,18 +175,9 @@
195 175 $this->final_url = apply_filters( 'wpgetapi_final_url', $this->build_url(), $this );
196 176
197 177 // build the request args
198 178 $this->final_request_args = apply_filters( 'wpgetapi_final_request_args', $this->build_request_args(), $this );
199 -
200 - /**
201 - * Check if we should stop or not. Setting $on to true, will stop us calling the api.
202 - * @param bool $on Whether on is set or not.
203 - */
204 179
205 - if ( apply_filters( 'wpgetapi_should_we_stop', false, $this ) ) {
206 - return;
207 - }
208 -
209 180 // POST request
210 181 if( $this->method == 'POST' )
211 182 $this->response = $this->POST_request();
212 183
@@ -213,20 +184,12 @@
213 184 // PUT request
214 185 if( $this->method == 'PUT' )
215 186 $this->response = $this->PUT_request();
216 187
217 - // PATCH request
218 - if( $this->method == 'PATCH' )
219 - $this->response = $this->PATCH_request();
220 -
221 188 // GET request
222 189 if( $this->method == 'GET' )
223 190 $this->response = $this->GET_request();
224 191
225 - // DELETE request
226 - if( $this->method == 'DELETE' )
227 - $this->response = $this->DELETE_request();
228 -
229 192 // wp error
230 193 if( is_wp_error( $this->response ) ) {
231 194 return apply_filters( 'wpgetapi_raw_error_data', json_encode( $this->response ), $this );
232 195 }
@@ -231,24 +194,21 @@
231 194 return apply_filters( 'wpgetapi_raw_error_data', json_encode( $this->response ), $this );
232 195 }
233 196
234 197 // get response_code
235 - $this->response_code = wp_remote_retrieve_response_code( $this->response );
198 + $response_code = wp_remote_retrieve_response_code( $this->response );
236 199
237 200 // action to intercept call depending on response_code
238 - $this->response = apply_filters( 'wpgetapi_before_retrieve_body', $this->response, $this->response_code, $this );
201 + $this->response = apply_filters( 'wpgetapi_before_retrieve_body', $this->response, $response_code, $this );
239 202
240 203 // get body
241 204 // modified in version 1.6.1 to allow for OAuth 2.0 plugin returning body already
242 205 $data = isset( $this->response['body'] ) ? $this->response['body'] : $this->response;
243 -
206 +
244 207 // returning in JSON format
245 208 if( $this->results_format == 'json_string' || $this->results_format == 'json_decoded' )
246 209 $data = $this->return_data( $data );
247 210
248 - if( $data === 'null' )
249 - $data = 'Result is null. Check that all endpoint settings are correct.';
250 -
251 211 return apply_filters( 'wpgetapi_raw_data', $data, $this );
252 212
253 213 }
254 214
@@ -261,23 +221,10 @@
261 221 // first make sure our endpoint starts with a slash
262 222 if ( substr( $this->endpoint, 0, 1 ) != '/' )
263 223 $this->endpoint = '/' . $this->endpoint;
264 224
265 - // if we have item_key from api to posts plugin
266 - // replace our keyword with the actual item_key value
267 - if ( isset( $this->args['item_key'] ) && strpos( $this->endpoint, '(importer:item_key)' ) !== false ) {
268 - $this->endpoint = str_replace( '(importer:item_key)', $this->args['item_key'], $this->endpoint );
269 - }
270 -
271 - $this->endpoint = apply_filters( 'wpgetapi_endpoint', $this->endpoint, $this );
272 -
273 225 $url = untrailingslashit( $this->base_url ) . $this->endpoint;
274 226
275 - // if we have a URL pagination event from the import plugin
276 - // we need to modify the URL here
277 - if( isset( $this->args['paginate_url'] ) )
278 - $url = $this->args['paginate_url'];
279 -
280 227 // filter our params - added for use in Oauth 2.0 plugin
281 228 $params = apply_filters( 'wpgetapi_query_parameters', $this->query_parameters, $this );
282 229
283 230 // add empty array - was getting errors if it was just null or false
@@ -282,12 +229,10 @@
282 229
283 230 // add empty array - was getting errors if it was just null or false
284 231 $params = empty( $params ) ? array(''=>'') : $params;
285 232
286 - $result = add_query_arg( $params, $url );
233 + return add_query_arg( $params, $url );
287 234
288 - return $result;
289 -
290 235 }
291 236
292 237
293 238 /**
@@ -301,60 +246,26 @@
301 246 ), $this );
302 247
303 248
304 249 // if doing POST request, include body paramters
305 - if( $this->method == 'POST' || $this->method == 'PUT' || $this->method == 'DELETE' || $this->method == 'PATCH' ) {
250 + if( $this->method == 'POST' || $this->method == 'PUT' ) {
251 +
252 + $this->body_parameters = apply_filters( 'wpgetapi_body_parameters', $this->body_parameters, $this );
306 253
307 - // tokens are sent through here
308 - $this->body_parameters = apply_filters( 'wpgetapi_body_parameters', $this->body_parameters, $this );
309 -
310 - // do we json_encode the entire body
311 - if( $this->body_json_encode == true ) {
254 + // do we json_encode the entire body as a string
255 + if( $this->body_json_encode == true )
312 256 $this->body_parameters = json_encode( $this->body_parameters );
313 - }
314 257
315 - // do we urlencode the entire body
316 - if( $this->body_parameters && $this->body_url_encode == true ) {
317 -
318 - // checking if the parameters have a json string (raw)
319 - if (
320 - ( ! is_array( $this->body_parameters ) ) &&
321 - ( substr( $this->body_parameters, 0, 1 ) === '{' || substr( $this->body_parameters, 0, 1 ) === '[' )
322 - ) {
323 - $this->body_parameters = json_decode( $this->body_parameters, true );
258 +
259 + // do we urlencode the entire body as a string
260 + if( $this->body_url_encode == true ) {
261 + $data_raw = '';
262 + foreach ($this->body_parameters as $key => $value){
263 + $data_raw = $data_raw . $key . "=" . urlencode($value) . "&";
324 264 }
325 -
326 - $this->body_parameters = http_build_query( $this->body_parameters, '', '&' );
327 -
265 + $this->body_parameters = $data_raw;
328 266 }
329 267
330 - // do we xml the entire body
331 - if( $this->body_parameters && $this->body_xml_format == true ) {
332 -
333 - $root_node = $this->xml_root_node != '' ? '<' . $this->xml_root_node . '/>' : '';
334 -
335 - $xml_element = apply_filters( 'wpgetapi_xml_element', '<?xml version="1.0" encoding="UTF-8"?>' . $root_node );
336 -
337 - $xml = new SimpleXmlElement( $xml_element );
338 -
339 - foreach( $this->body_parameters as $key => $value) {
340 - $xml->addChild( $key, $value );
341 - }
342 -
343 - $this->body_parameters = $xml->asXML();
344 -
345 - }
346 -
347 - // do we base64 encode the entire body
348 - if( $this->body_parameters && $this->body_base64_encode == true ) {
349 -
350 - $this->body_parameters = is_array( $this->body_parameters ) ? json_encode( $this->body_parameters ) : $this->body_parameters;
351 - $this->body_parameters = base64_encode( $this->body_parameters );
352 -
353 - }
354 -
355 - $this->body_parameters = apply_filters( 'wpgetapi_modify_formatted_body_parameters', $this->body_parameters, $this );
356 -
357 268 // add our body parameters
358 269 if( $this->body_parameters && ! empty( $this->body_parameters ) )
359 270 $headers['body'] = $this->body_parameters;
360 271
@@ -359,12 +270,8 @@
359 270 $headers['body'] = $this->body_parameters;
360 271
361 272 }
362 273
363 - // get our body paramters as they are formatted
364 - // this won't change anything, it just allows us to get the parameters
365 - $this->body_parameters = apply_filters( 'wpgetapi_final_body_parameters', $this->body_parameters, $this );
366 -
367 274 // add headers to our final request args
368 275 $this->final_request_args = wp_parse_args( $headers, $this->final_request_args );
369 276
370 277 // build the args taht are sent to the request
@@ -380,40 +287,27 @@
380 287
381 288 }
382 289
383 290
384 -
385 -
386 291 /**
387 292 * Do a GET request
388 293 */
389 294 public function GET_request() {
390 -
391 295 $response = '';
392 296 // so we can so something before the remote_get (caching)
393 297 $response = apply_filters( 'wpgetapi_before_get_request', $response, $this );
394 -
395 298 if( empty( $response ) )
396 299 $response = wp_remote_get( $this->final_url, $this->final_request_args );
397 300
398 301 return $response;
302 + }
399 303
400 - }
401 304
402 305 /**
403 306 * Do a POST request
404 307 */
405 308 public function POST_request() {
406 -
407 - $response = '';
408 - // so we can so something before the remote_post (caching)
409 - $response = apply_filters( 'wpgetapi_before_post_request', $response, $this );
410 -
411 - //$this->final_request_args['method'] = 'POST';
412 -
413 - if( empty( $response ) )
414 - $response = wp_remote_post( $this->final_url, $this->final_request_args );
415 -
309 + $response = wp_remote_post( $this->final_url, $this->final_request_args );
416 310 return $response;
417 311 }
418 312
419 313 /**
@@ -424,28 +318,10 @@
424 318 $response = wp_remote_request( $this->final_url, $this->final_request_args );
425 319 return $response;
426 320 }
427 321
428 - /**
429 - * Do a PATCH request
430 - */
431 - public function PATCH_request() {
432 - $this->final_request_args['method'] = 'PATCH';
433 - $response = wp_remote_request( $this->final_url, $this->final_request_args );
434 - return $response;
435 - }
436 322
437 323 /**
438 - * Do a DELETE request
439 - */
440 - public function DELETE_request() {
441 - $this->final_request_args['method'] = 'DELETE';
442 - $response = wp_remote_request( $this->final_url, $this->final_request_args );
443 - return $response;
444 - }
445 -
446 -
447 - /**
448 324 * return data
449 325 */
450 326 public function return_data( $data ) {
451 327
@@ -451,165 +327,23 @@
451 327
452 328 $data = apply_filters( 'wpgetapi_json_response_body_before_decode', $data, $this->keys );
453 329
454 330 // converts all data to arrays, removing objects
455 - if( is_string( $data ) ) {
456 - $decode = json_decode( $data, true );
457 - if( json_last_error() ) {
458 - return esc_html( $data );
459 - } else {
460 - $data = $decode;
461 - }
462 - }
463 -
331 + if( is_string( $data ) )
332 + $data = json_decode( $data, true );
333 +
464 334 $data = apply_filters( 'wpgetapi_json_response_body', $data, $this->keys );
465 335
466 336 if( $this->results_format == 'json_string' )
467 - return trim( json_encode( $data, JSON_PRETTY_PRINT ),'"');
468 -
337 + return trim( json_encode( $data ),'"');
338 +
469 339 if( $this->results_format == 'json_decoded' )
470 340 return $data;
471 341
472 342 }
473 343
474 - /**
475 - * Sort out the parameters if they exist
476 - */
477 - public function do_parameters( $parameters ) {
478 344
479 - $new_array = array();
480 - $raw = '';
481 - $parameters = $this->decrypt( $parameters );
482 -
483 - if( is_array( $parameters ) ) {
484 - foreach ( $parameters as $key => $parameter ) {
485 -
486 - if( ! empty( $parameter['name'] ) && ! empty( $parameter['value'] ) ) {
487 -
488 - $parameter['value'] = stripslashes( $parameter['value'] );
489 -
490 - // if we have wpgetapi_on, delete it so we don't send to api
491 - if( $parameter['name'] == 'wpgetapi_on' ) {
492 - unset( $parameters[ $key ] );
493 - continue;
494 - }
495 -
496 - // if we have item_key from api to posts plugin
497 - // replace our keyword with the actual item_key value
498 - if ( isset( $this->args['item_key'] ) && strpos( $parameter['value'], '(importer:item_key)' ) !== false ) {
499 - $parameter['value'] = str_replace( '(importer:item_key)', $this->args['item_key'], $parameter['value'] );
500 - }
501 -
502 - $new_array[ sanitize_text_field( $parameter['name'] ) ] = $parameter['value'];
503 -
504 - // if we are sending raw body
505 - } else if( empty( $parameter['name'] ) && ! empty( $parameter['value'] ) ) {
506 -
507 - $raw = stripslashes( $parameter['value'] );
508 -
509 - }
510 -
511 - }
512 - }
513 -
514 - // now look for array or json string and sort these out - for using such things in shortcode
515 - if( ! empty( $new_array ) ) {
516 -
517 - foreach ( $new_array as $key => $value ) {
518 -
519 - // checking if the parameters have a json string
520 - if ( strpos( $value, '{"' ) !== false && strpos( $value, '}' ) !== false ) {
521 -
522 - $tmp_val = $value;
523 - $tmp_val = json_decode( $tmp_val, true );
524 - $new_array[ $key ] = $tmp_val ? $tmp_val : $value;
525 -
526 - } else
527 -
528 - // checking if the parameters have an array within the string
529 - // if they do, create them as an actual array
530 - if ( substr( $value, 0, 1 ) === '[' && substr( $value, -1 ) === ']' ) {
531 - $value = trim( $value,"[]" );
532 - $new_array[ $key ] = array( $value );
533 - }
534 -
535 - // set value as integer
536 - if ( strpos( $value, 'integer(' ) !== false && substr( $value, -1 ) === ')' ) {
537 -
538 - preg_match("/\(([^\)]*)\)/", $value, $match );
539 - $result = trim( $match[1] );
540 -
541 - // checking if we have additional token within
542 - // and we need to send this directly to PRO plugin from here
543 - if( strpos( $value, '(' ) !== false && strpos( $value, ':' ) !== false && $this->pro_plugin ) {
544 - $result = $this->replace_tokens( $result );
545 - } else {
546 - $result = $result;
547 - }
548 -
549 - $new_array[ $key ] = absint( $result );
550 -
551 - }
552 -
553 - // set value as float
554 - if ( strpos( $value, 'float(' ) !== false && substr( $value, -1 ) === ')' ) {
555 -
556 - preg_match("/\(([^\)]*)\)/", $value, $match );
557 - $result = trim( $match[1] );
558 - if ( substr( $result, 0, 1 ) === '"' && substr( $result, -1 ) === '"' )
559 - $result = trim( $result,'""' );
560 -
561 - // checking if we have additional token within
562 - // and we need to send this directly to PRO plugin from here
563 - if( strpos( $value, '(' ) !== false && strpos( $value, ':' ) !== false && $this->pro_plugin ) {
564 - $result = $this->replace_tokens( $result );
565 - }
566 -
567 - $new_array[ $key ] = (float) $result;
568 -
569 - }
570 -
571 - // set value as boolean
572 - if ( strpos( $value, 'boolean(' ) !== false && substr( $value, -1 ) === ')' ) {
573 - preg_match("/\(([^\)]*)\)/", $value, $match );
574 - $result = $match[1];
575 -
576 - // checking if we have additional token within
577 - // and we need to send this directly to PRO plugin from here
578 - if( strpos( $value, '(' ) !== false && strpos( $value, ':' ) !== false && $this->pro_plugin ) {
579 - $result = $this->replace_tokens( $result );
580 - } else {
581 - $result = $result;
582 - }
583 -
584 - $result = filter_var( $result, FILTER_VALIDATE_BOOLEAN );
585 -
586 - $new_array[ $key ] = $result;
587 -
588 - }
589 -
590 - }
591 -
592 - }
593 -
594 - return $raw ? $raw : $new_array;
595 -
596 - }
597 -
598 -
599 345 /**
600 - * Do a direct token replacement if PRO plugin installed and is required.
601 - */
602 - public function replace_tokens( $value ) {
603 - $tokens = new WpGetApi_Extras_Tokens();
604 - $action_args = isset( $this->args['action_args'] ) ? $this->args['action_args'] : null;
605 - $value = ( substr( $value, -1 ) !== ')' ? $value . ')' : $value );
606 - $result = $tokens->replace_tokens( $value, $action_args );
607 - return $result;
608 - }
609 -
610 -
611 - /**
612 346 * decrypt our parameters from the DB
613 347 */
614 348 public function decrypt( $array_or_string ) {
615 349
@@ -643,69 +377,10 @@
643 377 ) {
644 378
645 379 $this->debug = true;
646 380
647 - // admin test endpoint button
648 381 $testing = isset( $this->args['test_endpoint'] ) && ( $this->args['test_endpoint'] === true ) ? true : false;
649 382
650 - // get api status from response code
651 - $status = array(
652 - 'title' => 'Error in API response.',
653 - 'desc' => 'Check all details within your endpoint. Something is misconfigured.',
654 - 'type' => '<span class="dashicons dashicons-dismiss"></span>'
655 - );
656 -
657 - if( $this->response_code >= 200 && $this->response_code <= 299 ) {
658 - $status = array(
659 - 'title' => 'Success!',
660 - 'desc' => 'Your API is returning a success message and is returning the data as shown in the Data Output section below. You can modify this by changing the Results Format option or see <a href="https://wpgetapi.com/docs/format-api-data-as-html/">here</a> for info on formatting this data.',
661 - 'type' => '<span class="dashicons dashicons-yes-alt"></span>'
662 - );
663 - }
664 - if( $this->response_code >= 400 && $this->response_code <= 499 ) {
665 - $status = array(
666 - 'title' => 'Bad Request',
667 - 'desc' => 'This could indicate that the URL you are calling is incorrect or that some other data is missing or incorrect. Please check your Base URL and Endpoint are correct as well as the Request Method.',
668 - 'type' => '<span class="dashicons dashicons-dismiss"></span>'
669 - );
670 - }
671 - if( $this->response_code == 401 ) {
672 - $status = array(
673 - 'title' => 'Unauthorised',
674 - 'desc' => 'You are successfully connecting to your API. But your API key, login or API credentials are incorrect. See <a href="https://wpgetapi.com/docs/authentication-authorization/">here</a> for info on correctly authorizing your API requests.',
675 - 'type' => '<span class="dashicons dashicons-warning"></span>'
676 - );
677 - }
678 - if( $this->response_code == 403 ) {
679 - $status = array(
680 - 'title' => 'Forbidden',
681 - 'desc' => 'This could indicate that you may need to get your IP address whitelisted with your API provider or that you do not have access to this API.',
682 - 'type' => '<span class="dashicons dashicons-dismiss"></span>'
683 - );
684 - }
685 - if( $this->response_code == 405 ) {
686 - $status = array(
687 - 'title' => 'Method Not Allowed',
688 - 'desc' => 'Try changing the Request Method within the endpoint settings.',
689 - 'type' => '<span class="dashicons dashicons-dismiss"></span>'
690 - );
691 - }
692 - if( $this->response_code == 415 ) {
693 - $status = array(
694 - 'title' => 'Unsupported Media Type',
695 - 'desc' => 'Try adding "Content-type" to the Headers with the Value of "json/application" as shown <a href="https://wpgetapi.com/docs/troubleshooting/">here</a>.',
696 - 'type' => '<span class="dashicons dashicons-dismiss"></span>'
697 - );
698 - }
699 - if( $this->response_code >= 500 && $this->response_code <= 599 ) {
700 - $status = array(
701 - 'title' => 'Internal Server Error',
702 - 'desc' => 'This indicates an issue with the API server. Contact your API provider.',
703 - 'type' => '<span class="dashicons dashicons-dismiss"></span>'
704 - );
705 - }
706 -
707 -
708 383 ob_start(); ?>
709 384
710 385 <style>
711 386
@@ -742,11 +417,10 @@
742 417 background: #fff;
743 418 padding: 15px 20px;
744 419 display: inline-block !important;
745 420 width: 100% !important;
746 - box-shadow: 0 4px 4px -2px rgb(0 0 0 / 9%);
747 - border: 1px solid #eee;
748 - margin-bottom: 20px !important;
421 + box-shadow: 3px 3px 0 rgb(0 0 0 / 8%);
422 + border: 1px solid #efefef;
749 423 }
750 424 .wpgetapi-debug .debug-item h6 {
751 425 font-weight: bold;
752 426 font-size: 14px;
@@ -758,14 +432,15 @@
758 432 font-family: monospace !important;
759 433 font-size: 13px !important;
760 434 margin: 0 !important;
761 435 padding: 8px 12px;
762 - background: #f4f7f9;
436 + background: #f8f8f8;
763 437 }
764 438 .wpgetapi-debug .debug-item .debug-result pre {
765 439 border: none;
766 440 padding: 5px
767 441 }
442 +
768 443 .wpgetapi-debug.testing {
769 444 background: transparent;
770 445 padding: 0;
771 446 box-shadow: none;
@@ -772,72 +447,16 @@
772 447 }
773 448 .wpgetapi-debug.testing .debug-item {
774 449 margin: 5px 0;
775 450 }
776 -.wpgetapi-debug.testing .debug-item.status {
777 - border: none;
778 - box-shadow: none;
779 - margin-bottom: 15px;
780 -}
781 -.wpgetapi-debug .debug-item.status h5 {
782 - font-size: 15px;
783 -}
784 -.wpgetapi-debug .status .dashicons {
785 - margin: 0 5px 3px 0;
786 -}
787 -.wpgetapi-debug .status .dashicons-yes-alt {
788 - color: #5e9929;
789 -}
790 -.wpgetapi-debug .status .dashicons-dismiss {
791 - color: #cc4646;
792 -}
793 -.wpgetapi-debug .status .dashicons-warning {
794 - color: #dfa12e;
795 -}
796 -.wpgetapi-debug .status .desc {
797 - font-size: 14px;
798 - font-weight: 400 !important;
799 -}
800 451 </style>
801 452
802 453 <div class="wpgetapi-debug <?php echo $testing ? 'testing' : ''; ?>">
803 454
804 - <?php if( $testing ) { ?>
805 -
806 - <div class="debug-item status">
807 - <div class="">
808 - <h5><?php _e( $status['type'] ); ?> <?php esc_html_e( $status['title'] ); ?></h5>
809 - <span class="desc"><?php _e( $status['desc'] ); ?></span>
810 - </div>
811 - </div>
812 - <div class="debug-item">
813 - <h6><?php esc_html_e( 'Full URL', 'wpgetapi' ); ?></h6>
814 - <p class="small"><?php esc_html_e( 'The full URL that is being called.', 'wpgetapi' ); ?></p>
815 - <div class="debug-result"><?php esc_html_e( $this->final_url ); ?></div>
816 - </div>
817 -
818 - <div class="debug-item">
819 - <h6><?php esc_html_e( 'Data Output', 'wpgetapi' ); ?></h6>
820 - <p class="small"><?php esc_html_e( 'The output that has been returned from the API. This is what the shortcode or template tag will display and can be formatted however you like.', 'wpgetapi' ); ?></p>
821 - <div class="debug-result"><?php wpgetapi_pp( $data ); ?></div>
822 - </div>
823 -
824 - <div class="debug-item">
825 - <h6><?php esc_html_e( 'Final Request Arguments', 'wpgetapi' ); ?></h6>
826 - <p class="small"><?php esc_html_e( 'The final request arguments sent in the API request. Includes headers and body arguments.', 'wpgetapi' ); ?></p>
827 - <div class="debug-result"><?php wpgetapi_pp( $this->final_request_args ); ?></div>
828 - </div>
829 -
830 - <div class="debug-item">
831 - <h6><?php esc_html_e( 'Response', 'wpgetapi' ); ?></h6>
832 - <p class="small"><?php esc_html_e( 'The full response from the API request.', 'wpgetapi' ); ?></p>
833 - <div class="debug-result"><?php wpgetapi_pp( $this->response); ?></div>
834 - </div>
835 -
836 - <?php } else { ?>
837 -
838 - <h5><strong><?php esc_html_e( 'WPGetAPI, Debug Mode - Plugin Version', 'wpgetapi' ); ?> <?php esc_html_e( WpGetApi()->version ); ?></strong></h5>
455 + <?php if( ! $testing ) { ?>
456 + <h5><strong><?php esc_html_e( 'WPGetAPI, Debug Mode - Plugin Version', 'wpgetapi' ); ?> <?php esc_html_e( WpGetApi()->version ); ?></strong></h5>
839 457 <p class="small"><?php esc_html_e( 'Below you will find debug info for the current API call. To turn this off, set debug to false in your shortcode or template tag.', 'wpgetapi' ); ?><br><?php esc_html_e( 'Connecting to API\'s can be tricky - if you require help, please see the', 'wpgetapi' ); ?> <a target="_blank" href="https://wpgetapi.com/docs/"><?php esc_html_e( 'Documentation', 'wpgetapi' ); ?></a>.</p>
458 + <?php } ?>
840 459
841 460 <div class="debug-item">
842 461 <h6><?php esc_html_e( 'Full URL', 'wpgetapi' ); ?></h6>
843 462 <p class="small"><?php esc_html_e( 'The full URL that is being called.', 'wpgetapi' ); ?></p>
@@ -884,10 +503,8 @@
884 503 <h6><?php esc_html_e( 'Response', 'wpgetapi' ); ?></h6>
885 504 <p class="small"><?php esc_html_e( 'The full response from the API request.', 'wpgetapi' ); ?></p>
886 505 <div class="debug-result"><?php wpgetapi_pp( $this->response); ?></div>
887 506 </div>
888 -
889 - <?php } ?>
890 507
891 508 </div>
892 509
893 510 <?php