Les fichiers sources sont dans ${UPS_HOME}/upsnet/demo/${UPS_LANGUAGE}/appcns/.
; -------------------------------------------------------------------
; Fichier : upssrv.ini
; Objet : Initialisation d'Up ! Server.
;
; Module : Up ! Application System.
; Auteur-Date : DUVAL Jean-Pierre - Novembre 2003.
; -------------------------------------------------------------------
; Observations
;
;
; -------------------------------------------------------------------
[UpsCns]
NbServeurs=1
ServiceDefaut=Non
TracerCommunication=Oui
URIServeur=http://local:8080
[appcns]
ActiverJournal=Oui
MaPartition=C:/http
upscmp Source=client.upl
upscmp Source=appcns.upl
upssrv PasDOrb=Oui Module1=UpsCns Module2=appcns
client NbServeurs=0
upssrv PasDOrb=Oui Module1=UpsCns Module2=appcns
upssng Source=client.upl NbServeurs=0
Source Composant "Exemple d'emploi d'Up ! Content Service" Version 4.0.0;
ImporterModule
/************/
UpsWww(<UpsWww>, ImporterDefinitions);
UpsCns(<UpsCns>, ImporterDefinitions);
Variable
/******/
S : Nul Ou ServeurContenu;
Requete : Nul Ou RequeteContenu;
Reponse : Nul Ou ReponseContenu;
Prive :
/*****/
Procedure EcrireEntite(Libelle : Caractere, E : Nul Ou EntiteContenuInternet)
/***************************************************************************/
Variable
/******/
F : Nul Ou Fichier;
L : Nul Ou Caractere;
Debut
Ecran.Ecrire(Libelle);
Si E!=Nul Alors
F=E.LireContenu(LectureTexte);
TantQue Non F.FinDeFlux Faire
?=F.LireUneLigne(L);
Ecran.Ecrire(L);
Fin TantQue
F.Fermer();
Ecran.Ecrire(");
Fin Si
Fin Procedure
Principal
/*******/
Debut
S=ServeurContenu("http://local:8080", "scott", ");
Requete=RequeteContenu("http://local:8080/ListeEmployes", MethodeContenuLireRessource);
Reponse=S.Soumettre(Requete);
EcrireEntite("LireRessource", Reponse.EntitePrimaire);
Requete=RequeteContenu("http://local:8080/ListeEmployes?Nom=CLARK&Numero=7712&Salaire=1200.00", MethodeContenuEcrireRessource);
Reponse=S.Soumettre(Requete);
EcrireEntite("EcrireRessource", Reponse.EntitePrimaire);
Requete=RequeteContenu("http://local:8080/ListeEmployes?Numero=7712&Nom=Clark&Salaire=1300.00", MethodeContenuModifierRessource);
Reponse=S.Soumettre(Requete);
EcrireEntite("ModifierRessource", Reponse.EntitePrimaire);
Requete=RequeteContenu("http://local:8080/ListeEmployes?Numero=7712", MethodeContenuSupprimerRessource);
Reponse=S.Soumettre(Requete);
EcrireEntite("SupprimerRessource", Reponse.EntitePrimaire);
S=Nul;
Fin Principal
Source Module "Exemple d'emploi d'Up ! Content Service" Version 4.0.0 ModuleDynamique;
Composant Dans "appcns1.upl";
Source Composant "Up ! Content Service" Version 4.0.0 RattacherA "appcns.upl";
ImporterModule
/************/
UpsWww(<UpsWww.upi>, ImporterDefinitions);
UpsCns(<UpsCns.upi>, ImporterDefinitions);
Prive :
/*****/
Type MonClientContenu Defaut
/**************************/
Public :
Identification : Nul Ou Caractere;
Constructeur();
Fin Type
Type Employe Defaut
/*****************/
Public :
Nom : Caractere;
Numero : Entier;
Salaire : Reel;
Constructeur();
Fin Type
Parametre <upssrv.ini> Section "appcns"
/*************************************/
Prive :
/******/
MaPartition : Caractere;
ActiverJournal : Booleen;
Variable
/******/
Prive :
/******/
ListeEmployes : Nul Ou ListeDe Employe;
MonEmploye : Employe;
Prive :
/******/
Procedure EcrireJournal(Client : ClientContenu, MonClient : MonClientContenu, Action:Caractere)
/*********************************************************************************************/
Debut
Si MonClient.Identification==Nul Alors
MonClient.Identification=Caractere(Client.Ip1)+"."+Caractere(Client.Ip2)+"."+Caractere(Client.Ip3)+"."+Caractere(Client.Ip4)+"/"+Caractere(Client.Port, "&&&");
Fin Si
Journal.Ecrire("Message appcns-1 : Le "+Caractere(DateSysteme())+" pour "+MonClient.Identification+" : "+Action);
Fin Procedure
Fonction Translater(NomFichier : Caractere) Retourner Caractere
/*************************************************************/
Debut
Retourner MaPartition+NomFichier;
Fin Fonction
Fonction AnalyserParametres(URIContenu : Caractere) Retourner Booleen
/*******************************************************************/
Variable
/******/
Chemin : Nul Ou Caractere;
Parametres : Nul Ou Caractere;
Debut
MonEmploye=Employe();
DecoderUniformResourceIdentifier(URIContenu, ?, ?, ?, ?, Chemin, Parametres);
Si Chemin!="/ListeEmployes" Alors
Retourner Faux;
Fin Si
MonEmploye.Nom=";
?=LireParametre(Global, "Nom", "UpsCns", MonEmploye.Nom, Parametres, Vrai);
MonEmploye.Numero=0;
?=LireParametre(Global, "Numero", "UpsCns", MonEmploye.Numero, Parametres, Vrai);
MonEmploye.Salaire=0.0;
?=LireParametre(Global, "Salaire", "UpsCns", MonEmploye.Salaire, Parametres, Vrai);
Retourner Vrai;
Fin Fonction
Fonction GenererContenu(Requete : Nul Ou RequeteContenu) Retourner Nul Ou ReponseContenu
/**************************************************************************************/
Variable
/******/
F : Fichier;
MonEmploye2 : Employe;
Numero : Entier;
MonEntite : Nul Ou EntiteContenuInternet;
Reponse : Nul Ou ReponseContenu;
Debut
F=Fichier("/tmp/listeemployes.html", LectureEcritureBinaire, MemoireVolatile);
F.Ecrire("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n");
F.Ecrire("<HTML>\n");
F.Ecrire("<HEAD><TITLE>Liste des employés</TITLE></HEAD>\n");
F.Ecrire("<BODY>\n");
F.Ecrire("<H1>Liste des employés</H1>\n");
F.Ecrire("<TABLE>\n");
F.Ecrire("<TR><TD><B>Nom</B></TD><TD><B>Numéro</B></TD><TD><B>Salaire</B></TD></TR>\n");
Si ListeEmployes!=Nul Alors
Pour MonEmploye2=ListeEmployes.ParcoursAuDebut() JusquA ListeEmployes.DernierElement() Faire
F.Ecrire("<TR><TD>"+MonEmploye2.Nom+"</TD><TD>"+Caractere(MonEmploye2.Numero, "####")+"</TD><TD>"+Caractere(MonEmploye2.Salaire, "&&&.&&,##")+"</TD></TR>\n");
Fin Pour
Fin Si
F.Ecrire("</TABLE>\n");
F.Ecrire("<P>\n");
F.Ecrire("<FORM action=\"http:/ListeEmployes\" method=get ID="Form1">\n");
F.Ecrire("<INPUT type=submit value=\"Lister...\" ID="Submit1" NAME="Submit1">\n");
F.Ecrire("</FORM>\n");
F.Ecrire("<P>\n");
F.Ecrire("<FORM action=\"http:/ListeEmployes\" method=put ID="Form2">\n");
F.Ecrire("Nom : <INPUT type=text name=Nom ID="Text1"><BR>\n");
F.Ecrire("Numéro : <INPUT type=text name=Numero ID="Text2"><BR>\n");
F.Ecrire("Salaire : <INPUT type=text name=Salaire ID="Text3"><BR>\n");
F.Ecrire("<INPUT type=submit value=\"Ajouter...\" ID="Submit2" NAME="Submit2">\n");
F.Ecrire("</FORM>\n");
F.Ecrire("<P>\n");
F.Ecrire("<FORM action=\"http:/ListeEmployes\" method=patch ID="Form3">\n");
F.Ecrire("Nom : <INPUT type=text name=Nom ID="Text4"><BR>\n");
F.Ecrire("Numéro : <INPUT type=text name=Numero ID="Text5"><BR>\n");
F.Ecrire("Salaire : <INPUT type=text name=Salaire ID="Text6"><BR>\n");
F.Ecrire("<INPUT type=submit value=\"Modifier...\" ID="Submit3" NAME="Submit3">\n");
F.Ecrire("</FORM>\n");
F.Ecrire("<P>\n");
F.Ecrire("<FORM action=\"http:/ListeEmployes\" method=delete ID="Form4">\n");
F.Ecrire("<SELECT name=Numero ID="Select1">\n");
Si ListeEmployes!=Nul Alors
Pour MonEmploye=ListeEmployes.ParcoursAuDebut() JusquA ListeEmployes.DernierElement() Faire
F.Ecrire("<OPTION value="+Caractere(Numero++)+">"+MonEmploye.Nom+"</OPTION>\n");
Fin Pour
Fin Si
F.Ecrire("</SELECT><BR>\n");
F.Ecrire("<INPUT type=submit value=\"Supprimer...\" ID="Submit4" NAME="Submit4">\n");
F.Ecrire("</FORM>\n");
F.Ecrire("<P>\n");
F.Ecrire("</BODY>\n");
F.Ecrire("</HTML>\n");
F.FixerPosition(0);
MonEntite=EntiteContenuInternet(ContenuTextHtml, IFlux(F));
F.Fermer();
Reponse=ReponseContenu(Requete.URIContenu, Requete.MethodeContenu);
Reponse.ModifierEntitePrimaire(MonEntite);
Reponse.CacheContenuClient=CacheContenuAucun;
Retourner Reponse;
Fin Fonction
Public :
/******/
Rappel ClientContenu.AfficherOptions(Requete : Nul Ou RequeteContenu, Reponse : Nul Ou ReponseContenu=Nul Sortie)
/***************************************************************************************************************/
Variable
/******/
O : Nul Ou Objet;
MonClient : MonClientContenu;
Debut
O=LireExtension("AppCns");
Si O==Nul Alors
EcrireExtension("AppCns", MonClient);
Sinon
MonClient=MonClientContenu(O);
Fin Si
Si ActiverJournal Alors
EcrireJournal(Objet, MonClient, "AfficherOptions("+Requete.URIContenu+")");
Fin Si
Reponse=ReponseContenu(Requete.URIContenu, Requete.MethodeContenu);
Reponse.ListeDeMethodesSupportees=ListeDe(MethodeContenuAfficherOptions);
Reponse.ListeDeMethodesSupportees+=MethodeContenuCreerChemin;
Reponse.ListeDeMethodesSupportees+=MethodeContenuEcrireRessource;
Reponse.ListeDeMethodesSupportees+=MethodeContenuLireEnteteRessource;
Reponse.ListeDeMethodesSupportees+=MethodeContenuLireRessource;
Reponse.ListeDeMethodesSupportees+=MethodeContenuModifierRessource;
Reponse.ListeDeMethodesSupportees+=MethodeContenuPosterRessource;
Reponse.ListeDeMethodesSupportees+=MethodeContenuSupprimerChemin;
Reponse.ListeDeMethodesSupportees+=MethodeContenuSupprimerRessource;
Reponse.ListeDeMethodesSupportees+=MethodeContenuTracer;
Reponse.CacheContenuClient=CacheContenuAucun;
Retourner RappelSucces;
Fin Rappel
Rappel ClientContenu.Connecter(? : Caractere, ? : Caractere)
/**********************************************************/
Variable
/******/
MonClient : MonClientContenu;
Debut
EcrireExtension("AppCns", MonClient);
Retourner RappelSucces;
Fin Rappel
Rappel ClientContenu.CreerChemin(Requete : Nul Ou RequeteContenu, Reponse : Nul Ou ReponseContenu=Nul Sortie)
/***********************************************************************************************************/
Variable
/******/
O : Nul Ou Objet;
MonClient : MonClientContenu;
Chemin : Nul Ou Caractere;
Debut
O=LireExtension("AppCns");
Si O==Nul Alors
EcrireExtension("AppCns", MonClient);
Sinon
MonClient=MonClientContenu(O);
Fin Si
Si ActiverJournal Alors
EcrireJournal(Objet, MonClient, "CreerChemin("+Requete.URIContenu+")");
Fin Si
DecoderUniformResourceIdentifier(Requete.URIContenu, ?, ?, ?, ?, Chemin);
CreerRepertoire(Translater(Chemin));
Reponse=ReponseContenu(Requete.URIContenu, Requete.MethodeContenu);
Retourner RappelSucces;
Fin Rappel
Rappel ClientContenu.Deconnecter()
/********************************/
Variable
/******/
MonClient : MonClientContenu;
Debut
SupprimerExtension("AppCns");
Retourner RappelSucces;
Fin Rappel
Rappel ClientContenu.EcrireContenu(Requete : Nul Ou RequeteContenu, Reponse : Nul Ou ReponseContenu=Nul Sortie)
/*************************************************************************************************************/
Variable
/******/
O : Nul Ou Objet;
MonClient : MonClientContenu;
Debut
O=LireExtension("AppCns");
Si O==Nul Alors
EcrireExtension("AppCns", MonClient);
Sinon
MonClient=MonClientContenu(O);
Fin Si
Si ActiverJournal Alors
EcrireJournal(Objet, MonClient, "EcrireContenu("+Requete.URIContenu+")");
Fin Si
Si Non AnalyserParametres(Requete.URIContenu) Alors
Retourner RappelEchecTechnique;
Fin Si
ListeEmployes+=MonEmploye;
Reponse=GenererContenu(Requete);
Retourner RappelSucces;
Fin Rappel
Rappel ClientContenu.LireContenu(Requete : Nul Ou RequeteContenu, Reponse : Nul Ou ReponseContenu=Nul Sortie)
/***********************************************************************************************************/
Variable
/******/
O : Nul Ou Objet;
MonClient : MonClientContenu;
Debut
O=LireExtension("AppCns");
Si O==Nul Alors
EcrireExtension("AppCns", MonClient);
Sinon
MonClient=MonClientContenu(O);
Fin Si
Si ActiverJournal Alors
EcrireJournal(Objet, MonClient, "LireContenu("+Requete.URIContenu+")");
Fin Si
Si Non AnalyserParametres(Requete.URIContenu) Alors
Retourner RappelEchecTechnique;
Fin Si
Reponse=GenererContenu(Requete);
Retourner RappelSucces;
Fin Rappel
Rappel ClientContenu.LireEnteteContenu(Requete : Nul Ou RequeteContenu, Reponse : Nul Ou ReponseContenu=Nul Sortie)
/*****************************************************************************************************************/
Variable
/******/
O : Nul Ou Objet;
MonClient : MonClientContenu;
Debut
O=LireExtension("AppCns");
Si O==Nul Alors
EcrireExtension("AppCns", MonClient);
Sinon
MonClient=MonClientContenu(O);
Fin Si
Si ActiverJournal Alors
EcrireJournal(Objet, MonClient, "LireEnteteContenu("+Requete.URIContenu+")");
Fin Si
Si Non AnalyserParametres(Requete.URIContenu) Alors
Retourner RappelEchecTechnique;
Fin Si
Reponse=GenererContenu(Requete);
Retourner RappelSucces;
Fin Rappel
Rappel ClientContenu.ModifierContenu(Requete : Nul Ou RequeteContenu, Reponse : Nul Ou ReponseContenu=Nul Sortie)
/***************************************************************************************************************/
Variable
/******/
O : Nul Ou Objet;
MonClient : MonClientContenu;
MonEmploye2 : Employe;
Debut
O=LireExtension("AppCns");
Si O==Nul Alors
EcrireExtension("AppCns", MonClient);
Sinon
MonClient=MonClientContenu(O);
Fin Si
Si ActiverJournal Alors
EcrireJournal(Objet, MonClient, "ModifierContenu("+Requete.URIContenu+")");
Fin Si
Si Non AnalyserParametres(Requete.URIContenu) Alors
Retourner RappelEchecTechnique;
Fin Si
Si ListeEmployes!=Nul Alors
Pour MonEmploye2=ListeEmployes.ParcoursAuDebut() JusquA ListeEmployes.DernierElement() Faire
Si MonEmploye2.Numero==MonEmploye.Numero Alors
MonEmploye2.Nom=MonEmploye.Nom;
MonEmploye2.Salaire=MonEmploye.Salaire;
Arreter;
Fin Si
Fin Pour
Fin Si
Reponse=GenererContenu(Requete);
Retourner RappelSucces;
Fin Rappel
Rappel ClientContenu.PosterContenu(Requete : Nul Ou RequeteContenu, Reponse : Nul Ou ReponseContenu=Nul Sortie)
/*************************************************************************************************************/
Variable
/******/
O : Nul Ou Objet;
MonClient : MonClientContenu;
Debut
O=LireExtension("AppCns");
Si O==Nul Alors
EcrireExtension("AppCns", MonClient);
Sinon
MonClient=MonClientContenu(O);
Fin Si
Si ActiverJournal Alors
EcrireJournal(Objet, MonClient, "PosterContenu("+Requete.URIContenu+")");
Fin Si
Reponse=Nul;
Retourner RappelEchecTechnique;
Fin Rappel
Rappel ClientContenu.SupprimerChemin(Requete : Nul Ou RequeteContenu, Reponse : Nul Ou ReponseContenu=Nul Sortie)
/***************************************************************************************************************/
Variable
/******/
O : Nul Ou Objet;
MonClient : MonClientContenu;
Chemin : Nul Ou Caractere;
Debut
O=LireExtension("AppCns");
Si O==Nul Alors
EcrireExtension("AppCns", MonClient);
Sinon
MonClient=MonClientContenu(O);
Fin Si
Si ActiverJournal Alors
EcrireJournal(Objet, MonClient, "SupprimerChemin("+Requete.URIContenu+")");
Fin Si
DecoderUniformResourceIdentifier(Requete.URIContenu, ?, ?, ?, ?, Chemin);
SupprimerRepertoire(Translater(Chemin));
Reponse=ReponseContenu(Requete.URIContenu, Requete.MethodeContenu);
Retourner RappelSucces;
Fin Rappel
Rappel ClientContenu.SupprimerContenu(Requete : Nul Ou RequeteContenu, Reponse : Nul Ou ReponseContenu=Nul Sortie)
/****************************************************************************************************************/
Variable
/******/
O : Nul Ou Objet;
MonClient : MonClientContenu;
MonEmploye2 : Employe;
Debut
O=LireExtension("AppCns");
Si O==Nul Alors
EcrireExtension("AppCns", MonClient);
Sinon
MonClient=MonClientContenu(O);
Fin Si
Si ActiverJournal Alors
EcrireJournal(Objet, MonClient, "SupprimerContenu("+Requete.URIContenu+")");
Fin Si
Si Non AnalyserParametres(Requete.URIContenu) Alors
Retourner RappelEchecTechnique;
Fin Si
Si ListeEmployes!=Nul Alors
Pour MonEmploye2=ListeEmployes.ParcoursAuDebut() JusquA ListeEmployes.DernierElement() Faire
Si MonEmploye2.Numero==MonEmploye.Numero Alors
ListeEmployes.Supprimer();
Arreter;
Fin Si
Fin Pour
Fin Si
Reponse=GenererContenu(Requete);
Retourner RappelSucces;
Fin Rappel
Rappel ClientContenu.Tracer(Requete : Nul Ou RequeteContenu, Reponse : Nul Ou ReponseContenu=Nul Sortie)
/******************************************************************************************************/
Variable
/******/
O : Nul Ou Objet;
MonClient : MonClientContenu;
Debut
O=LireExtension("AppCns");
Si O==Nul Alors
EcrireExtension("AppCns", MonClient);
Sinon
MonClient=MonClientContenu(O);
Fin Si
Si ActiverJournal Alors
EcrireJournal(Objet, MonClient, "Tracer("+Requete.URIContenu+")");
Fin Si
Reponse=GenererContenu(Requete);
Retourner RappelSucces;
Fin Rappel
DebuterComposant
/**************/
Debut
MonEmploye=Employe();
MonEmploye.Nom="scott";
MonEmploye.Numero=7724;
MonEmploye.Salaire=1000.00;
ListeEmployes=ListeDe(MonEmploye);
MonEmploye=Employe();
MonEmploye.Nom="allen";
MonEmploye.Numero=7832;
MonEmploye.Salaire=2000.00;
ListeEmployes+=MonEmploye;
MonEmploye=Employe();
MonEmploye.Nom="smith";
MonEmploye.Numero=7948;
MonEmploye.Salaire=1400.00;
ListeEmployes+=MonEmploye;
MonEmploye=Employe();
MonEmploye.Nom="king";
MonEmploye.Numero=7964;
MonEmploye.Salaire=2000.00;
ListeEmployes+=MonEmploye;
Fin DebuterComposant