Base de connaissance Apps Panel

S’abonner

WS & Cache manager

APWSManager est un outil permettant la gestion automatique de requêtes WS Apps-panel.

La classe créée l'appel WS correspondant à l'action désirée puis télécharge les données, les traite et les enregistre en cache dans l'application de manière automatisée.

 

1. Constructeur d'URL

L'envoi des params au Manager se fait sous forme de NSDictionnary

    //Dictionnaire de param GET à envoyer au WS
    // ¡¡¡ Chaque object doit être un NSArray, un NSDictionnary ou une NSString ET doit être non nil !!!
    NSMutableDictionary *get = [NSMutableDictionary dictionary];
    [get setObject:@"madatastring" forKey:@"maKey"];
    [get setObject:@"madatastring2" forKey:@"maKey2"];
    [get setObject:@[@”madatastring3", @”madatastring4”] forKey:@"maKey3"];
    [get setObject:@{@”unekey":@”madatastring5”} forKey:@"maKey4"];

On appelle ensuite le constructeur qui génèrera l'URL

    //On instancie un objet APWSManager avec les paramètres qui nous intéressent
    APWSManager *apws = [[APWSManager alloc] initWithAction:@"get_petitions" delegate:self WithGet:get andTag:1];

    // En V4, on utilisera les méthodes REST
    APWSManager *apws = [[APWSManager alloc] initWithRest:@"action" delegate:self WithGet:get andTag:1]

Plusieurs constructeurs sont disponibles en fonction du besoin

    - (id)initWithRequest:(NSMutableURLRequest *)request delegate:(id)del andTag:(int)aTag;

    // En V3
    - (id)initWithAction:(NSString *)action delegate:(id)del WithGet:(NSDictionary *)dictionnary andTag:(int)aTag;
    - (id)initWithAction:(NSString *)action delegate:(id)del WithGet:(NSDictionary *)dictionnary andPost:(NSDictionary *)postDictionnary andTag:(int)aTag;





    // Init V4 (REST)
    - (id)initWithRest:(NSString *)action delegate:(id )del WithGet:(NSDictionary *)dictionnary andTag:(int)aTag; // GET
    - (id)initWithRest:(NSString *)action delegate:(id )del WithGet:(NSDictionary *)dictionnary andPost:(NSDictionary *)postDictionnary andTag:(int)aTag; // POST
    - (id)initWithRest:(NSString *)action delegate:(id )del WithGet:(NSDictionary *)dictionnary andPut:(NSDictionary *)putDictionnary andTag:(int)aTag; // PUT
    - (id)initWithRest:(NSString *)action delegate:(id )del WithGet:(NSDictionary *)dictionnary andPatch:(NSDictionary *)patchDictionnary andTag:(int)aTag; // PATCH
    - (id)initWithRest:(NSString *)action delegate:(id )del WithGet:(NSDictionary *)dictionnary andDelete:(NSDictionary *)deleteDictionnary andTag:(int)aTag; // DELETE

2. Utilisation du APWSManager

Pour lancer ou arrêter le processus deux méthodes sont à utiliser

    // Méthode pour commencer le téléchargement des données
    - (void)start;

    // Méthode pour annuler la NSURLSessionDataTask  et réinitialiser les données
    - (void)cancel;

On peut également désactiver le cache si besoin

    //Méthode pour désactiver le cache si nécessaire
    [apws setDesactiveCache:YES];

3. Les méthodes delegate

2 méthodes delegate sont disponibles et sont optionnelles

    méthodes delegate sont disponibles et sont optionnelles
    //Called after the request Failed
    - (void)apwsFailedDownload:(APWSManager *)apws;

    //Called after the request Succeed
    - (void)apwsFinishedDownload:(APWSManager *)apis;

Les données sont récupérables de la manière suivante depuis les méthodes delegate

    /*
    * apws.result = nil => cache desactivé ou pas de fichier cache en mémoire
    * apws.dateLastCache => date de la dernière mise à jour du fichier en cache
    * apws.result => cache du dernier object stocké en mémoire
    */
    - (void)apwsFailedDownload:(APWSManager *)apws {
            // S'il y a un retour cache
            if (apws.result) {
                    //On vérifie le tag de l'object APWSManager pour envoyer les données à la bonne méthode
                    if (apws.tag == 1) {
                        // Avec la date stockée en apws.dateLastCache on peut vérifier la validité des données (sont elles périmées ou non)
                        //NSLog(@"%@", apws.dateLastCache);

                        //Appel d'une méthode pour utiliser les données
                        [self useDataFromWS:apws.result];
                    }
            }
    }

    /*
    * apws = Retour du WS (En général NSMutableArray ou NSMutabeDictionnary) ou nil si pas de retour
    */
    - (void)apwsFinishedDownload:(APWSManager *)apws {
            //On vérifie le tag de l'object APWSManager pour envoyer les données à la bonne méthode
            if (apws.tag == 1) {

                    //Appel d'une méthode pour utiliser les données
                    [self useDataFromWS:apws.result];
            }
    }

Il existe également plusieurs méthodes et fonctions pour aider le développeur :

    // Récupère le cache pour la requête s'il existe (sans appelé le server)
    + (id)getCacheFor:(NSURLRequest *)request;

    // Récupère le timestamp cache pour la requête (-1 s’il n’existe pas)
    + (NSTimeInterval)timeStampCacheFor:(NSURLRequest *)request;

    // Permet de récupéré la requête
    - (NSMutableURLRequest *)getTheRequest;

Pour envoyer des fichiers lors d’un appel Webservice

    // NSArray of NSDictionnary (expected key "Name" (NSString *),  "FileName" (NSString *) and "Data" (NSData *))
    @property (nonatomic, strong) NSArray *listFiles;

Si vous souhaitez vous rendre sur la Console WS, cliquez ici !

Cet article vous a-t-il été utile ?
Utilisateurs qui ont trouvé cela utile : 0 sur 0
Vous avez d’autres questions ? Envoyer une demande