From d3c5294d24c64ec81be4e107337dfc4cab1d295c Mon Sep 17 00:00:00 2001 From: Davide Spada Date: Tue, 23 Apr 2024 20:38:46 +0200 Subject: [PATCH 1/2] add first part prontogram docs --- docs/services/prontogram.md | 121 ++++++++++++++++++++++++++++++++ static/img/prontogram_recap.png | Bin 0 -> 91426 bytes 2 files changed, 121 insertions(+) create mode 100644 docs/services/prontogram.md create mode 100644 static/img/prontogram_recap.png diff --git a/docs/services/prontogram.md b/docs/services/prontogram.md new file mode 100644 index 0000000..a27641e --- /dev/null +++ b/docs/services/prontogram.md @@ -0,0 +1,121 @@ +--- +sidebar_position: 5 +slug: /services/prontogram +--- + + +# Prontogram +Prontogram è un servizio di messagistica scritto sottoforma di API REST in Jolie. + +## Set up manuale +Il server in Jolie è stato realizzato con in mente l'utilizzo di [Jolier](https://docs.jolie-lang.org/v1.11.x/language-tools-and-standard-library/rest/jolier/index.html). +```bash +jolier server.ol WebPort localhost:8000 -headerHandler +``` +L'utilizzo del parametro ```-headerHandler``` è quindi necessario in quanto il server ne fa utilizzo per la gestione di cookies e Headers nelle risposte HTTP. + +A questo punto il server sarà raggiungibile a ```http://localhost:8000/```. + +Prima di utilizzare il server è necessario avviare un database Postgres, per il quale è fornito un ```docker-compose.yml``` in ```/db```, con annesso ```init.sql```. +N.B. per l'utilizzo dell'interfaccia ```Database``` di Jolie è necessario anche il ```postgresql-{version}.jar``` fornito in ```/lib```. + +Il ```docker-compose.yml``` è in grado di effettuare il setup del database in maniera automatica, basta eseguire il comando ```docker compose up``` nella directory del file. + +## Set up automatico (docker) +TODO + +## API +Il servizio offre una API di tipo REST che permette di effettuare le operazioni di login, registrazione di un utente, log dei messaggi, invio di un messaggio e logout. +![Prontogram routes](/img/prontogram_recap.png) + +Il **mapping** e il **metodo** delle richieste è descritto all'interno di ```rest_template.json```, necessario per l'utilizzo di jolier. +```json +{ + "login": { + "method":"post", + "template": "api/login" + }, + "getMessages": { + "method":"get", + "template":"api/getMessages/{username}" + }, + "register": { + "method":"post", + "template":"api/register" + }, + "logout": { + "method":"post", + "template": "api/logout" + }, + "sendMessage": { + "method":"post", + "template": "api/sendMessage" + } +} +``` + +### Formato dei dati +Strutture dati (custom types) necessarie per le richieste e risposte sono descritte in ```pronto.iol```: +```jolie +type loginRequest{ + .username: string + .password: string +} + +type logoutRequest{ + .username?: string + .sid?: string +} + +type registerRequest{ + .username: string + .password: string + .name: string + .surname: string +} + +type messagesRequest{ + .username: string + .sid?: string +} + +type prontoResponse :void{ + .message: string + .sid?: string + .status?: int +} + +type sendMessageRequest{ + .message: string + .username: string + .expiration?: string +} +``` +Nelle strutture, l'attributo ```sid``` è l'identificatore univoco generato dal server Jolie per il managing delle sessioni utente, che agirà come valore del cookie in grado di gestire l'autenticazione. + +All'interno di ```RestHandler.ol``` troviamo: + +```jolie +main{ + [incomingHeaderHandler(request)(response){ + if ( request.operation == "api/login" ){ + getJsonValue@JsonUtils(request.headers.("data"))(credentials) + response.username = credentials.username + response.password = credentials.password + } else if (request.operation == "api/register") { + getJsonValue@JsonUtils(request.headers.("data"))(credentials) + response.username = credentials.username + response.password = credentials.password + response.name = credentials.name + response.surname = credentials.surname + } else if (request.operation == "getMessages" || request.operation == "logout"){ + response.sid = request.headers.cookies.session + } + }] + +... +} +``` +che si occupa della gestione dei dati in ingresso quando vengono effettuate le chiamate di login, register. + +Come si evince dal codice queste vengono inviate in formato JSON da un client all'interno dell'header ```credentials```, seguendo la nomenclatura dei custom types sopra illustrati. \ No newline at end of file diff --git a/static/img/prontogram_recap.png b/static/img/prontogram_recap.png new file mode 100644 index 0000000000000000000000000000000000000000..0d58580758c2ec1ee147bb3113cfc48c1be78246 GIT binary patch literal 91426 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
2p-i zNE$(V2iOAs9>=y%fN#*_)p-w9@41>3CKx5*%zw@CUFGIH9< zAQ+d6Hu(2Vj(l=cKD<0cOvcd=)kfy3$;krL-{XO=tn4(uK`Ec=Ixp)VBJ)(Qi!^|lxy z6gQY0J<+u_j<=2`^gU?U^t2HH{#|a8{>jpVk2R$Xo`bpoeV$U`ycc!4-F(Wb>aAe2 zjn9b;kyNebnf_U=cUWwlhwA-Y1px-)6}&2NQHC=YL)*=@ZC|e;!ol+??Bf1}2e>Xd zjAJEIAM@HDZ>3-P%K1n_6_yV;$Y}!0w3`3jq7PU6@w3IRxt=nc@S4QIj%|RdP;jv8 zl}vyllUyPUSdJb4mQ`Fr#|x&KQ1eLCI9ml`V~Ps`BuX zLWUl$zi1FOCT(h)jKKs{){n6&z*4sgY}|SOT^QQQAekChDN2^ zsOlYn{4#nPZ`=fF6zwCP zO(f0432?SRx_PH7rgn7qKlfy0+pTt|qkfTpKn;yieI?ukhS9%z<0<;LhG znWGB#!kO6;3YY=kA4>FJ0O;oB*QEq;b=#djR|j$RXl~BTH}P-v5|}jHTPyvEAF@41 z?@3H{r0@0NFaI?^ZDnujY+_W7PU2qlqA?6a19`)m?=yC5eRy51ZT^YZ$U)5NM*f}T z$$&#pdJ--=BcOiONTwzN^NTif_IE05AkZhhSuBQiC1f#;pKihW2r~116R&Kquk^ zWphVH;?7yXb3qo7+OolYO*^~st_izUP*|;yh7{9|s#F!CQBnpCXm$(0W5}}VkeYHT ziwyW}T?>epYeul%5F%i#Vts>q9sry;otf2|20gLatlm;PDO$9d$?zQ-q!F243#W?LUg@ICpgZhQ9L*LLmRgXw??yQ$=%z9~!dr0B0KcLX#luR~Rv zBqPLCrEDxKN`sUT03mxw@T(*hLl|3dSHFYO5cKYie#KY$bWItXD82I!hb7smibFeO# z4}T+7xxpR{)bk*AX&>s8#iOSnZZ`|;c6|!+EpHa-FH;t=H@M;mC{p7^=_b~z#E8H1rBaODiGNHr;N26oA!HV58HgLw)Ir|;bu@kS&vz01@l>?C>rBm?{}dGXK^HT)@A ziLJrXt&L|TvWxxoIpuGLkHVzlb0At(vJe!0_Ag0OWaKXG`vpqTx@3~Ac1;h9I`m0LdDTt%#f#cJf z^!z9d&A--c0w24Z z?aef~f{9gLS19omYMWt>tsRXwF`E7D#hz%1@f_KMCjSco@O{g&zI|=|cn;6b4>v=_ zW0!)7_T;pK%c@|d;XMcGBUCw(rPU{(+tsyuPe8-hwQ;{&yK9(7_9jk3Rce`#Tn@&V znD{NiMTwo->pH_YoRjAu%v0u!hGvsxZzeOcWue>5bN(0+#=xAG`Z3Eg$rf|O@f1+f zSEL@#Gu|4gZO+9NzhyiyPtw+qB5qB@h5|ruCL^~M)?D_|TtK=>mhOgFK82&Oq2AM0 z#UgUcp~mNB>17d55B<$46U24O8ufklAXlTqg1*ALH7cjx@&V!LeAkwYSA(_r5yZ1& z;i`PTy|ZAJ8gO|6pOY`dsTQP1-tW><^7iO9uPxdc`*TjjbD{$ozQb!)vuv7dKh^f& z5oHnC9G+4v0$nQvVn{lhywg=RRpNx`jtC##$3AEk{Ijn6hzD2e zS6W-=YnVhXuo>xT^lerll6_og-^^;nFV#mvoZzPzjmDk6{U)#nA$H}|h$LS-b`L6p zdxuOc4ca);FxQTs7cj}flDVd*V5@2`6^~8Tyz~T_w2y@xj}M~O6>b%Bn

*aGB)$ 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

