File tree Expand file tree Collapse file tree 2 files changed +57
-0
lines changed
Expand file tree Collapse file tree 2 files changed +57
-0
lines changed Original file line number Diff line number Diff line change 11package api2go
22
3+ import "net/http"
4+
5+ type callbackResolver struct {
6+ callback func (r http.Request ) string
7+ r http.Request
8+ }
9+
10+ //NewCallbackResolver handles each resolve via
11+ //your provided callback func
12+ func NewCallbackResolver (callback func (http.Request ) string ) URLResolver {
13+ return & callbackResolver {callback : callback }
14+ }
15+
16+ //GetBaseURL calls the callback given in the constructor method
17+ //to implement `URLResolver`
18+ func (c callbackResolver ) GetBaseURL () string {
19+ return c .callback (c .r )
20+ }
21+
22+ //SetRequest to implement `RequestAwareURLResolver`
23+ func (c * callbackResolver ) SetRequest (r http.Request ) {
24+ c .r = r
25+ }
26+
327//staticResolver is only used
428//for backwards compatible reasons
529//and might be removed in the future
Original file line number Diff line number Diff line change 1+ package api2go
2+
3+ import (
4+ "net/http"
5+
6+ . "github.com/onsi/ginkgo"
7+ . "github.com/onsi/gomega"
8+ )
9+
10+ var _ = Describe ("Resolver test" , func () {
11+ Context ("basic function of callback resolver" , func () {
12+ It ("works" , func () {
13+ callback := func (r http.Request ) string {
14+ if r .Header .Get ("lol" ) != "" {
15+ return "funny"
16+ }
17+
18+ return "unfunny"
19+ }
20+
21+ resolver := NewCallbackResolver (callback )
22+ Expect (resolver .GetBaseURL ()).To (Equal ("unfunny" ))
23+ req , err := http .NewRequest ("GET" , "/v1/posts" , nil )
24+ req .Header .Set ("lol" , "lol" )
25+ Expect (err ).To (BeNil ())
26+ requestResolver , ok := resolver .(RequestAwareURLResolver )
27+ Expect (ok ).To (Equal (true ), "does not implement interface" )
28+ Expect (requestResolver .GetBaseURL ()).To (Equal ("unfunny" ))
29+ requestResolver .SetRequest (* req )
30+ Expect (requestResolver .GetBaseURL ()).To (Equal ("funny" ))
31+ })
32+ })
33+ })
You can’t perform that action at this time.
0 commit comments