PluginProbe
Assistant – Every Day Productivity Apps / trunk
Assistant – Every Day Productivity Apps vtrunk
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 trunk, at backend/src/Clients/Cloud/CloudClient.php

126 lines 3.0 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 $args['headers'][] = 'X-Application-Name: Assistant Plugin';
37 $args['headers'][] = 'X-Application-Version: ' . FL_ASSISTANT_VERSION;
38 $args['headers'][] = 'X-Api-Version: 3';
39 $curl = curl_init();
40 $fields = isset( $args['data'] ) ? $this->build_query( $args['data'] ) : '';
41
42 curl_setopt_array(
43 $curl, [
44 CURLOPT_URL => $url,
45 CURLOPT_RETURNTRANSFER => 1,
46 CURLOPT_SSL_VERIFYPEER => false,
47 CURLOPT_SSL_VERIFYHOST => false,
48 CURLOPT_USERAGENT => 'Assistant Plugin',
49 CURLOPT_CUSTOMREQUEST => $args['method'],
50 CURLOPT_HTTPHEADER => $args['headers'],
51 CURLOPT_POSTFIELDS => $fields,
52 ]
53 );
54
55 $response = curl_exec( $curl );
56
57 return json_decode( $response );
58 }
59
60 /**
61 * @param $route string
62 * @param $args array
63 * @return object
64 */
65 public function get( $route, $args = [] ) {
66 $args['method'] = 'GET';
67 return $this->request( $route, $args );
68 }
69
70 /**
71 * @param $route string
72 * @param $data array
73 * @param $args array
74 * @return object
75 */
76 public function post( $route, $data = [], $args = [] ) {
77 $args['method'] = 'POST';
78 $args['data'] = $data;
79 return $this->request( $route, $args );
80 }
81
82 /**
83 * @param $route string
84 * @param $data array
85 * @param $args array
86 * @return object
87 */
88 public function put( $route, $data = [], $args = [] ) {
89 $args['method'] = 'PUT';
90 $args['data'] = $data;
91 return $this->request( $route, $args );
92 }
93
94 /**
95 * @param $route string
96 * @param $args array
97 * @return object
98 */
99 public function delete( $route, $args = [] ) {
100 $args['method'] = 'DELETE';
101 return $this->request( $route, $args );
102 }
103
104 /**
105 * @param $data array
106 * @param $prefix string
107 * @return array
108 */
109 protected function build_query( $data, $prefix = null ) {
110 $query = [];
111
112 foreach ( $data as $key => $value ) {
113 $new_key = $prefix ? "{$prefix}[{$key}]" : $key;
114 if ( is_object( $value ) && 'CURLFile' === get_class( $value ) ) {
115 $query[ $new_key ] = $value;
116 } elseif ( is_array( $value ) || is_object( $value ) ) {
117 $query += $this->build_query( $value, $new_key );
118 } else {
119 $query[ $new_key ] = $value;
120 }
121 }
122
123 return $query;
124 }
125 }
126