Scripting Vugen – Exemple de traitement de variables C et de paramètres VUGEN

Je vous présente, ci-dessous, un exemple de code VUGEN dans lequel plusieurs points sont abordés :

  • Déclaration de variables C
  • Sauvegarde d’un retour HTTP dans un paramètre VUGEN
  • Instanciation d’une variable C avec la taille exacte du paramètre VUGEN (malloc)
  • Traitement de la variable C pour enlever les espaces
  • Sauvegarde d’une variable C dans un paramètre VUGEN
  • Traitement du Paramètre VUGEN avec une expression régulière
  • Boucle sur la liste d’un paramètre VUGEN
  • Et autre…
// Déclaration de la méthode Strip
void strip(char *s);
	
// Déclaration des variables C
int arrSize;
int iBureauxcount;
int x;
char arrayParamName[512]; 
char *sStr = NULL;
char sVar[8192];
	
Action()
{
	
// Recupération d'une partie du BODY
web_reg_save_param_ex(
	"ParamName=ALL_BUREAUX",
	"LB/IC=Example",
	"RB/IC=Example",
	"Ordinal=1",
	"SEARCH_FILTERS,
	"Scope=body",
	"IgnoreRedirections=No",
	"RequestUrl=*/example.do",
	LAST);
		
// Appel métier
web_custom_request("calculAlertesAction.do_7", 
	"URL=https://example.do", 
	"Method=POST", 
	"Resource=0", 
	"RecContentType=application/json", 
	"Referer=https://example.do", 
	"Snapshot=t373.inf", 
	"Mode=HTTP", 
	"EncType=application/json; charset=UTF-8", 
	"Body=BODY REQUEST", 
	LAST);

// Création d'une variable C de type integer contenant la valeur de la taille du paramètre {ALL_BUREAUX}
arrSize = strlen(lr_eval_string("{ALL_BUREAUX}"));
		
// Création d'une variable C de type char, de la taille exacte du paramètre VUGEN {ALL_BUREAUX}
sStr = (char *)malloc((arrSize + 1) * sizeof(char));
		
// Copy du paramètre VUGEN {ALL_BUREAUX} dans la variable C sStr
strcpy(sStr, lr_eval_string("{ALL_BUREAUX}") );
		
// Suppression des espaces dans la variable C sStr
strip(sStr);
		
// Sauvegarde de la variable C sStr dans un nouveau paramètre VUGEN {ALL_BUREAUX_CLEAN}
lr_save_string(sStr, "ALL_BUREAUX_CLEAN");
		
// Suppression de la variable C sStr
free(sStr);
		
// Traitement du nouveau paramètre VUGEN {ALL_BUREAUX_CLEAN} avec une expression régulière
lr_save_param_regexp (
	lr_eval_string("{ALL_BUREAUX_CLEAN}"),
	strlen(lr_eval_string("{ALL_BUREAUX_CLEAN}")),
	"RegExp/IC=(option value=\\\".*?\\\">.*?\\\/option)",
	"Ordinal=All",
	"ResultParam=BUREAU_CLEAN",
	LAST );
		
// Création d'une variable C de type integer contenant le nombre d'enregistrements trouvés
iBureauxcount = atoi(lr_eval_string("{BUREAU_CLEAN_count}"));

// Affiche du nombre d'enregistrement trouvés
lr_output_message("Number of items found = %d", iBureauxcount);

// Boucle tant qu'il y a des enregistrements
for (x=1; x<=iBureauxcount; x++) 
{ 

        // Incrementation du paramètre VUGEN avec la valeur de la variable C x 
        sprintf(arrayParamName, "{BUREAU_CLEAN_%d}", x); 

        // Test si la valeur est trouvée 
        if (((char *)strstr(lr_eval_string(arrayParamName), lr_eval_string("{Terrain_Param}")) != 0)) { 

               // Affichage de la chaine recherchée 
               //lr_output_message ("%s: %s", arrayParamName, lr_eval_string(arrayParamName)); 

               // La valeur est trouvée, traitement du paramètre arrayParamName avec une expression régulière 
               // et sauvegarde d'un nouveau paramètre VUGEN {BUREAU_VALIDE} 

               lr_save_param_regexp ( lr_eval_string(arrayParamName), 
                     strlen(lr_eval_string(arrayParamName)), 
                     "RegExp/IC=option value=\\\"(.*?)\\\">.*?\\\/option",
                     "Ordinal=1",
	             "ResultParam=BUREAU_VALIDE",
	             LAST );
				
                lr_output_message ("%s: %s", arrayParamName, lr_eval_string(arrayParamName)); 			
         }
         else
         {
                lr_output_message ("NON"); 
         }	
                //lr_output_message ("%s: %s", arrayParamName, lr_eval_string(arrayParamName)); 
         }
		
// Création d'une variable C de type integer contenant le nombre d'enregistrements trouvés
iBureauxcount = atoi(lr_eval_string("{LISTE_BUREAU_count}"));

//strcpy(sVar, "idDossierSelectionne=&");
//strcat(sVar, "Name=idObjetDetail&");

// Boucle tant qu'il y a des enregistrements
for (x=1; x<=iBureauxcount; x++) { 

        // Incrementation du paramètre VUGEN avec la valeur de la variable C x 
        sprintf(arrayParamName, "{LISTE_BUREAU_%d}", x); 

        lr_output_message ("%s: %s", arrayParamName, lr_eval_string(arrayParamName)); 

        if(x == 1 && x == iBureauxcount ) 
        { 
                strcpy(sVar, lr_eval_string(arrayParamName)); 
        } 
        else if (x == 1 && x != iBureauxcount) 
        { 
                strcpy(sVar, lr_eval_string(arrayParamName)); 
                strcat(sVar, "%2C"); 
        } 
        else if (x > 1 && x < iBureauxcount) 
        { 
                strcat(sVar, lr_eval_string(arrayParamName)); strcat(sVar, "%2C"); 
        } 
        else if (x > 1 && x == iBureauxcount)
        {
                strcat(sVar, lr_eval_string(arrayParamName));
        }
					
}
			
// Sauvegarde de la variable C sVar dans le paramètre VUGEN {LISTE_BUREAU_CLEAN}
lr_save_string(sVar, "LISTE_BUREAU_CLEAN");
	
	
return 0;
}

// Méthode pour supprimer les espaces vide d'une variable C
void strip(char *s) 
{
	char *p2 = s;
	while(*s != '\0') 
	{
	        if(*s != '\t' && *s != '\n') 
	        {
	               *p2++ = *s++;
	        } 
                else 
	        {
	                ++s;
	        }
	}
	*p2 = '\0';
}

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

Partagez
Tweetez
Partagez