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

Tobias Boege taboege at ...626...
Tue Jul 26 18:26:14 CEST 2016


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

-- 
"There's an old saying: Don't change anything... ever!" -- Mr. Monk




More information about the User mailing list