Découvrir et apprendre à programmer avec l'API Cloud Orange

Cours de formation pratique pour intégrer l'API Cloud Orange dans ses applications
Image non disponible

Le Cloud Orange est adopté par des millions d'utilisateurs, en France, susceptibles d'être intéressés par une application qui interagit avec leur espace de stockage. C'est pour vous aider à adresser cette opportunité que ce tutoriel a été rédigé.

Un espace de dialogue vous est proposé sur le forum, si vous avez des remarques concernant ce tutoriel.

Commentez Donner une note à l'article (5)

Article lu   fois.

L'auteur

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Présentation de l'API

Orange met à disposition plusieurs API, parmi elles, on retrouve l'API Cloud France. Celle-ci permet aux utilisateurs de votre application d'utiliser leur Cloud Orange et ses 100 Gb de stockage confidentiel et personnel.

Vous pouvez utiliser cette API pour manipuler des fichiers, synchroniser des données, proposer du stockage à vos utilisateurs et accéder à un marché potentiel de plusieurs millions d'utilisateurs du Cloud Orange en France.

I-A. Inscription

Avant tout, il vous faut un compte développeur ; pour le créer c'est par ici.

Vous avez le formulaire d'inscription suivant qui s'affiche :

Formulaire d'inscription pour développeur
Formulaire d'inscription

Après la validation de ce formulaire, il est nécessaire de lire et d'accepter le Contrat Général d'Utilisation (CGU) :

Vous êtes inscrit ! Vous recevrez un mail de confirmation de votre inscription.

I-B. Création et paramétrage de l'application

La réception d'un mail pour valider le compte et créer une première application est systématique et quasiment instantanée.

Lors du clic sur le lien de validation, il est nécessaire de renseigner les quelques informations sur l'application qui va utiliser l'API, un nom et une description (en anglais si possible).

Enregistrement d'une application pour utiliser l'API Cloud Orange
Enregistrement d'une application

Le message de confirmation apparaît :

Application 'Ma Super Application' has been created. Now click ‘Add an API' to subscribe to an API and activate your client ID.

Ce qui peut se traduire en français par :

L'application « Ma Super Application » a été créée. Vous devez désormais cliquer sur « Ajouter une API » pour souscrire à une API et activer votre client ID.

Confirmation de la création de l'application dans l'environnement du Cloud Orange
Confirmation de la création de l'application

Il faut alors cliquer sur « ADD API », puis sélectionner « Cloud France » dans la longue liste d'API disponibles. C'est le cinquième de la liste.

Image non disponible
Ajout de l'API Cloud France

Ensuite, cliquez sur le bouton « Next » ; lisez et acceptez le Contrat Général d'Utilisation. Maintenant, cliquez à nouveau sur « Next » pour aller à l'étape suivante.

Accepter les termes d'utilisation de l'API Cloud Orange
Accepter les termes d'utilisation de l'API

Attention, l'étape qui vient est très importante ! Il s'agit d'ajouter l'URL de retour de l'API Cloud, c'est-à-dire que l'on va spécifier à Orange l'endroit où l'API va devoir rediriger l'utilisateur après sa connexion au Cloud Orange.

Autrement dit : c'est sur cette URL, complétée par le Authorization_code, que l'utilisateur sera redirigé après sa connexion. On pourra toujours modifier cette URL dans l'onglet Content Screen Details. Pour plus d'informations sur le fonctionnement, vous pouvez lire le tutoriel sur l'authentification 3-Legged.

Ajout de l'URL de redirection
Ajout de l'URL

On obtient alors le message de confirmation ci-dessous :

API 'Cloud France' has been added to application 'Ma Super Application'.

Ce qui peut se traduire en français par :

L'API « Cloud France » a été ajoutée à l'application « Ma Super Application ».

La demande est automatiquement approuvée et on obtient :

  • un Application ID ;
  • un Client ID ;
  • un Client Secret ;
  • un Authorization header.

Pour ceux qui l'ont remarqué, l'Authorization header est encodé en base64. Il est à utiliser brut, comme fourni, il s'agit d'une simple chaîne de caractères si vous vous amusez à la décoder.

Confirmation de l'ajout de l'API Cloud Orange à l'application
Confirmation de l'ajout de l'API à l'application

