Hi Clifford,
First, br/resource-maybe can only appear as the second item of a route
pair, because it only satisfies the bidi.bidi/Matched protocol. The first
item of a route pair is for patterns only, i.e. types that satisfy
bidi.bidi/Pattern protocol.
What you are trying to do is easy (when you know how).
Let's assume you have a file in your project resources/public/foo.txt such
that
(io/resource "public/foo.txt")
returns non-nil
Your route structure could look like this :-
(def routes
["" [
["/index.html" :index]
["" (br/resources {:prefix "public"})]
]])
Note here I'm using a *vector-of-vectors* syntax, which I recommend when
you have ambiguous patterns because the order in which the patterns should
be tried is made explicit. (You can use maps, but I suggest using the more
verbose vector-of-vectors syntax in cases such as this)
(bidi/match-route routes "/index.html") => {:handler :index}
as we should expect.
(bidi/match-route routes "/foo.txt")
will try fail the "/index.html" pattern, and try the "" pattern with a
remainder of "/foo.txt". The prefix of "public" is then preprending,
resulting in the string "public/foo.txt", which is passed to io/resource -
and we get a hit.
The difference between resources and resources-maybe, is that resources
will always return a handler - if the resource doesn't exist the handler
will return {:status 404} - no other patterns will be tried. If you use
resources-maybe, then a nil is returned if there is no matching resource,
and any remaining patterns are then tried.
I hope this helps - let me know if you need more help.
Regards,
Malcolm
On Monday, 12 January 2015 07:27:16 UTC, cliff wrote:
>
> Would something like this be correct?
>
> (def routes
>> ["" {
>> "/" {["" (br/resources-maybe {:prefix "public"})]
>> :home-page-handler}}])
>
>
> On Monday, 12 January 2015 08:39:19 UTC+2, cliff wrote:
>>
>> Hi Dan
>>
>> Thanks for that. I have read that section.
>> My question is, how do I associate the "/" route with both a handler and
>> the 'resources-maybe'?
>>
>> I would like the resources to pick up the Google Closure library sitting
>> in 'resources/public/js/out' when navigating to '/index.html'
>>
>>
>>
>> On Monday, 12 January 2015 00:36:59 UTC+2, Dan Kersten wrote:
>>>
>>> Hi,
>>>
>>> Take a look at https://github.com/juxt/bidi#resources-and-resourcesmaybe
>>>
>>> Regards,
>>> Dan
>>>
>>> On 11 January 2015 at 19:27, cliff <[email protected]> wrote:
>>>
>>>> Hi
>>>>
>>>> I am trying to mimic the following Compojure behaviour, in juxt/bidi
>>>>
>>>> (defroutes routes
>>>>> (*resources* "/")
>>>>> (GET "/*" req (io/resource "index.html")))
>>>>>
>>>>
>>>>
>>>>> (def http-handler (reload/wrap-reload (api #'routes)))
>>>>
>>>>
>>>> In Compojure, the 'resources' function seems to load all resources by
>>>> default from /resources/public/.
>>>> When I try set up the equivalent routes in bidi, I keep getting errors
>>>> of resources not found.
>>>>
>>>> How would you do this in, juxt/bidi ?
>>>>
>>>> Thanks
>>>> Clifford
>>>>
>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Clojure" group.
>>>> To post to this group, send email to [email protected]
>>>> Note that posts from new members are moderated - please be patient with
>>>> your first post.
>>>> To unsubscribe from this group, send email to
>>>> [email protected]
>>>> For more options, visit this group at
>>>> http://groups.google.com/group/clojure?hl=en
>>>> ---
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Clojure" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to [email protected].
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>>
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.