From 01f649fd8888c3f9c6f84f0adce3da88d936337f Mon Sep 17 00:00:00 2001 From: jvelilla Date: Tue, 30 Jun 2015 08:57:00 -0300 Subject: [PATCH] Updated: workbook headers document. Removed: unnecessary files. --- doc/workbook/SERVICE_TEMPLATE.png | Bin 13437 -> 0 bytes doc/workbook/basics/reading_request_data.md | 0 doc/workbook/handling_request/headers.md | 59 +++++++------------- 3 files changed, 20 insertions(+), 39 deletions(-) delete mode 100644 doc/workbook/SERVICE_TEMPLATE.png delete mode 100644 doc/workbook/basics/reading_request_data.md diff --git a/doc/workbook/SERVICE_TEMPLATE.png b/doc/workbook/SERVICE_TEMPLATE.png deleted file mode 100644 index f8eecdbd84c70a08892492a5d938f7b5be926eb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13437 zcmdU$XE5N{rrl zR5uOwc+g(vOKE0|H5F7u;o7k(AS(VUb;txh|tw7Y(PELFucvi^WD zhTg6YinA_@TZB1iL{Ux^dI~qz6L$cgRPSy zGQL3J*8O3Mi3ytT(;o&dcy4UudEK6hHamSdpDHq@=J10}Hvzk(P3Sua^%p?Je<^sK zlY&rF918E`oQ19mDkwfe+BOYob?@*J+j$0PGN{s<^3K0LK6%y1$@9w@OaF)y^`J$* zCE(F?#-N300wz5Mr|WbU-Zv?FvajA_{N|Mu$x?ddhxxCz5mEyN2t9#P1lfaQF?Lxr zCiInkPOP*W^`}>De!LCd!G!j<&4&)}^pYoTrN1H66dGq~+d0$=keD4$HfJBLN@R;7 zRCz_Q^f=Yq592k4E8Thmc1vT@zD!&}-ERz*&Luk1xL1z-x|Ld%!1x$L*j**WT${PE zTxU?%1;ZtmpqJ84oM%_<$aLYh5{CNF4a6pf5ImSym|#;uox{(@(DiO~jqh=OV<7RG zU{-g?W|KSRVLMldOP@MLt$zUZd|O%F8WrnGbb27%xNNZB3XNDf^HXJ$J6*tbqTyzF zlJvEh%6UypScbrtnXFD4Qh{tSTmodLql~m%McT-h&LdxZt`p3YAqKQY(gnW*P zdN%_|ttmSnJe?t#bn-%fqS7aDhPEkB`))m6)z6@``rv%D=TTP9F>>Uhb9dpua%1KT zP1~vr`YEYHkKP*?>`IWY=!7D+9Mc7}r~d?<`5lLHinuFPO_PRV^UAL(Azt3f<=!9; zqi{LRIP*#&(S(xHF`_zW*}B)R-~(CQ(Frso)fB_br`Jq7yN=8KKfgRvV3Hczwv^;r zZ59ammA6;XJGXY4Eb3M>FbaCgEEbE${e7quL6Vh_ut{pt71Gnc)&7QM&XAQ_fHmoL zg+rj6)+rY%gEi$v+>Ng&GxCE1Iu2E5X^IDx8Cl5{m8A&L#R|xdq}$c0)XuA~q=0H& z=i3Cl(Y;YuMnk_)y|F0F;NE=PVdZuiZW|o`Fp;~bTZfG*fH1KlDq9;xaMI^ZB7PnZ z$?Co*4!JhhztA8*M?!lqFI)D}Dt#!$J@;`>KJiCQK1tUo_bhq97~Q$`D*KRJP`xSa zgVhhOAhj8m&z#$@zk27H6e_n1s|3Y!q%rwO__3K)T9J4{8iIgroEmR0wq@(!fYlNWnD7NRNd z>x2Ux?Tb#>NLf%v_mjYzJSX8;Dq7O2iSe^l22{5u#lSay6--0 z{SN~Q6>nPpq!g3P~NB?AX35Fo`4kjT}P z@|x-|LBo|&a@8lN3U#`H;SFJ1znjay zEHY=30=s)pv129QLgCMmptLOD*9u!Y4{c>)$I?MT;b<^au-{8E8VE2ip}4~`kV8BO zG7OG~6nK~&C~&ouGm_j9+0p`jjHO@0wUiO;Lx$#rctAw!Brpy85?x~(KrIXm zmZHAqA|AAd7I311WS~?uAJO;s7^HpK(Q$%&q?-(6bubt-KdnoizFC})Q?}`7@E9w0I)+_P3Q0Q%uM3n8^P>66~88f z*4XOB^V+S&+v}lXj3=)gigfz0bnbv4vN=#V;}vdcu78Y5SLEfGUK1wh>bOtk-B>1( zr~LW-6iBybGj1K|rJc~Q1P(h>f!LshtB~cfyEz{-W%9-YEQ2}B6fIa6VP=W>dQt^( zxKq(*Cvc|>pZWYSOKAnE+=O2yr{-U572KrqHf)+zA)v8zkOIWin-;DgL2aEo2?b=nUE3nL zprb;BDbo_vYBv~=1_Sce!^NN@Rut6Eh%t|VCfdyx@?r|3Sa+CfDX1q`7gR^>UUVnr zT@O&^YN(=ZN}UPf3S&{D*3KeStLz5F_OgQZ-vV5Wy|Xa9y}yCg}P#jh@W z1>qq7POy70PE!D1zFM@QzpeQ5lI2AyiQ%*)?w%ctiEFK-eut9(IDYiSRR-n&7dGFkd_`58R07@rHbiG;V)$;7~x1`7Qfo@8Eq9XHMu`mt6{>vk>s;f6$`8%MCWx=FA z(rtfLkA39(Bn`c%&1r?~Ex%hgg7KT0acrs~+ojUjwna*6cLkX;sXB{lu_e&hPS@Ob z>$IQa@4o0uGg%zQy{@lVP?2xKzBGREG5zWd*62zQJ>rIk^SU7P$_}!2?Xh&`J=+pS z-wele`<^IcIg`q3xqP21o>f)hX>zfK7Tg^SWn=F93AAq)XW}&^l>uIp1`Fa!l1`-2 zShpzU4iR1)tSlMi{WjW|Pfs2=d^^!NTVSEbuca@u>fK$}f$-0b$~fgflghQ2e8St$ zjTyqQxhha&KUfJ&o8uwHxkpoul>JQ+j2`_{5r7|Ui>H3noNLIr zHjcxJBySGxwlBIFAY@Ud$#ga?bsPrQk0=iq2~AK!20qVN2$riq6EV!Rl0U81>aO5} z*KsU%)!nQ|#&nwvJ?c4tUOXKCl^R=NOPiu~mTwHQWA*t(E6Z$o?L3Rgj7L|lBKBRN z5n-QRKz6mMqV(*h^pKG3lei31V5Iy)2ZcqV%t>eDtyr6ip#wfB?}A@zEv+B8y(J-y zBHaOIpP~&D+Kva%CoA_bHn%t@e;8~kIIC89{m~reI^xc20*bGF$YS@eb%+&~Aw~_6 zl{Z3Rvk|6A>_ha)N%^~{ADP}~cdvw~?4A{CD_($K*K@AmIL3cC+WU;^%`+z%LQ>fn ztjF6VyxVwI#TiZ2_GZ8l+qfv7xI27CTP?rgS@u5Fx~YmfWoqus;I#RxT6+7EP;8dR zNt9JVLe=5olp{}j#_B6B0`%%*tuvQG=sn%Z6!v;wOz3HRrL`?q&r4xng~s>t6;)2aod@A&+B=dmbA@%g1cj z<=TG~3(|ni(0r9~(sjo+r}1ebi>PZsy~Zj%N5nTC#5Qj?hQ%L^Gvj{yw#I>K)@SU8 zc^!f6hYyuogF#gXxr?>C!1GpH7BRw+w?YSK#Y(MS2DG|wJshNjsWfc?tL^RIMNHq@ zmVTzhHtE0c8O*T!T0XjOTZgx@Ky-}9eR}SM%en+VB*AQPf~Du7?Q)x= zSoNO47PpI}5&Ps~>Pfg?^ezE^HI49kzOe*}Y`RNje^9HmgbmK_5}JvCa17puMYo*- zkD-{PmFEP7J$MAh2n=tcsQ4-h&^Rteq|6&J$o|4zua3anMxMhOnYr5_1%|75sf^8_ zEkF!0q6$!fHNn0ky%X1FcNC<-H3^Z9NS9GspR`O> zf>gTBvZE;8vk)Fb!&k967IbW@Usy`iw3N4pDDt$YkwokH*#wcAIB}w=4p^utVQ^O# zRt5~NjwIL;=0nz(uUhr(F#UX{u%Ib7`ZAKV7!g7Kt&0_DFRm_oqJVWTIv|_&piU$t zSTvZ3R%uVerKn=4J;_6${D>yw32e26+K})7W%x@OPuNlv2h@TD3nGk*iS^*z$45HF z@QacIPHfvh56Hujoh{%XG8m(Ux643? zw-GazpU(zYPHPuo2x$(ohwg|JV+gYlLDBx^O(7s(hXt`x6g1$C6jB72K+p@8p_I8u&@f9beiptmcM#0-cGU7%0SeW4B4=-283d;r#+ zP14v2whevqRES6iOY{d56Y!VFEt1~l`gd#J%Kz>|XkoeF|J?ToB{hkRpzKp>s~zAv znut+Iw&7ElFZ(cAlq0o$S+!r4pK7@+U?Xsn*IW8r&!WL&AhvKJTWj|)XkX||*oF0L zvafvf=FXkT*UXt@nibY0Aw5Pa>T}mPxo_B3max-=Jl@8eYBs8qy0N5kglUVpYI>o~ z2(+@1H`fQmuRd}|_qaQ!;hE{ut6rCHwbypdwkpSdlilg?WwHP9?P43|&O%dRvgvQn zg#qV>RzJNLS3to2#&pfBrTQT0>U}!yIdIzBMj7B=dB1dF^71--uDemhtTv6{IR~xf z`|H4(Fc?2?CDC~ahWE5N&b-j0dGkh0mq(aCw?I!>hDw#x*2v2n7;!14G*LwYn{Z^k?!C5(SkV%-;jk{sK8t4u*G`8j-auWJJMEvT8 zx;U<~9NXWO6)gMnE>|o*6=@M({F*irTO-=YV`;jIm_Bt zESl43pzue-*Wx(Fg}3tc(}3c2l4T~(nNnmQKK7mR5R?^NE;Y1aeO;^JlN?wRNhS77 z(BJWZaZ+)v0~{Oek@zn(kjq~hsJ(D&?-A3FojG8|Gh0_&lmaI*rCSLoI9@a#_Y_`n z1fI-QZEI{-zi4IvwLZ|Ha4g#QUFL3}gF|vI26e{{nI<3pdU;pF%G_u@(+I z2YkLRCJQlcCrxFWAizv)mBrmauq_X6F=GE+CRub8*cRWH!%pGa=^*-tIn(@0R&+tP z^sR^v;4o`Hy`E+tI9$Qqh$*W#`C_;1wBkq!kKYvS7#@Xe^$Gk<-elhWukvQ35dU`eCI|3C50$T7jt=G3`8+11MRC`uH$A?Q zFm}h4a0w%t@-emft#bB#tn!=6T=El?b(~JEE$0@Tk8z)VPpsig9zMqI8aF-o*rQ$G zr9#gq>~|b4m=%a9Ns}w6B_Bz%f=H=cP*Mym^p{*`W44C}wMlr9P1$VDSd2d131YU= zG+*E=KyvM%ub%0Q-6eLJL$mQBu1H8p)=b%LF`T}qq&|b!SSP26puQ*hDl@xq+Yg)Y z-uZyd*Z!xd*$gMOy0EBdTjc8ZYP*Bg$HGtI<|xWiTRE4<-VKMW-g2>4$Cu4auOqs( zS#GriTnq=?$={7to>$siTuOWOhaOH(s|sz~yBB0A^yRr$3UgTiH>afWnhim$C|^Jz zipkj2eR9Il>!s%vK+GZ98JOa~P``P`25M;8_OPC%xG9CK+S6iiG>aP_+&IH=K+PTs z9zsZIVG0-8zB8!9T(iF0CFQCewqcij${DVnv%jM|Np>1S4 zxc|+(6wcoA+dA47aDmsQ;c?!CwMdlb;*nhFXr_vQpc8hjpmpt{;c^FcC^^Tll(9p` z5#FR8I+OenMjwmWHD<6-&E=+apMte*J~bOH3s=xR_|*3Na1nXuCfMWHie>kf7!-LaE_J<5 z0KX=B!47`Z{Pe6K-kxu@^MLzI9KWTnd1a0$Qs7uR34}U0CV1!Y{k8@pjrOO?UIMEj z-l?fBsMgl8^_m?)rh{LBCA)Y-&9TqLu6retCL~`77d&hx-FO{2r|D53L8rR(okbn- zp)fbR6izRS|Ndx0rdS(kZ%6O!>C$$;&f_lUq#jyGE#)AKkhB z`P*_fiG6yW&A~VFhF{DFH0Lq(E@*DWlGh7dldR11tmK9h%5}QYsHCTGmewx#+1M{d zAbMBOK4;6m$&0F{!1%bZb@LPTO3`%m;@BdUx&VCbpXKdMpK7%mO+scPP7j23@>{dD zWnM_DHBkeqLKy%Q+h^z|cut=#{iJJ@4|QH;k^{df-Oe$JEp|Rp&xP z-HdHFou!uWQFUO3k@tyKNM2tqqAEH&^~m(ilFAQf<dbMu&J-V>N9eay;80Su?;X$u~3hUbA$drqtIr_z9I3 zX6&~siFx0eY%MblC)WLO8@9m3I2T$s4An}?w<1*#(Dj!yO`L>I*fvGTsLL&Saq~M{ zb+caDO4+vfJy2mLwlZ^iQu7o;yb!2SI{e43=tmQXVVvKo~M-Q8z? zl;YU6O;^rb?z=2&SYhcd#Xr7z`b?dwmHa3XOl&<5_S8T3m_PLYkn+P%;)+A(m7+kfm7?s=c>E?(TiX4cz@bXFAOeseLsCaN@!mzSdaXG z6B05|q+a_XHV$ScWp?eB+o+h;jNA_PT5c!z(75E4+z`=$WPuH6Sf0&f-J_FwM zFD_^vkBX61eC=U|6J1;QG=%5XY`}DKfXsoi0H%hps z@~n=!8C&zB>K0h)kct-wDSd;|bYcp&Ht*Ogk;M(Nhltlfw%AsfSl}G!ZG{U+19T z$YnnD7{2q{UbJHWe!L#$Bbw0gPYO%>}skB=Qz zBIijnKaC6Hr&DgZ%i`6qo$hiBS)~s51 zTJr656A@;=c-CcvDOaLFYW%5_aM!8N;u*=+BA4+8cZ>14jpuvSkzDIJdd==T z#hSv-g&bM)+D9?eX)cL$^k|#5YlXAx)!F(C73;$4`+Dm$ds$@IVhiJso34cHbT6su zN|(p?EVrK%982D)@{|&6nZH%l+KAk*XEd%XAM%*7MH=+Ssc+zzP@FDXh=FzSwGlb4~aT_ta2kxP@g8EiF_`jZC zaAzT%lRp=Jzt+zxywtlCMgP=(ymNd zd~VCn(^|)hFo78_DI_L{1X{7?uX+4x^*oH$kguV3@|Mp0`lYh6oy?uwJ^PxbkT0XK ziMG$mvyh?ofZ<6USKs*XuqXFYd;FrIff(ha&iM`Plho9QhL zmzH7G6P?GCPpRU(t_H8FDR<1&V}UtL>6Ah0bi}Axt$ah#&sgvot@aPw=ViFhINI<_ zxZvKD{hm0&1#&tWPLCFWNuUpys%M)QPbv*m&-b6K9=Vh6Pfs^v`!`2K1pOd;J8bU$ z4M`q9aRx%@JskHi>{yucHt@wt=I^#s^~Rw-s;yO`hsFoKmr zW9cC=LY6(76hC|?g{D1%`B@u{y=yu|7%#Cw0!cE-XvvU{FWl&g#O4GAH;iwR&vFJP z=^CLcL?ESC8=Y_j8)dLklrlkgpuQ5v(=OmAAJI(5NqurmnXW)sbio6^EK_y~?Om!rLR+A3>nH>AVA_=7D?e-1B!>F7#wu+ ze#4OV5lY=F9yC8TD5Qb#@BzuO1fEQ>msS9bR2T4ekRJp-hSN_1-i|Mk2pzdT5HteL zmhicbW`@*_$EwV*Bpn(Ts>c~3go}$2f!@Bv&yK~O!ten0C*1tE9innM1YEQ<@XG~qDk@0b-KerZCR&d;q#@E!UlNSL{R7CB!4F!p zvsK;oaz6j3NU_jzs;sFv8to?sR!T?%ZaF8WDoZH+X-=~{7<9HBmy?$r`1nc_`A+{S z$^2n{8kq2r4W{NeM#25x_>IWN1d$>qjIt4z?iUpiKBh}N;}Q^Vi?C#ePI=}@Ayab1 zgul&b6_E|3V*O`gg=Uz1X7P+<<10#k)r64;foYt)4JK`2=~7Bcd)k$_;^mevV+gJK zC}`T*wEqA?P0#XgP4R}@2FCBsaow5AK$!9a2HeAE<(4frawXL0oMpTXQuN(+U;-tY z*XB%N7QRY&%`%v}jgf{elHy-zg&8f6(K%(2WEU-lJ@*1$$Fy@)_?X^zga~G!N^qM? zu=F<3hgkm@Xr`o|FmRJ1Ca~6Rqx%1Ee+33{owbp;rn|68(mKKLpUGvE6RUHihw7S* zR4K7Oh?av{pE9LAtqk>}_5O9FWSnAtY@o4I=-$L*kMq;~8gq5^4!@@}nEU(dvpW}r zRpnPwhcTs&YBLJ~ms&lE+E;QRfQ=Kca-TB3~9@+e*t?kUg zN_&@=)f9Yy8yUZgshFpmB^-DpVCPYu=GncwLPIlqoR7JCZ-O zO@6BH6P@lDOD4%W#3ATgfY_c||BeW|wJ2U-N%oY%7=hp~()X$>q@HF_tfI|;0d|@)F8V573Yh_8djezK9&_mvzFymqKB0Q?Hw|r6A6a` z$rZ-fP;U=Gx8lMgb~r&U-Vf+Oh+0WpLvV!?jnTk`@5e81Nb{NE2TkLMu-x20;To*X zCe+8hB>~;l-Xp$GZGSsf^@+>`8-(JDR6AOIE(F&9f)y&6#t^}INMR#xY0Pj5h2tLq zRvGJ)>knV&bsWErs{=?23oi)ZhI+D&m@GLM`M_U5X-CE1$jl~(ny3Oj;1-3)DXQF2 z|HuX9?hn;g+Wvzcl6d(~ddTAR)$7?z0*-#MiL9`sf3idDPJm68OeEX&lQ#zJ*tqmT zFMKotzVn5$PuWIQe}kU=ArSuI(q)+W&@9o_lMm}P~Edo-fHN@Sn_A< z1;ABIme-uJ%fE1Y%$$zfKNIOV6z=Ah%p~zz0Zya z*&ou<$o~=yaSO5ea5i-!Y798Kl7hoC~@w+*aN~q!6yGOB-fD++fp4& zD2%{J>-h74)Be!-+U=T~TZ_M*~o%jNIjXV|+UlC!gvP#tQhXM^$Q#BPRV`u!H$?Q)1$U|8CQ0~jdtN-`7xb7=UbW+H zZ?W{%%B*@yf@8PW_#Tnq0TCv1;SJ@*cuLVgapvo@PJ@*))|w(NLc+&}U-d54oxs3V*YFej3H_lFa8$M+?Iu*A6o?kj6p$BCfhx z81%SSnPq^I1S9h5_g2my%w|AI*%CVLO&u~Tfp9_t&T=&4#o3~Pysi&owt0oaXfIpx?TiRr zH`HE|rRmh%w^4;oR5Ec_!4rb!M@9@-U29-%xi34Oi zAmilP#CI63`xHb8>>p=-Uw2GdTA0`(M zN3K&@!hdn6WI83ZWMHM*`AjiyrU<(zAKN0RB!f$_&RVf)$CLFcmWZFA3fkoLq77S= zgho=Q09H9lOd+Vna5!oc>i)5cK)AdF{Cu|UnNhC41Hc%MJ?CMspDEL@cADRFGH_IF8+%_rXI)hUV4b!G zg~;by9cD1B^BPsg_LIb@jYyhBe)l0{)wouwGzF$!eW0$^;#Xd9J(EJp()Z|U^uiJA zH~B9saxtTb41GO7^Lt=4!x;@^Z89%Eg)T1qO|V=`=KU4d4f0Y8ME~m8zP6tj z2l(Q6#{sE{PXOXN)47l`FhOm#{8Jux^xU7Nn;BBE4O|(fA_6p06KhJit0plY)wQGa z`vOxk@M(1(Q@6tx=SIF^@MCbn{rss)CDx2f`z9wH)t68JyH&C74Uo91xKm)e%z02n zSDZzc?Bu1hX8Kgu7<-ru;8CiAup@fInn~`>%{7nzn891A3AHibX0#UQjMQuJZCsVh zsuV2%z~!pn;PPy7;-H(^%8htKukJU04ZSCrZ+R_0Q>@2}^}D0}U5J!-ua~X7N@``* zrCN=l`wd$OdE>;O(ng-F0%>uUoeuhN$zEi+%@#;VI!Z= zs81ePw$XBW0#@MMF`W9VL+m}6SQ+qSiulV4gfIb-Oa!2|A&XJS`kX=h&OpQYT1<9er1JgxkAj# zPiBzw=xh14J~@G^vH-u;JyTVF!4e>*CN#0g#s*;Zsqj!Tdz@lx-p<6Vg@QjY_D!?c zw9Rsb{PrAax*)jX{Sx`DEO4MsY+85kXr@J6zO&!K|rCvMsl6SZvgN2!jE#=z!QOdxRDuOsPpNA||>Mo=gkNJ~26^GCO{$ zkI*)RG?3PCxrfhlj&qW<7tR=NcFo~IYSy_>+RKwr164mRzQbo!?IYASI}X*la|SiF z0Gx7<16#?8N34)?4_8`*=Xx4jx5=;9`w$C*1LPUbJhz3KPlsxB`KV&d4UzpMx41D} z3Xp*YPKM9!QTxANCBV{x1E04rhNd$=MQ8v$bQaoP$_pty>1<(mt%Uami&O*l+d-Li l3UYq%fZ@MF)1kKnI{bFZp`Ks?;IksoD@l2YA~Aj6{{!&U1gZc4 diff --git a/doc/workbook/basics/reading_request_data.md b/doc/workbook/basics/reading_request_data.md deleted file mode 100644 index e69de29b..00000000 diff --git a/doc/workbook/handling_request/headers.md b/doc/workbook/handling_request/headers.md index b7708689..a49a7440 100644 --- a/doc/workbook/handling_request/headers.md +++ b/doc/workbook/handling_request/headers.md @@ -1,4 +1,4 @@ -Nav: [Workbook](../workbook.md) | [Handling Requests: Form/Query parameters] (/workbook/handling_request/form.md) | [Generating Responses](/workbook/generating_response/generating_response.md) +Nav: [Workbook](../workbook.md) | [Handling Requests: Form/Query parameters] (/doc/workbook/handling_request/form.md) | [Generating Responses](/doc/workbook/generating_response/generating_response.md) #Handling Requests: Headers @@ -165,35 +165,26 @@ included in the Referer header when the browser requests Web page B. * [User-Agent](https://httpwg.github.io/specs/rfc7231.html#header.user-agent) - The "User-Agent" header field contains information about the user agent of the request, which is often used by servers to help identify the scope of reported interoperability problems, to work around or tailor responses to avoid particular user agent limitations, and for analytics regarding browser or operating system use or device. +**Note**: the example shows the **WSF_EXECUTION** implementation, that will be used by the service launcher. + #### Building a Table of All Request Headers -The following [EWF service](./headers/header_fields/application.e) code simply uses an ```html_template``` to fill a table (names and values) with all the headers fields it receives. +The following [EWF service](/doc/workbook/headers/header_fields/application.e) code simply uses an ```html_template``` to fill a table (names and values) with all the headers fields it receives. + The service accomplishes this task by calling ```req.meta_variables``` feature to get an ```ITERABLE [WSF_STRING]```, an structure that can be iterated over using ```across...loop...end```, then it checks if the name has the prefix ```HTTP_``` and if it is true, put the header name and value in a row. (the name in the left cell, the value in the right cell). The service also writes three components of the main request line (method, URI, and protocol), and also the raw header. ```eiffel class - APPLICATION + APPLICATION_EXECUTION inherit - WSF_DEFAULT_SERVICE - redefine - initialize - end + WSF_EXECUTION create - make_and_launch - -feature {NONE} -- Initialization - - initialize - -- Initialize current service. - do - set_service_option ("port", 9090) - set_service_option ("verbose", true) - end + make feature -- Basic operations @@ -293,32 +284,21 @@ To be completed. #### Detecting Browser Types -The User-Agent header identifies the specific browser/client that is sending the request. The following code shows a [EWF service](./headers/browser_name/application.e) that sends browser-specific responses. +The User-Agent header identifies the specific browser/client that is sending the request. The following code shows a [EWF service](/doc/workbook/headers/browser_name/application.e) that sends browser-specific responses. + The examples uses the ideas based on the [Browser detection using the user agent](https://developer.mozilla.org/en-US/docs/Browser_detection_using_the_user_agent) article. Basically the code check if the header user_agent exist and then call the ```browser_name (a_user_agent: READABLE_STRING_8): READABLE_STRING_32``` feature to retrieve the current browser name or Unknown in other case. ```eiffel class - APPLICATION + APPLICATION_EXECUTION inherit - WSF_DEFAULT_SERVICE - redefine - initialize - end + WSF_EXECUTION create - make_and_launch - -feature {NONE} -- Initialization - - initialize - -- Initialize current service. - do - set_service_option ("port", 9090) - set_service_option ("verbose", true) - end + make feature -- Basic operations @@ -329,8 +309,8 @@ feature -- Basic operations l_page_response: STRING l_rows: STRING do - create l_page_response.make_from_string (html_template) - if req.path_info.same_string ("/") then + create l_page_response.make_from_string (html_template) + if req.path_info.same_string ("/") then -- retrieve the user-agent if attached req.http_user_agent as l_user_agent then @@ -404,7 +384,7 @@ end ``` Let see some results, we will show the html returned -Internet Explorer +**Internet Explorer** --- ```

EWF service example: Showing Browser Dectection Using User-Agent


@@ -414,7 +394,7 @@ Internet Explorer

Enjoy using Internet Explorer

``` -Chrome +**Chrome** --- ```

EWF service example: Showing Browser Dectection Using User-Agent


@@ -448,10 +428,11 @@ As an exercise, try to write a similar service to retrieve the OS family using t * [SERVER_PROTOCOL](https://tools.ietf.org/html/rfc3875#section-4.1.15) * [SERVER_SOFTWARE](https://tools.ietf.org/html/rfc3875#section-4.1.16) -An [EWF service](./headers/cgi_variables/application.e) that shows the CGI variables, creates a table showing the values of all the CGI variables. +**Example** +An [EWF service](/doc/workbook/headers/cgi_variables/application.e) that shows the CGI variables, creates a table showing the values of all the CGI variables. -Nav: [Workbook](../workbook.md) | [Handling Requests: Form/Query parameters] (/workbook/handling_request/form.md) | [Generating Responses](/workbook/generating_response/generating_response.md) +Nav: [Workbook](../workbook.md) | [Handling Requests: Form/Query parameters] (/doc/workbook/handling_request/form.md) | [Generating Responses](/doc/workbook/generating_response/generating_response.md)