Pour voir le Client ID et le Client secret, il est nécessaire de cliquer sur le bouton « Show » puis d'entrer son mot de passe. Après quoi, les deux informations apparaissent.

Saisie du mot de passe
Saisie du mot de passe

Et les détails s'affichent :

Affichage des informations de connexion à l'API Cloud Orange
Affichage des détails

II. Programmation avec l'API Cloud Orange

Maintenant, vous disposez de tout ce qui est nécessaire pour pouvoir réaliser vos appels à l'API. Il ne vous reste qu'à utiliser les SDK mis à disposition. Libre à vous d'utiliser votre propre langage, l'API étant une API REST, vous pouvez utiliser PHP avec cURL ou bien d'autres langages.

Des SDK ont été mis à disposition pour d'autres langages :

Liste des SDK de l'API Cloud Orange

La liste des SDK disponibles et à jour est disponible ici.

II-A. Programmer pour une application en langage Python

II-A-1. Pour démarrer

Pour Python, il est nécessaire de posséder … Python ! Pour télécharger l'installeur, c'est par ici.

Nous utiliserons la version 3.5 de Python pour cet exemple. Cependant, vous pouvez décider de prendre la version 2.7 pour l'intégrer à votre projet, cela n'a pas d'importance.

Une fois l'installation de Python terminée, on démarre « Python » et « IDLE », il s'agit de l'interpréteur Python et de la console Python. C'est dans cette dernière que nous allons coder notre application.

Aperçu de l'interpréteur Python
Interpréteur Python

La première étape va être de s'assurer du consentement de l'utilisateur dont on veut avoir accès à son compte Cloud.

Cela se fait avec la requête passer à l'URL suivant :

https://api.orange.com/oauth/v2/authorize?prompt=login%20consent&state=orangeCloud&redirect_uri=[REDIRECT_URI]&response_type=code&client_id=[CLIENT_ID]&scope=openid%20Cloud

Pensez à utiliser la bibliothèque urllib avec :

 
Sélectionnez
1.
2.
3.
import urllib
f = { 'redirect_uri' : 'http://www.masuperapplication.com/'}
urllib.urlencode(f)

En effet, cette dernière vous facilitera la tâche. Les espaces doivent être remplacés par des %20, les slash par des %2F.

Notre utilisateur arrivera donc sur la page de connexion Orange Cloud puis, une fois authentifié, il sera redirigé sur la page spécifiée dans votre redirect_uri :

http://www.masuperapplication.com/?code=OFR-3987d7…d5r47eff&state=state

Il ne vous reste plus qu'à récupérer ce code lors de la redirection. Vous devrez passer le code au constructeur de la classe OrangeCloudClient. Lors de l'instanciation, la classe se chargera seule de l'entière gestion des tokens d'authentification. Vous n'aurez pas à gérer cette partie.

Attention, avant de donner son consentement, l'utilisateur doit avoir accepté le contrat général d'utilisation du Cloud Orange. S'il ne l'a pas encore accepté, la demande retournera une erreur CGU_NOT_ACCEPTED. Toutefois, une page pour accepter le contrat est présentée automatiquement à l'utilisateur lors de sa connexion.

II-A-2. Instanciation de OrangeCloudClient

Avant toute chose, il faut commencer par importer les bonnes bibliothèques. Pour cela, il suffit de rentrer la ligne ci-dessous :

 
Sélectionnez
1.
from pyorangeCloud import OrangeCloudClient

Ensuite, l'instanciation est simple, elle se fait comme suit :

 
Sélectionnez
1.
app = {'clientId':'CLIENT_ID','clientSecret':'CLIENT_SECRET','redirectUri':'REDIRECT_URI'} client = OrangeCloudClient(app,authCode='CODE_RECUPERE_LORS_RECUPERATION_DEMANDE_CONSENTEMENT')

II-A-3. Lister le contenu d'un dossier

