On Sun, 23 Jun 2019, Sven Barth via fpc-pascal wrote:

- localhost:8080/metadata works
- localhost:8080/users returns "INVALID RESOURCE"

Because it has rdoConnectionInURL set, and so you must do
localhost:8080/expenses/users

Ahhhhhh! Hadn't seen that this option is active... Okay, then it indeed works as expected, both with and without rdoConnectionInURL.

By the way: I noticed a slight annoyance, but I don't know whether one can really do something about that: When I set rdoConnectionInURL to False inside the object inspector it turns on again, because rdoConnectionResource is set. Took me a moment to look at the source code to see that I need to disable rdoConnectionResource first. Don't know what a better solution would be...

Funny you mention this, I was fooled myself yesterday, I also had to look in
the sources :(

One way would be to disable rdoConnectionResource if you disable
rdoConnectionInURL. I will add this.

But wouldn't that lead to an analogous problem with rdoConnectionResource if rdoConnectionInURL is not set?

I fixed this: if you disable rdoConnectionInURL, rdoConnectionResource is
disabled. If not, if rdoConnectionResource is included, rdoConnectionInURL
will be set too.

I also fixed the use in a module. The module will set 'active' to false on
the dispatcher. Before handling the request, it takes the request and uses
pathinfo to set the routing parameters

With the sample module, I tested all possible cases:

No rdoConnectionInURL:
wget --auth-no-challenge --http-user=me --http-password=secret 
http://localhost:8080/REST/metadata --content-on-error -O - -d 
--auth-no-challenge
wget --auth-no-challenge --http-user=me --http-password=secret 
http://localhost:8080/REST/users --content-on-error -O - -d --auth-no-challenge

rdoConnectionInURL set:
Basepath empty:
wget --auth-no-challenge --http-user=me --http-password=secret 
http://localhost:8080/REST/metadata --content-on-error -O - -d 
--auth-no-challenge
wget --auth-no-challenge --http-user=me --http-password=secret 
http://localhost:8080/REST/expenses/metadata --content-on-error -O - -d 
--auth-no-challenge
wget --auth-no-challenge --http-user=me --http-password=secret 
http://localhost:8080/REST/expenses/users --content-on-error -O - -d 
--auth-no-challenge

BasePath set to Lola
wget --auth-no-challenge --http-user=me --http-password=secret 
http://localhost:8080/REST/Lola/metadata --content-on-error -O - -d 
--auth-no-challenge
wget --auth-no-challenge --http-user=me --http-password=secret 
http://localhost:8080/REST/Lola/expenses/metadata --content-on-error -O - -d 
--auth-no-challenge
wget --auth-no-challenge --http-user=me --http-password=secret 
http://localhost:8080/REST/Lola/expenses/users --content-on-error -O - -d 
--auth-no-challenge

BasePath set to Lola/Pola

wget --auth-no-challenge --http-user=me --http-password=secret 
http://localhost:8080/REST/Lola/Pola/metadata --content-on-error -O - -d 
--auth-no-challenge
wget --auth-no-challenge --http-user=me --http-password=secret 
http://localhost:8080/REST/Lola/Pola/expenses/metadata --content-on-error -O - 
-d --auth-no-challenge
wget --auth-no-challenge --http-user=me --http-password=secret 
http://localhost:8080/REST/Lola/Pola/expenses/users --content-on-error -O - -d 
--auth-no-challenge


I think I covered all cases. If I forgot one, do let me know...

I will update the Wiki.

Michael.
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to