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 <clifford...@gmail.com> 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 clo...@googlegroups.com
>>>> Note that posts from new members are moderated - please be patient with 
>>>> your first post.
>>>> To unsubscribe from this group, send email to
>>>> clojure+u...@googlegroups.com
>>>> 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 clojure+u...@googlegroups.com.
>>>> 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 clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
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 clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to