Pour lister le contenu d'un dossier, le code est le suivant :

 
Sélectionnez
1.
2.
3.
folderInfo = client.listFolder(for f in folderInfo['subfolders']+folderInfo['files']:     
    print (f['name'] + ' ' + f.get('type',''))

Ce code permet d'avoir la liste des fichiers et dossiers à la racine du Cloud.

Pour lister le contenu d'un dossier spécifique, il est nécessaire de passer un identifiant de dossier à la méthode « listFolder(FILE_ID) ».
Aussi, si vous souhaitez récupérer récursivement le contenu de dossier et des sous-dossiers, vous utiliserez la méthode « listAllFiles() » en lieu et place de « listFolder() ».

II-A-4. Récupérer les informations d'un fichier ou d'un dossier

Dans l'exemple précédent, nous avons vu comment récupérer le contenu du dossier racine. Cependant, pour passer un FILE_ID à notre méthode, il est nécessaire de pouvoir récupérer ce FILE_ID. Pour cela, voici comment faire :

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
folderInfo = client.listFolder()
for d in folderInfo['subfolders']:
     print (d['name']) 
files = folderInfo['files'] 
for f in files:
     details = client.getFileInfo(f['id'])
     print ("%(name)s: type:%(type)s size:%(size)s date:%(creationDate)s" % details)

Vous avez maintenant toutes les informations pour lister le contenu du Cloud Orange. Nous allons maintenant voir comment télécharger du contenu.

II-A-5. Télécharger du contenu

Pour télécharger du contenu, c'est extrêmement simple. Il suffit de donner un identifiant de fichier à cette fonction et un répertoire de téléchargement. Cette simple ligne se charge de tout !

 
Sélectionnez
1.
client.downloadFile(fileId,"/my/target/directory-or-file")

II-A-6. Envoyer du contenu

Pour envoyer du contenu, l'opération est simple aussi, il s'agit de la fonction suivante :

 
Sélectionnez
1.
fileId = client.uploadFile("mypicture.jpg",folderInfo['id'],"@/my/file/location/mypicture.jpg")

Cette dernière prend trois arguments en paramètre :

-            le premier est le nom du fichier qui va être envoyé ;

-            le second est l'identifiant du répertoire dans lequel on upload le fichier ;

-            le troisième est le lieu de stockage local du fichier (le path du fichier à envoyer).

II-A-7. Supprimer un fichier ou répertoire

Ces deux fonctions prennent en argument l'identifiant du répertoire à supprimer.

 
Sélectionnez
1.
2.
3.
4.
5.
#Pour un fichier
client.deleteFile(fileId)

#Pour un dossier
client.deleteFolder(folderId)

II-A-8. Créer un répertoire

Pour créer un répertoire sur le Cloud Orange, il est nécessaire de passer en paramètre à la fonction suivante le nom du répertoire à créer ainsi que l'identifiant du dossier parent (dans l'arborescence du Cloud).

 
Sélectionnez
1.
folderInfo = client.createFolder("myfoldername",myFolderId)

Voici un résumé des fonctions disponibles dans le SDK officiel en Python ; cependant, libre à vous d'utiliser votre propre langage. L'API étant une API REST, vous pouvez utiliser n'importe quel langage que vous maîtrisez, ou même directement cURL.

Liste des fonctions de l'API Cloud Orange disponibles pour le langage Python
Liste des fonctions disponibles pour le langage Python

II-B. Programmer pour une application Java sous Android

II-B-1. Pour démarrer

Il est nécessaire de télécharger et d'installer Android Studio téléchargeable sur ce lien.

L'installation d'Android Studio requiert Java :

Après installation, on démarre Android Studio, puis on clique sur « Import project (Eclipse ADT, Gradle, etc.) ».

Le menu au démarrage d'Android Studio se présente comme suit :

Menu au démarrage de Android Studio
Menu démarrage Android Studio

Nous sélectionnons alors le chemin (path) du dossier exemple (sample) (OrangeCloudAndroidSdk-master/sample), puis on clique sur OK, comme indiqué ci-dessous :

Chemin d'accès au projet d'exemple dans Android Studio
Chemin d'accès au projet d'exemple

À ce stade, il est important de remplacer le APP_KEY, le APP_SECRET et le APP_REDIRECT_URI par les clés d'API données dans votre espace client Orange dans le fichier MainActivity.java :

 
Sélectionnez
1.
2.
3.
final static private String APP_KEY = "votre api key";
final static private String APP_SECRET = "votre app secret";
final static private String APP_REDIRECT_URI = "votre url de redirection";

II-B-2. Prérequis pour le bon fonctionnement du script

