[Gambas-user] Use gb.web.form in a web project with not only web forms

Benoît Minisini gambas at ...1...
Mon Aug 8 20:35:33 CEST 2016


Le 26/07/2016 18:26, Tobias Boege a écrit :
> Hi Benoit,
> 
> I have some projects using gb.web.form now and in every of these I have the
> requirement not only to load webforms but also a webpage or to implement
> some other URL schema to generate or serve a ressource.
> 
> As I see it, gb.web.form wants to take complete control over the project's
> Main() routine (correct me if I'm wrong here), whereas my projects require
> some analysis of the request path in their Main() such as:
> 
>   Select Case Mid$(Request.Path, 2)
>     Case "favicon.png"
>       sPath = Server.DataDir &/ "favicon.png"
>       If Exist(sPath) Then
>         Response.SendFile(sPath)
>       Else
>         Response.SendFile("default.png")
>       Endif
> 
>     Case Like "data:*" ' server data
>       Response.SendFile(Server.DataDir &/ Mid$(Request.Path, 7))
> 
>     Case Like "?*:*" ' possibly user data, might also be /lib:0.0.1.js from gb.web.form
>       ' Note that this URL is not protected by the session
>       With Scan(Mid$(Request.Path, 2), "*:*")
>         If Users.Exist(.[0]) Then
>           Users[.[0]].SendFile(.[1])
>         Else
>           Goto _Default
>         Endif
>       End With
> 
>     Case "upload"
>       ' ...
> 
>     :
>     : ' Other special URLs and URL schemata
>     :
> 
>     Case "" ' root
>       If CheckSession() Then Return
>       Home.Run()
> 
>     Default
>     _Default:
>       ' XXX: This is a hack to get gb.web.form data and to pipe its javascript
>       '      magic through.
>       With Scan(Request.Path, "/*/*")
>         If .Count Then
>           Try Class.Stat(.[0])
>           If Error Then
>             Request.Path = "/" &/ File.Name(Request.Path)
>           Endif
>         Endif
>       End With
>       WebForm.Main()
>   End Select
> 
> I have to serve data from a preconfigured server directory, generate some
> data on-the-fly, send project-internal data or serve webforms. As you may
> be able to tell, the Default case handles gb.web.form integration into the
> control flow and it's not pretty.
> 
> Do you have any idea?
> 
> Regards,
> Tobi
> 

Yes, the idea of gb.web.form requires taking entire control of the URL
at the moment.

Maybe adding a call to a "HandleRequest" (or another name) public method
during the Main function would be enough for you?

-- 
Benoît Minisini




More information about the User mailing list