Rev 4131 | Rev 6749 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
<?php
declare(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 addAction()
{
/*
$currentUserPlugin = $this->plugin('currentUserPlugin');
$currentUser = $currentUserPlugin->getUser();
$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',
'agenda' => 'Description Let s Learn WordPress',
'type' => 2,
'start_time' => '2023-01-30T20:30:00',
'duration' => '30', // 30 mins
'password' => '123456',
'timezone' => 'America/Caracas',
'settings' => [
'participant_video'=> 'true',
'auto_recording' => 'none',
]
],
]);
$data = json_decode($response->getBody()->getContents());
echo '<pre>';
print_r($data);
echo '</pre>';
exit;
//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);
}
*/
$token = 'EAAJaDxnm8uIBAGYjnYpOvjzm1BXbBgTtqfwn4YbagqIBGxfpWVZBObWtcnvfTJB6hMfHLWZBgG7dQ2O2UYMqZALYSLIQZC8swoNsHNYe3AMBkOjkt7YZBuIfXe22yyTgUZCBzGlsjbs0f72nNDvMlGNQlkCYNi3ZCDdXH61z9nW9xxUcdAnhk6M';
$token = 'EAAJaDxnm8uIBAF3XfBml8yh9PqHOfO0UcwYALZAmoZCSPx6IkNZCRaVQaSWJfQALBqaRZCMziTddfvKgiVs1jwftg2sMyZBGixRTSDcXfvOv3nO4gZA2pCyruxa5iA1ZB01C83o2ZAg1Lnb07jeGF2C4d1Tauu3ZB9sZCJTkY4jMPt1Gnx8tpm5MAd';
$client = new Client([
'base_uri' => 'https://graph.facebook.com/v15.0',
]);
//$to = '584244343638';
//$to = '59898137899';
$to = '584122788242';
$response = $client->request('POST', '/111473331819706/messages', [
'headers' => [
'Authorization' => 'Bearer ' . $token
],
'json' => [
'messaging_product' => 'whatsapp',
'recipient_type' => 'individual',
'to' => $to,
'type' => 'text',
'text' => [
'preview_url' => false,
'body' => 'MESSAGE_CONTENT'
]
/*
'type' => 'template',
'template' => [
'name' => 'hello_world',
'language' => [
'code' => 'en_US'
]
] */
],
]);
echo '<pre>';
print_r($response->getBody()->getContents());
echo '</pre>';
exit;
}
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');
}
}