Maintenant, nous allons vérifier les deux conditions qui font que cela va fonctionner.

II-B-2-a. Vérifier le AndroidManifest.xml

Pour que l'utilisateur puisse s'authentifier auprès d'Orange, il est nécessaire d'ajouter ce petit bloc de code en dessous de la balise <application>, donc juste après le </application>.

 
Sélectionnez
1.
2.
3.
4.
<activity
    android:name="com.orange.labs.sdk.activity.AuthActivity"
    android:launchMode="singleTask"
    android:configChanges="orientation|keyboard"/>

La balise est auto-fermante, pas besoin de </activity>.

Vous pouvez lire notre tutoriel, pour en savoir plus sur comment accéder aux données ou contenus personnels d'un utilisateur via l'« authentification 3-legged ».

On peut également vérifier que notre application Android a bien le droit d'utiliser le réseau Internet, toujours dans le AndroidManifest.xml. Pour attribuer le droit, voici la ligne de code à rajouter (en dessous de la section <manifest>, donc après la balise </manifest>.

 
Sélectionnez
1.
<uses-permission android:name="android.permission.INTERNET"></uses-permission>

II-B-2-b. Vérifier le Activity.java

Dans le fichier Activity.java, on rajoute les constantes d'API Orange (fournies à l'étape de l'inscription).

 
Sélectionnez
1.
2.
3.
final static private String APP_KEY = "votre api key";
final static private String APP_SECRET = "votre app secret";
final static private String APP_REDIRECT_URI = "votre url de redirection";

II-B-3. L'utilisation de l'API

