Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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');
    }
    
   
   
}