Récemment, j’avais présenté le moyen d’utiliser le protocole REST pour effectuer une requête HTTP de type “PUT” en Java. Ceci était valable pour l’ajout d’un fichier vidéo (de type “.wmv”) sur la plateforme Silverlight Streaming.

Je vais ici présenter deux cas relatifs à la suppression et à la copie d’un fichier vidéo présent sur cette plateforme (le code sera ici en C#).

Copie

Dans notre architecture, lorsqu’un utilisateur souhaitera louer une vidéo, il a été décidé qu’une requête de type “COPY” soit effectuée pour copier le FileSet du fichier vidéo. C’est le lien vers cette copie qui sera ensuite expédié vers l’utilisateur.

On démarre ici avec plusieurs variables principales :

  • L’objet contenant la requête
  • Deux chaînes de caractères contenant respectivement l’emplacement du FileSet et le nom du futur FileSet copié
  • Deux chaînes de caractères contenant respectivement l’identifiant et la clé du compte SLS
  • Une autre chaîne contenant l’adresse du SLS (https://silverlight.services.live.com)

HttpWebRequest _requete;

string _fileName = “C:/Users/GuillaumeGas/Desktop/essaiVideoNumberOne/”;

string _fileSetName = “copy”;

string _ID, _Key;

string serviceRoot = “https://silverlight.services.live.com/”;

Dans un premier temps, il va falloir effectuer une authentification, ainsi qu’une recherche de l’emplacement du fichier à copier.

if (_fileSetName != “” && _fileName != “”) {

// Récupération du nom du FileSet à copier

FileInfo _fInfo = new FileInfo(_fileName);

string _fileNameOnly = _fInfo.Name;

_requete = (HttpWebRequest)HttpWebRequest.Create(_serviceRoot + _ID + “/” + _fileSetName);

}

// Authentification credentials

_requete.Credentials = new NetworkCredential(_ID, _Key);

// Déclaration de la méthode COPY

_requete.Method = “COPY”;

// Envoi de la réponse

_requete.Headers["Destination"] = _serviceRoot + _ID + “/copy”;

HttpWebResponse _resp = (HttpWebResponse)_requete.GetResponse();


Au final, on a réussi à copier le FileSet. Notons que la copie s’effectue de façon instantanée.

Suppression

Le principe est le même, à la seule différence qu’on effectue une requête de type DELETE.

Ici, imaginons qu’on souhaite supprimer notre copie précédemment créée :

if (_fileSetName != “”) {

_requete = (HttpWebRequest)HttpWebRequest.Create(_serviceRoot + _ID + “/” + _fileSetName);

}

On définit alors la requête DELETE :

// Déclaration de la méthode DELETE

_requete.Method = “DELETE”;

// Envoi de la réponse

HttpWebResponse _resp = (HttpWebResponse)_requete.GetResponse();


La suppression de la copie s’effectue alors instantanément.