Attention, dans cette partie nous allons traiter de l'authentification de l'API (comprendre que votre application se connecte aux serveurs Orange) et de l'authentification de l'utilisateur (qui doit lui aussi s'authentifier pour que notre application puisse utiliser son espace de stockage Cloud). Il est important de ne pas les confondre, aussi, l'utilisateur doit posséder un espace sur le Cloud Orange. S'il n'en a pas, c'est par ici.

Rien d'étonnant, avant d'utiliser l'API, il est nécessaire d'authentifier l'application auprès d'Orange, et cela se fait simplement :

 
Sélectionnez
1.
2.
3.
4.
5.
6.
// Dans la déclaration de classe
public OrangeCloudAPI<AuthSession> mApi;

// On instancie un objet de type AuthSession que l'on appelle session. La magie du SDK s'occupe du reste.
AuthSession session = new AuthSession(Activity.this, APP_KEY, APP_SECRET, APP_REDIRECT_URI);
mApi = new OrangeCloudAPI<AuthSession>(session);

Comme dans toute API, il est nécessaire de définir un « scope » pour notre accès, dans le fichier AndroidManifest.xml. Un « scope » est un paramètre qui permet de définir la portée des droits de la demande d'autorisation. Les différents scopes sont définis dans le Getting Started de l'API Cloud d'Orange.

On définit le scope avec cette ligne de code :

 
Sélectionnez
1.
mApi.addScope("Cloud");

Le « scope » dépend de l'utilisation que votre application va avoir avec le Cloud d'Orange.

Il est possible d'utiliser de multiples « scope ». Il suffit de les écrire les uns à la suite des autres avec des espaces. Par exemple :

 
Sélectionnez
1.
mApi.addScope("Cloud Cloudfullread") ;

Le « scope » Cloudfullwrite est soumis à autorisation. Par défaut, « Ma Super Application » ne peut pas écrire dans l'ensemble du Cloud Orange. Pour obtenir cette autorisation, il est nécessaire de faire la demande ici.

Maintenant, il est nécessaire d'authentifier l'utilisateur auprès d'Orange. Pour cela, s'il s'agit de la première connexion de l'utilisateur, la méthode ouvre une AuthActivity (déclarée dans le AndroidManifest.xml). Cette étape permet d'authentifier l'utilisateur ainsi que d'autoriser l'accès aux services Cloud d'Orange.

 
Sélectionnez
1.
mApi.getSession().startAuthentication(); 

Lors de l'authentification, l'utilisateur est renvoyé vers votre Activity.java. À ce moment, pour finir l'authentification de l'utilisateur, vous devez compléter votre méthode onResume avec le code suivant :

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
@Override
protected void onResume() {
    super.onResume();
    // Récupère la session et regarde ou en est le processus d'authentification
    final AuthSession session = mApi.getSession();
    session.checkAuthentication(new OrangeListener.Success<String>() {
        @Override
        public void onResponse(String response) {
            // La session est valide, vous pouvez utiliser les fonctions du Cloud Orange.
        }
    }, new OrangeListener.Error() {
        @Override
        public void onErrorResponse(OrangeAPIException error) {
            // Il y a eu une erreur lors du processus
        }
    });
} 

II-B-4. Quelques exemples de codes

II-B-4-a. Lister le contenu du Cloud Orange

Pour lister le contenu d'un répertoire, vous devez passer un objet Entry. Si vous souhaitez récupérer la racine, passez un null.

Attention, dans le code suivant, le paramètre est un JSONObject et doit systématiquement contenir au minimum Authorization (le jeton d'autorisation) et folderId (le chemin du répertoire à récupérer).

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
mApi.listEntries(anEntry, parameters, new OrangeListener.Success<OrangeCloudAPI.Entry>() {
    Override
    public void onResponse(OrangeCloudAPI.Entry response) {
        // success
    }
}, new OrangeListener.Error() {
    @Override
    public void onErrorResponse(OrangeAPIException error) {
        // Error occurred
    }
}); 

On peut décider de passer d'autres paramètres pour récupérer les thumbnails
showthumbnails. Si les paramètres sont présents, la réponse de l'API contiendra systématiquement la miniature, la preview ou une URL de téléchargement pour chaque fichier.


Il est aussi possible de souhaiter récupérer uniquement les photos ou les vidéos. Cela est possible avec le paramètre filter : il peut contenir les valeurs suivantes : [image|video|audio|other].

La réponse de l'API sera sous la forme suivante pour chaque fichier :

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
file_def {
    id (string, optional),
    name (string, optional),
    size (integer, optional),
    creationDate (date-time, optional),
    lastUpdateDate (date-time, optional),
    type (string, optional) = ["FILE" or "PICTURE" or "VIDEO" or "AUDIO"],
    downloadUrl (string, optional),
    previewUrl (string, optional),
    thumbUrl (string, optional),
    metaData (object, optional)
}

II-B-4-b. Envoyer un fichier vers le Cloud d'Orange

Il est important de noter que cette tâche pouvant être longue, elle doit être appelée en tâche de fond, cela pour ne pas faire patienter l'utilisateur durant le processus. Il doit s'agir d'un background ou d'un IntentService.

Pour savoir comment créer un IntentService, voici le lien.

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
  mApi.upload(fileUri, filename, entryToUpload, new OrangeListener.Success<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            // Le fichier est envoyé
        }
    }, new OrangeListener.Progress() {
        @Override
        public void onProgress(float ratio) {
            // Progress bar (ratio = [0,1])
        }
    }, new OrangeListener.Error() {
        @Override
        public void onErrorResponse(OrangeAPIException error) {
            // Une erreur a été levée
        }
});

II-C. Programmer pour une application sous iOS (Swift)

II-C-1. Pour démarrer

En rappel, vous devez avant tout développement posséder un Client ID et un Client Token pour pouvoir appeler l'API.

Pour programmer en Swift, vous devez disposer de Xcode et d'un Mac en mode développeur. Pour cela rien de plus simple, rendez-vous dans l'App Store de votre Mac puis cherchez « Xcode ».

L'installation est simplifiée et vous n'avez rien à faire pour que cela fonctionne.

À présent, rendez-vous sur le lien de téléchargement du SDK Swift de l'API Cloud Orange.

Pour ceux qui utilisent Git, vous pouvez cloner le repo git. Pour cela, ouvrez votre terminal, et lancez successivement les commandes :

 
Sélectionnez
git init
git clone https://github.com/Orange-OpenSource/OrangeCloudIOSSdk.git

Pour les autres, vous pouvez cliquer sur « Download in Zip » comme présenté dans la figure ci-dessous.

Télechargement des composants Git
Télechargement des composants Git

Vous vous retrouvez donc avec un répertoire zip à décompresser. Après la décompression, lancez le fichier « OrangeCloudSDK.xcodeproj ».

Vous êtes à présent dans Xcode. Avec le projet lancé, vous avez l'arborescence suivante :