R; zZBB3#fitYwnL&j!W6Cu5^&;7O52Vp^=0Zh)PZ$^&Daif){pXv7XWd$(4qWym?`@xG zan(O|4C!13pHc7&QLjO;eMSW1cFK{JO}yg#bauZX@jTtV?&syx*|>Tc!eZk^`?1bX zj(o3j4gs+l+)M9ohB4vW2S?ulL?f5)GsD0ni>KBmV@{>dN;UGD?v$juNQ6{xEC}$^ zyCjaeM3@$bx826)@PSkgh+DQ&=UZ`pA%0i!{8lhBK5qm&ireILs8PSp(ALsn+=x=X z^zh<-ZVf~HMF+5b9Mf!nem^4Yp@UE8(ffBC&S`Q)*u}0vfTJ% zSphjJt7Q~sxq5%Em$~LA8a!Ukcc#kY`fzcD-{1^8xqPU1!*Oyau%d6VDfWZckDkNd zLt8JoR4Sji(zYx6(h8M@r1@#=??S9SEX0={j2reoT@wa6_BCU1w0aVZe1COx-JJSr zDyI?gkc9&?JX-9&HTxPNzUYgMSC2wWrc_>O{oqz*_N$m3EIP(Fnik95bl5U>Dj&`# ztFj$J!%eOz+Mr>{#%9UB;->*W>#KK8^G0GgsW)SP{2vIT=W#+t%;!ZJ+OE8y9;%-X zR0bY8Rk6TsNcL!+)jI=XYC=R`z65!W$e$1}BXXt7ORtLev9 z4Lqr-RHfg|FkgXrgunMS3B$H_A3A*TV01KuL#fz=f!$?p!cMKq67zlM>rSgJRhx@y zo=@qjjBIKW&!Xu`yMsR9KV|y(h4ihsg$$9-V*?hP6;y#8u3%)ishG`|>S5ym2stzre+?UrjY{EEdLp+zuWt|5I zzEahL=LbhQZ-i-V_%)GA6+%vs(A#2yg`aINtoKcY?!8t&@LV*_(ZrDCEf_7 z9h>Y;d=yPdjN+eYs{f=gu>8v#oR*G2;U>E*qv|Gf){aI9c9l%eCVck1bu4XXmP^^S zAuThW1Y(owX`c0ojrc`XA+QmMvZ<9>qcsm`)Q068Gn#+ascm-ye(DR`D~S|ir1slA zgx~I*A#Gd=S@_P6^myUpHNEM@+~-)FXsy=j2{((SLWwu^YqyeT=N0#iV4!#g834RM zR#VwBpAw4#_2~6~vyQ~ut%Viq?J_pnGmundj^tw}s8%8E z0C#3?@x}qXtwp;uM!(C)b-kepH`ADCJF*EkW88buHMBQSn4EQ8N!ko%hNt2dC%+Db z{|}udnfY_TmUsZ|i$SX2fSB838+L6hz=I9oz4_V)_ z>M7yh*3cl}hkb2^L~N3sB=+<@SQ-_}{koN4| zU1idcMN3+XZRoh0hDZ9_Cr7Z2Dsf)n6dxaZ4P1VV4$`@xEHtzSstRwUKh{x_4^2vn zCm!t8V!;_HMvquxHsU1|2x~Z?s|q8b=VK|^1K$n?EY>8b(C#fOm+ksw0As+A!~tg! zXE$C2HUD*wtu|MNSbq~{e_xo(D1?i4`erIzsR54+&1;U-#{V6VQsh;<3SH`tt5=wR?G7bO?8dp(dapo4;Y4U?`z~i2 z16Ggz)ET^HJVi${pi#~e{ltm>r^aS3#;sYu?5}Oq*F}R+M!=tXR7sL1ru%yf4fiiY ze|-s#>&E%JHbCaWhPYjWsyKN^W<~Drx*QOy&L48r_minig&yclxR{E7ZzwzlKZuYBJ;!> zq8Q1Hs+l#bG%ns5(M+5^kT3FbY)sXvb^!v8< Date: Thu, 2 May 2024 12:25:14 +0200 Subject: [PATCH 2/2] added docker docs for prontogram --- docs/services/prontogram.md | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/docs/services/prontogram.md b/docs/services/prontogram.md index a27641e..cb089c8 100644 --- a/docs/services/prontogram.md +++ b/docs/services/prontogram.md @@ -21,8 +21,23 @@ N.B. per l'utilizzo dell'interfaccia ```Database``` di Jolie è necessario anche Il ```docker-compose.yml``` è in grado di effettuare il setup del database in maniera automatica, basta eseguire il comando ```docker compose up``` nella directory del file. -## Set up automatico (docker) -TODO +## Set up docker +E' possibile utilizzare il servizio tramite il ```docker-compose.yml``` fornito nella home della repository. +Per fare ciò è necessario innanzitutto creare il file ```config.json``` nella root del progetto che si occupa della connessione al database, del quale viene fornito un template. +```JSON +{ +"database": { + "username": "db_user_username", + "password": "db_user_password", + "host": "container_name", + "database": "database_name", + "driver": "postgresql" #DON'T CHANGE UNLESS YOU WANT TO USE A DIFFERENT DATABASE + } +} +``` +Successivamente va buildata l'immagine con il ```Dockerfile``` fornito sempre nella root del progetto. (E' possibile buildare direttamente con ```docker compose build``` utilizzando il ```docker-compose.yml```). +Infine, ```docker compose up```, il server sarà disponibile a ```localhost:8000```. + ## API Il servizio offre una API di tipo REST che permette di effettuare le operazioni di login, registrazione di un utente, log dei messaggi, invio di un messaggio e logout.