Rev 4124 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
<?phpdeclare(strict_types=1);namespace LeadersLinked\Controller;use \Firebase\JWT\JWT;use GuzzleHttp\Client;use Laminas\Db\Adapter\AdapterInterface;use Laminas\Cache\Storage\Adapter\AbstractAdapter;use Laminas\Mvc\Controller\AbstractActionController;use Laminas\Log\LoggerInterface;use Laminas\View\Model\JsonModel;class ZoomController extends AbstractActionController{/**** @var AdapterInterface*/private $adapter;/**** @var AbstractAdapter*/private $cache;/**** @var LoggerInterface*/private $logger;/**** @var array*/private $config;/**** @param AdapterInterface $adapter* @param AbstractAdapter $cache* @param LoggerInterface $logger* @param array $config*/public function __construct($adapter, $cache , $logger, $config){$this->adapter = $adapter;$this->cache = $cache;$this->logger = $logger;$this->config = $config;}public function indexAction(){$data = ['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED'];return new JsonModel($data);}public function createAction(){$request = $this->getRequest();// if($request->isPost()) {$base_url = $this->config['leaderslinked.zoom.base_url'];$token = $this->getAccessToken();$client = new Client(['base_uri' => $base_url,]);$response = $client->request('POST', '/v2/users/me/meetings', ['headers' => ['Authorization' => 'Bearer ' . $token],'json' => ['topic' => 'Let s Learn WordPress','type' => 2,'start_time' => '2023-01-30T20:30:00','duration' => '30', // 30 mins'password' => '123456','timezone' => 'America/Caracas',],]);print_r($response->getBody()->getContents()); exit;$data = json_decode($response->getBody());echo "Join URL: ". $data->join_url;echo "<br>";echo "Meeting Password: ". $data->password;/*} else {$data = ['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED'];return new JsonModel($data);}return new JsonModel($data);*/}public function listingAction(){$request = $this->getRequest();//if($request->isGet()) {$next_page_token = $this->params()->fromRoute('next_page');$base_url = $this->config['leaderslinked.zoom.base_url'];$token = $this->getAccessToken();$client = new Client(['base_uri' => $base_url,]);$request = ['headers' => ['Authorization' => 'Bearer '. $token],'type' => 'scheduled'];if (!empty($next_page_token)) {$request['query'] = ['next_page_token' => $next_page_token];}$response = $client->request('GET', '/v2/users/me/meetings', $request);echo '<pre>';print_r(json_decode($response->getBody()->getContents()));echo '</pre>';exit;$data = json_decode($response->getBody());if ( !empty($data) ) {foreach ( $data->meetings as $d ) {$topic = $d->topic;$join_url = $d->join_url;echo "<h3>Topic: $topic</h3>";echo "Join URL: $join_url";}if ( !empty($data->next_page_token) ) {list_meetings($data->next_page_token);}}/*} else {$data = ['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED'];}return new JsonModel($data);*/}public function deleteAction(){$request = $this->getRequest();//if($request->isPost()) {$meeting_id = $this->params()->fromRoute('id');$base_url = $this->config['leaderslinked.zoom.base_url'];$token = $this->getAccessToken();$client = new Client(['base_uri' => $base_url,]);$response = $client->request('DELETE', '/v2/meetings/' . $meeting_id, ['headers' => ['Authorization' => 'Bearer ' . $token]]);echo 'StatusCode : ' . $response->getStatusCode();exit;/*if (204 == $response->getStatusCode()) {$data = ['success' => true,'data' => 'Meeting deleted.'];} else {$data = ['success' => false,'data' => $response->getBody()->getContents()];}} else {$data = ['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED'];}return new JsonModel($data);*/}public function participantsAction(){$request = $this->getRequest();// if($request->isGet()) {$meeting_id = $this->params()->fromRoute('id');$base_url = $this->config['leaderslinked.zoom.base_url'];$token = $this->getAccessToken();$client = new Client(['base_uri' => $base_url,]);$response = $client->request('GET', '/v2/past_meetings/' . $meeting_id , ['headers' => ['Authorization' => 'Bearer '. $token]]);print_r($response->getBody()->getContents());exit;/*$data = json_decode($response->getBody());if ( !empty($data) ) {foreach ( $data->participants as $p ) {$name = $p->name;$email = $p->user_email;echo "Name: $name";echo "Email: $email";}}} else {$data = ['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED'];}return new JsonModel($data);*/}private function getAccessToken() {$api_key = $this->config['leaderslinked.zoom.api_key'];$api_secret = $this->config['leaderslinked.zoom.api_secret'];$payload =['iss' => $api_key,'exp' => time() + 3600,];return JWT::encode($payload, $api_secret, 'HS256');}}