Arborescence du projet Xcode
Arborescence projet Xcode

À ce stade, il est important de remplacer le APP_KEY, le APP_SECRET et le APP_REDIRECT_URI par les clés d'API données dans votre espace client Orange dans le fichier BrowseController.m.

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
(void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor whiteColor];

    // Créez un objet connexion qui fera la première authentification utilisateur et une session avec l'API Cloud Orange

    self.CloudManager = [[CloudManager alloc] initWithAppKey:@"APP_KEY"
                                                   appSecret:@"APP_SECRET"
                                                 redirectURI:@"APP_REDIRECT_URI"];
    
    [self.CloudManager setUseWebView:TRUE];
    [self.CloudManager setForceLogin:TRUE];
}

À présent, vous n'avez plus qu'à compiler et démarrer votre simulateur iOS pour obtenir un projet fonctionnel.

Bien que le SDK ait été écrit en Objective-C, ce dernier a été conçu de manière à maximiser la compatibilité avec Swift. Ainsi, si vous souhaitez utiliser le SDK dans un projet Swift, vous n'avez qu'à ajouter la ligne suivante dans le bridging header de votre application :

 
Sélectionnez
1.
#import "CloudManager.h"

Généralement, ce fichier est appelé MA-SUPER-APPLICATION-Bridging-Header.h.

L'authentification est automatiquement gérée par le SDK. Aussi, vous n'avez pas à gérer cette partie dans votre code.

La gestion du « scope » est automatique en fonction des usages de votre application. Aussi, cette partie n'a pas à être gérée dans votre code.

II-C-2. La classe CloudManager

Il s'agit de la classe principale du SDK, cette dernière vous autorise l'accès à l'intégralité des fonctionnalités du Cloud (Authentification utilisateur, liste des fichiers, informations de fichiers…).

Lors du développement de votre application, vous n'avez qu'à instancier un objet CloudManager avec votre CLIENT_ID et votre CLIENT_TOKEN dans la vue principale. Ensuite, lorsque l'utilisateur a donné son consentement, vous pourrez accéder à ses fichiers.

II-C-3. Quelques exemples de codes

II-C-3-a. Lister le contenu du Cloud Orange

Pour lister le contenu d'un répertoire, voici le code adéquat :

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
func listFolder (context : TestContext, result : (TestState)->Void) {
    if let folder = context.testFolder {
        context.manager.listFolder(folder, restrictedMode: false, showThumbnails: true, filter: .All, flat: false, tree: false, limit: 0, offset: 0) { items, status in
            if let items = items as? [CloudItem] where items.count > 0 {
                context.testFile = items[0]
            }
            result (status == StatusOK ? .Succeeded : .Failed)
        }
    } else {
        result (.Failed)
    }
}

La réponse de l'API sera sous la forme suivante pour chaque fichier :

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
file_def {
    id (string, optional),
    name (string, optional),
    size (integer, optional),
    creationDate (date-time, optional),
    lastUpdateDate (date-time, optional),
    type (string, optional) = ["FILE" or "PICTURE" or "VIDEO" or "AUDIO"],
    downloadUrl (string, optional),
    previewUrl (string, optional),
    thumbUrl (string, optional),
    metaData (object, optional)
}

II-C-4. Envoyer un fichier vers le Cloud d'Orange

Il est important de noter que cette tâche pouvant être longue, elle doit être appelée en tâche de fond, cela pour ne pas faire patienter l'utilisateur durant le processus.

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
 func uploadFile (context : TestContext, result : (TestState)->Void) {
    let bundle = NSBundle.mainBundle()
    if let folder = context.testFolder,
        path = bundle.pathForResource("image", ofType: "jpg"),
        data = NSData (contentsOfFile: path) {
        context.manager.uploadData(data, filename: "image.jpg", folderID: folder.identifier, progress: nil) { item, status in //) { CloudItem, status in
            if status == StatusOK {
                context.testFile = item
                result (.Succeeded)
            } else {
                result (.Failed)
            }
        }
    } else {
        result (.Failed)
    }
}

Remerciements

Nous remercions Philippe Granger pour la rédaction de ce tutoriel, Guillaume Sigui pour la relecture technique et la mise au gabarit, et Malick Seck pour sa relecture orthographique.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2016 Orange. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.