Muestra de API en vivo: Crear un trabajo en vivo
Introducción
Esta muestra crea un trabajo en vivo simple con tres representaciones de salida: 1080p, 720p y 480p.
Porque el Live API no está habilitado para CORS y se debe acceder a él desde una aplicación del lado del servidor, la solicitud de API se envía a través de un proxy simple escrito en PHP. Puede reproducir esto en cualquier lenguaje del lado del servidor; todo lo que hace es recopilar los parámetros de solicitud enviados por JavaScript, envía la solicitud a la API y devuelve la respuesta a JavaScript. Todo el código se puede encontrar en el sección de código a continuación.
Crear aplicación de trabajo en vivo
Encuentra todo el código asociado a este ejemplo en este repositorio de GitHub.Ver la pluma Muestra de API en vivo: Cree un trabajo en vivo de Brightcove Learning Services (@rcrooks1969) en CodePen.
Uso de CodePen
Código proxy
Además del código que se encuentra en CodePen (y el repositorio de GitHub asociado), esta muestra requiere un proxy para realizar la solicitud de API y devolver la respuesta a la aplicación. Para esta aplicación usamos PHP y el código se muestra a continuación. Puede usar cualquier lenguaje del lado del servidor para construir el proxy.
Código de muestra de proxy
<? php
/ **
* live-proxy.php: proxy para las API de Brightcove Live
* realiza la solicitud y devuelve la respuesta
* Accediendo:
* (tenga en cuenta que debe * siempre * acceder al proxy a través de HTTPS)
* Método: PUBLICACIÓN
*
* @post {string} url: la URL de la solicitud de API
* @post {string} [requestType = GET]: método HTTP para la solicitud
* @post {string} [requestBody]: datos JSON que se enviarán con solicitudes de escritura
* @post {string} apiKey: clave de API en vivo
*
* @returns {string} $ response: respuesta JSON recibida de la API
* /
// Habilitación de CORS y otros encabezados
encabezado ("Acceso-Control-Permitir-Origen: *");
encabezado ("Tipo de contenido: aplicación / json");
encabezado ("X-Content-Type-Options: nosniff");
encabezado ("Protección X-XSS");
$requestData = json_decode(file_get_contents('php://input'));
// configura la llamada a la API
// obtener clave api
$apikey = $requestData->apiKey;
// obtener el tipo de solicitud o por defecto GET
if ($ requestData-> requestType) {
$method = $requestData->requestType;
} else {
$method = "GET";
}
// más controles de seguridad
$needle = '.io';
$endapi = strpos($requestData->url, $needle) + 3;
$nextChar = substr($requestData->url, $endapi, 1);
if (strpos ($ requestData-> url, 'api.bcovlive.io') == false) {
exit ('{"ERROR": "Este proxy solo acepta solicitudes a las API de Brightcove Live"}');
} else if ($nextChar !== '/' && $nextChar !== '?') {
salir ('{"ERROR": "Hubo un problema con su solicitud de API; verifique la URL"} ');
}
// obtener la URL y la información de autorización de los datos del formulario
$request = $requestData->url;
// envía la solicitud http
if ($ requestData-> requestBody) {
$ch = curl_init($request);
curl_setopt_array ($ ch, array (
CURLOPT_CUSTOMREQUEST => $ método,
CURLOPT_RETURNTRANSFER => VERDADERO,
CURLOPT_SSL_VERIFYPEER => FALSO,
CURLOPT_HTTPHEADER => matriz (
'Tipo de contenido: aplicación / json',
"X-API-KEY: {$ apikey}",
),
CURLOPT_POSTFIELDS => $ requestData-> requestBody
));
$response = curl_exec($ch);
curl_close ($ ch);
} else {
$ch = curl_init($request);
curl_setopt_array ($ ch, array (
CURLOPT_CUSTOMREQUEST => $ método,
CURLOPT_RETURNTRANSFER => VERDADERO,
CURLOPT_SSL_VERIFYPEER => FALSO,
CURLOPT_HTTPHEADER => matriz (
'Tipo de contenido: aplicación / json',
"X-API-KEY: {$ apikey}",
)
));
$response = curl_exec($ch);
curl_close ($ ch);
}
// Verifica si hay errores
if ($ respuesta === FALSO) {
$logEntry = "\\nError:\\n".
"\\n".fecha("Ymd H:i:s")". UTC \\ n "
.$response;
$logFileLocation = "log.txt";
$fileHandle = fopen($logFileLocation, 'a') or die("-1");
fwrite ($ fileHandle, $ logEntry);
fclose ($ fileHandle);
echo '{"ERROR": "Hubo un problema con la llamada a la API"} '+
morir (curl_error ($ ch));
}
// Decodifica la respuesta
// $responseData = json_decode($response, TRUE);
// devuelve la respuesta a la persona que llama AJAX
$responseDecoded = json_decode($response);
// if (! isset ($ responseDecoded)) {
// $response = '{null}';
//}
echo $ respuesta;
?>