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

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