PluginProbe
Assistant – Every Day Productivity Apps / 1.5.1
Assistant – Every Day Productivity Apps v1.5.1
1.5.5 trunk 0.1.0 0.2.0 0.2.1 0.2.2 0.3.0 0.3.1 0.4 0.4.1 0.4.2 0.5.0 0.5.1 0.6.0 0.7.0 0.7.0.2 0.7.0.3 0.7.0.4 0.7.0.5 0.7.0.6 0.7.0.7 0.7.0.8 0.7.0.9 0.7.1 1.0 All 71 releases
assistant / backend / src / Clients / Cloud / CloudClient.php

CloudClient.php in Assistant – Every Day Productivity Apps 1.5.1, at backend/src/Clients/Cloud/CloudClient.php

123 lines 2.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace FL\Assistant\Clients\Cloud;
4
5 class CloudClient {
6
7 /**
8 * @var CloudLibraries
9 */
10 public $libraries;
11
12 /**
13 * @return void
14 */
15 public function __construct() {
16 $this->libraries = new CloudLibraries( $this );
17 }
18
19 /**
20 * @param $route string
21 * @param $args array
22 * @return object
23 */
24 public function request( $route, $args = [] ) {
25 if ( ! isset( $args['method'] ) ) {
26 $args['method'] = 'GET';
27 }
28 if ( ! isset( $args['headers'] ) ) {
29 $args['headers'] = [];
30 }
31
32 $url = FL_ASSISTANT_CLOUD_URL . "/api$route";
33 $token_key = 'fl-cloud-token-' . md5( home_url() );
34 $token = isset( $_COOKIE[ $token_key ] ) ? $_COOKIE[ $token_key ] : '';
35 $args['headers'][] = "Authorization: Bearer $token";
36 $curl = curl_init();
37 $fields = isset( $args['data'] ) ? $this->build_query( $args['data'] ) : '';
38
39 curl_setopt_array(
40 $curl, [
41 CURLOPT_URL => $url,
42 CURLOPT_RETURNTRANSFER => 1,
43 CURLOPT_SSL_VERIFYPEER => false,
44 CURLOPT_SSL_VERIFYHOST => false,
45 CURLOPT_USERAGENT => 'Assistant Plugin',
46 CURLOPT_CUSTOMREQUEST => $args['method'],
47 CURLOPT_HTTPHEADER => $args['headers'],
48 CURLOPT_POSTFIELDS => $fields,
49 ]
50 );
51
52 $response = curl_exec( $curl );
53
54 return json_decode( $response );
55 }
56
57 /**
58 * @param $route string
59 * @param $args array
60 * @return object
61 */
62 public function get( $route, $args = [] ) {
63 $args['method'] = 'GET';
64 return $this->request( $route, $args );
65 }
66
67 /**
68 * @param $route string
69 * @param $data array
70 * @param $args array
71 * @return object
72 */
73 public function post( $route, $data = [], $args = [] ) {
74 $args['method'] = 'POST';
75 $args['data'] = $data;
76 return $this->request( $route, $args );
77 }
78
79 /**
80 * @param $route string
81 * @param $data array
82 * @param $args array
83 * @return object
84 */
85 public function put( $route, $data = [], $args = [] ) {
86 $args['method'] = 'PUT';
87 $args['data'] = $data;
88 return $this->request( $route, $args );
89 }
90
91 /**
92 * @param $route string
93 * @param $args array
94 * @return object
95 */
96 public function delete( $route, $args = [] ) {
97 $args['method'] = 'DELETE';
98 return $this->request( $route, $args );
99 }
100
101 /**
102 * @param $data array
103 * @param $prefix string
104 * @return array
105 */
106 protected function build_query( $data, $prefix = null ) {
107 $query = [];
108
109 foreach ( $data as $key => $value ) {
110 $new_key = $prefix ? "{$prefix}[{$key}]" : $key;
111 if ( is_object( $value ) && 'CURLFile' === get_class( $value ) ) {
112 $query[ $new_key ] = $value;
113 } elseif ( is_array( $value ) || is_object( $value ) ) {
114 $query += $this->build_query( $value, $new_key );
115 } else {
116 $query[ $new_key ] = $value;
117 }
118 }
119
120 return $query;
121 }
122 }
123