Exemple d'API en direct : Créer un travail en direct

Dans cet exemple, vous apprendrez à créer une tâche Live simple.

Introduction

Cet exemple crée une tâche Live simple avec trois rendus de sortie : 1080p, 720p et 480p.

Comme le n' Live API est pas activé CORS et doit être accessible à partir d'une application côté serveur, la requête d'API est envoyée via un simple proxy écrit en PHP. Vous pouvez le reproduire dans n'importe quelle langue côté serveur : il suffit de collecter les paramètres de demande envoyés par le JavaScript, d'envoyer la demande à l'API et de renvoyer la réponse au JavaScript. Tout le code se trouve dans le section de code ci-dessous.

Créer une application d'emploi en direct

Retrouvez tout le code associé à cet exemple dans ce référentiel GitHub.

Voir le stylo Exemple d'API en direct : Créez un emploi en direct par Brightcove Learning Services (@rcrooks1969) sur CodePen.

Utilisation du CodePen

Voici quelques conseils pour utiliser efficacement le CodePen ci-dessus :

  • Basculez l'affichage réel du lecteur en cliquant sur le bouton Résultat bouton.
  • Clique le HTML/CSS/JS pour afficher UN des types de code.
  • Cliquez sur Modifier sur CodePen dans le coin supérieur droit pour insérer ce CodePen dans votre propre compte.
  • Retrouvez tout le code associé à cet exemple dans ce référentiel GitHub.

Code proxy

En plus du code trouvé dans CodePen (et le référentiel GitHub associé), cet exemple nécessite un proxy pour effectuer la demande d'API et renvoyer la réponse à l'application. Pour cette application, nous avons utilisé PHP et le code est présenté ci-dessous. Vous pouvez utiliser n'importe quel langage côté serveur pour créer le proxy.

Exemple de code proxy
	<? php
	/**
	 * live-proxy.php : proxy pour les API Brightcove Live
	 * fait la requête, et retourne la réponse
	 * Accès :
	 * (notez que vous devriez *toujours* accéder au proxy via HTTPS)
	 * Méthode : POST
	 *
	 * @post {string} url : URL de la demande d'API
	 * @post {string} [RequestType=get] - Méthode HTTP pour la demande
	 * @post {string} [RequestBody] - Données JSON à envoyer avec les demandes d'écriture
	 * @post {string} ApiKey - Clé d'API active
	 *
	 * @returns {string} $response - Réponse JSON reçue de l'API
	 */
	
	
	//Activation CORS et autres en-têtes
	en-tête (« Access-Control-Allow-Origin : * ») ;
	en-tête (« Content-type : application/json ») ;
	(« X-Content-Type-Options : nosniff ») ;
	en-tête (« X-XSS-protection ») ;
	
	
	$requestData = json_decode (file_get_contents ('php : //entrée')) ;
	
	//configuration de l'appel d'API
	//Obtenir la clé api
	$apikey = $requestData->clé API ;
	//Obtenir le type de requête ou par défaut à GET
	si ($requestData->requestType) {
			$method = $requestData->RequestType ;
	} else {
			$method = "GET";
	}
	//plus de contrôles de sécurité
	$needle = '.io' ;
	$endapi = strpos ($requestData->URL, $needle) + 3 ;
	
	$nextChar = substr ($requestData->URL, $endapi, 1) ;
	
	if (strpos ($requestData->URL, 'api.bcovlive.io') = false) {
			exit ('{"ERROR » ="Seules les demandes adressées aux API Brightcove Live sont acceptées par ce proxy "}') ;
	} sinon si ($nextChar ! == '/' && $NextChar ! == '? ') {
			exit ('{"ERREUR » : « Un problème s'est produit avec votre demande d'API. Vérifiez l'URL"} ') ;
	}
	//récupère l'URL et les informations d'autorisation à partir des données du formulaire
	$request = $requestData->URL ;
	//envoyer la requête http
	si ($requestData->requestBody) {
		$ch = curl_init ($request) ;
		curl_setopt_array($ch, array(
			CURLOPT_CUSTOMREQUEST => $method,
			CURLOPT_RETURNTRANSFER => TRUE,
			CURLOPT_SSL_VERIFYPEER => FALSE,
			CURLOPT_HTTPHEADER => tableau (
				'Content-type : application/json',
				« CLÉ API X : {$apikey} »,
			),
			CURLOPT_POSTFIELDS => $requestData->RequestBody
		))) ;
		$response = curl_exec ($ch) ;
		curl_close ($ch) ;
	} else {
		$ch = curl_init ($request) ;
		curl_setopt_array($ch, array(
			CURLOPT_CUSTOMREQUEST => $method,
			CURLOPT_RETURNTRANSFER => TRUE,
			CURLOPT_SSL_VERIFYPEER => FALSE,
			CURLOPT_HTTPHEADER => tableau (
				'Content-type : application/json',
				« CLÉ API X : {$apikey} »,
			)
		))) ;
		$response = curl_exec ($ch) ;
		curl_close ($ch) ;
	}
	
	//Vérification des erreurs
	if ($response === FALSE) {
			$LogEntry = « \ nErreur : \ n ».
			« \ n » .date (« Y-M-d H:i:S »). « UTC \ n »
			.$ réponse ;
			$logFileLocation = "log.txt « ;
			$fileHandle = fopen ($logFileLocation, 'a') ou die (« -1") ;
			fwrite ($FileHandle, $LogEntry) ;
			fclose ($FileHandle) ;
			echo '{"ERREUR » : « Il y a eu un problème avec votre appel API"} '+
			die (curl_error ($ch)) ;
	}
	
	//Décode la réponse
	//$responseData = json_decode ($response, TRUE) ;
	//retourne la réponse à l'appelant AJAX
	$responseDecoded = json_decode ($response) ;
	//si (! est défini ($responseDecoded) {
	// 	$response = '{null}' ;
	//}
	echo $ réponse ;
	? >