Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 5277 | Rev 6749 | Ir a la última revisión | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 5277 Rev 5837
Línea 5... Línea 5...
5
namespace LeadersLinked\Library;
5
namespace LeadersLinked\Library;
Línea 6... Línea 6...
6
 
6
 
7
 
7
 
-
 
8
use \Firebase\JWT\JWT;
8
use \Firebase\JWT\JWT;
9
use GuzzleHttp\Client;
9
use GuzzleHttp\Client;
10
use Laminas\Cache\Storage\Adapter\AbstractAdapter;
Línea 10... Línea 11...
10
use Laminas\Db\Adapter\Adapter;
11
use Laminas\Db\Adapter\Adapter;
11
use LeadersLinked\Model\ZoomMeeting;
12
use LeadersLinked\Model\ZoomMeeting;
-
 
13
 
-
 
14
 
12
 
15
class Zoom 
13
 
16
{
14
class Zoom 
17
    const CACHE_OAUTH_TOOKEN = 'zoom_oauth_tooken';
15
{
18
    
16
    /**
19
    /**
Línea 26... Línea 29...
26
     */
29
     */
27
    private $config;
30
    private $config;
Línea 28... Línea 31...
28
    
31
    
-
 
32
    
-
 
33
    /**
-
 
34
     *
-
 
35
     * @var AbstractAdapter
-
 
36
     */
-
 
37
    private $cache;
-
 
38
    
-
 
39
    
29
    
40
    
30
    /**
41
    /**
31
     * 
42
     * 
-
 
43
     * @param Adapter $adapter
32
     * @param Adapter $adapter
44
     * @param array config
33
     * @param array config
45
     * @param AbstractAdapter $cache
34
     */
46
     */
35
    public function __construct($adapter, $config)
47
    public function __construct($adapter, $config, $cache)
36
    {
48
    {
-
 
49
        $this->adapter = $adapter;
37
        $this->adapter = $adapter;
50
        $this->config = $config;
Línea 38... Línea 51...
38
        $this->config = $config;
51
        $this->cache = $cache;
39
    }
52
    }
Línea 40... Línea 53...
40
    
53
    
41
    
-
 
-
 
54
    
Línea 42... Línea 55...
42
    
55
    
43
    public function add($topic, $agenda, $type, $start_time, $duration, $timezone, $password)
56
    public function addMeeting($access_token, $topic, $agenda, $type, $start_time, $duration, $timezone, $password)
44
    {
57
    {
Línea 83... Línea 96...
83
        }
96
        }
Línea 84... Línea 97...
84
    
97
    
85
        
98
        
86
        $request = [
99
        $request = [
87
            'headers' => [
100
            'headers' => [
88
                'Authorization' => 'Bearer ' . $token
101
                'Authorization' => 'Bearer ' . $access_token
89
            ],
102
            ],
Línea 90... Línea 103...
90
            'json' => $json,
103
            'json' => $json,
91
        ];
104
        ];
Línea 92... Línea 105...
92
        
105
        
Línea 93... Línea 106...
93
            
106
            
94
        $response = $client->request('POST', '/v2/users/me/meetings', $request );
107
        $response = $client->request('POST', '/v2/users/me/meetings', $request );
Línea 123... Línea 136...
123
            
136
            
Línea -... Línea 137...
-
 
137
       
-
 
138
        
-
 
139
    }
-
 
140
    
-
 
141
    public function getMeetings($access_token, $next_page_token)
-
 
142
    {
-
 
143
        $base_url = $this->config['leaderslinked.zoom.base_url'];
-
 
144
        $client = new Client([
-
 
145
            
-
 
146
            'base_uri' => $base_url,
-
 
147
        ]);
-
 
148
        
-
 
149
        $request = [
-
 
150
            'headers' => [
-
 
151
                'Authorization' => 'Bearer '. $access_token
-
 
152
            ],
-
 
153
            'type' => 'scheduled'
-
 
154
        ];
-
 
155
        
-
 
156
        if($next_page_token) {
-
 
157
            $request['query'] = ['next_page_token' => $next_page_token];
-
 
158
        }
-
 
159
        
-
 
160
        
-
 
161
        $response = $client->request('GET', '/v2/users/me/meetings', $request);
-
 
162
        $statusCode = $response->getStatusCode() ;
-
 
163
        
-
 
164
        if($statusCode >= 200 && $statusCode <= 300) {
-
 
165
            $meetings = json_decode($response->getBody()->getContents());
-
 
166
            
-
 
167
            return [
-
 
168
                'success' =>  true,
-
 
169
                'data' => $meetings
-
 
170
            ];
-
 
171
            
-
 
172
        } else {
-
 
173
            return [
-
 
174
                'success' => false,
-
 
175
                'data' => $response->getStatusCode()
-
 
176
            ];
-
 
177
        }
-
 
178
    }
Línea 124... Línea 179...
124
       
179
    
-
 
180
    
-
 
181
 
-
 
182
    
-
 
183
    
-
 
184
    public  function getOAuthAccessToken()
-
 
185
    {
-
 
186
 
-
 
187
 
-
 
188
        if($this->cache->hasItem(self::CACHE_OAUTH_TOOKEN)) {
-
 
189
            $data = $this->cache->getItem(self::CACHE_OAUTH_TOOKEN);
-
 
190
            
-
 
191
            return [
-
 
192
                'success' => true,
-
 
193
                'data' => $data->accesstoken
-
 
194
                
-
 
195
            ];
-
 
196
        }
-
 
197
        
-
 
198
        
-
 
199
        
Línea 125... Línea -...
125
        
-
 
126
    }
-
 
Línea -... Línea 200...
-
 
200
        $account_id     = $this->config['leaderslinked.zoom.account_id'];
Línea -... Línea 201...
-
 
201
        $client_id      = $this->config['leaderslinked.zoom.client_id'];
-
 
202
        $client_secret  = $this->config['leaderslinked.zoom.client_secret'];
-
 
203
 
-
 
204
        $client_token_base64_encode =  base64_encode($client_id . ':' . $client_secret);
127
    
205
        
128
    
206
        
-
 
207
        $timecalled = time();
-
 
208
        
-
 
209
        $client = new Client([
129
    private function getAccessToken() {
210
            'base_uri' => 'https://zoom.us',
-
 
211
        ]);
-
 
212
        
-
 
213
        $request = [
130
        
214
            'headers' => [
-
 
215
                'Authorization' => 'Basic ' . $client_token_base64_encode,
-
 
216
                'Accept' =>  'application/json'
-
 
217
            ],
-
 
218
            'form_params' => [
-
 
219
                'grant_type' => 'account_credentials', 
-
 
220
                'account_id' => $account_id
-
 
221
            ],
-
 
222
        ];
-
 
223
        
-
 
224
        
-
 
225
        $response = $client->request('POST', '/oauth/token', $request );
-
 
226
        $statusCode = $response->getStatusCode() ;
-
 
227
 
-
 
228
        
-
 
229
        if($statusCode >= 200 && $statusCode <= 300) {
131
        $api_key = $this->config['leaderslinked.zoom.api_key'];
230
            $response = json_decode($response->getBody()->getContents());
-
 
231
 
-
 
232
            $requiredscopes = [
-
 
233
                'meeting:read:admin',
-
 
234
                'meeting:write:admin',
-
 
235
                'user:read:admin',
-
 
236
            ];
-
 
237
            $scopes = explode(' ', $response->scope);
-
 
238
            $missingscopes = array_diff($requiredscopes, $scopes);
-
 
239
            
-
 
240
            if (!empty($missingscopes)) {
-
 
241
                $missingscopes = implode(', ', $missingscopes);
-
 
242
 
-
 
243
                
-
 
244
                return [
-
 
245
                    'success' => false,
-
 
246
                    'data' => 'ERROR_OAUTH_MISSING_SCOPES ' . $missingscopes
-
 
247
                ];
-
 
248
 
-
 
249
 
-
 
250
                
-
 
251
                
-
 
252
            }
-
 
253
            /*
-
 
254
            echo '<pre>';
-
 
255
            print_r($response);
-
 
256
            echo '</pre>';
-
 
257
            */
-
 
258
            
-
 
259
 
-
 
260
            
-
 
261
            if (isset($response->expires_in)) {
-
 
262
                $expires = $response->expires_in + $timecalled;
-
 
263
            } else {
-
 
264
                $expires = 3599 + $timecalled;
-
 
265
            }
-
 
266
            
-
 
267
            $obj = new \stdClass();
-
 
268
            $obj->accesstoken   = $response->access_token;
-
 
269
            $obj->expires       = $expires;
-
 
270
            $obj->scopes        = $scopes;
-
 
271
            
-
 
272
            $this->cache->setItem(self::CACHE_OAUTH_TOOKEN, $obj);
-
 
273
 
-
 
274
            return [
-
 
275
                'success' => true,
-
 
276
                'data' => $response->access_token
-
 
277
            ];
-
 
278
            
-
 
279
            
-
 
280
        } else {
-
 
281
            return [
132
        $api_secret   = $this->config['leaderslinked.zoom.api_secret'];
282
                'success' => false,
Línea 133... Línea 283...
133
        
283
                'data' => $response->getStatusCode()
134
        
284
            ];