From 618c5d70536e8d8751c6cdadd69cf474e6607886 Mon Sep 17 00:00:00 2001 From: zelig Date: Tue, 2 Jun 2015 17:48:07 +0100 Subject: [PATCH] add HasScheme method to check for register scheme handler protocols + test --- common/docserver/docserver.go | 16 ++++++++++++++++ common/docserver/docserver_test.go | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/common/docserver/docserver.go b/common/docserver/docserver.go index 21fc980e0a..f719c71566 100644 --- a/common/docserver/docserver.go +++ b/common/docserver/docserver.go @@ -13,12 +13,14 @@ import ( type DocServer struct { *http.Transport DocRoot string + schemes []string } func New(docRoot string) (self *DocServer) { self = &DocServer{ Transport: &http.Transport{}, DocRoot: docRoot, + schemes: []string{"file"}, } self.RegisterProtocol("file", http.NewFileTransport(http.Dir(self.DocRoot))) return @@ -34,6 +36,20 @@ func (self *DocServer) Client() *http.Client { } } +func (self *DocServer) RegisterScheme(scheme string, rt http.RoundTripper) { + self.schemes = append(self.schemes, scheme) + self.RegisterProtocol(scheme, rt) +} + +func (self *DocServer) HasScheme(scheme string) bool { + for _, s := range self.schemes { + if s == scheme { + return true + } + } + return false +} + func (self *DocServer) GetAuthContent(uri string, hash common.Hash) (content []byte, err error) { // retrieve content diff --git a/common/docserver/docserver_test.go b/common/docserver/docserver_test.go index e7656bb2d3..09b16864a7 100644 --- a/common/docserver/docserver_test.go +++ b/common/docserver/docserver_test.go @@ -2,6 +2,7 @@ package docserver import ( "io/ioutil" + "net/http" "os" "testing" @@ -36,3 +37,18 @@ func TestGetAuthContent(t *testing.T) { } } + +type rt struct{} + +func (rt) RoundTrip(req *http.Request) (resp *http.Response, err error) { return } + +func TestRegisterScheme(t *testing.T) { + ds := New("/tmp/") + if ds.HasScheme("scheme") { + t.Errorf("expected scheme not to be registered") + } + ds.RegisterScheme("scheme", rt{}) + if !ds.HasScheme("scheme") { + t.Errorf("expected scheme to be registered") + } +}