Skip to content

Commit

Permalink
fix headers and update deps
Browse files Browse the repository at this point in the history
  • Loading branch information
Kaley committed Sep 28, 2016
1 parent e1b2e89 commit d2fbcf6
Show file tree
Hide file tree
Showing 5 changed files with 72 additions and 14 deletions.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ The [Service Registry] is a utility that will listen on the network for services
## RackHD Proxy
The [RackHD Proxy] is a utility that acts as a proxy to the RackHD API.



[Service Registry]: https://github.com/RackHD/neighborhood-manager/tree/master/registry
[RackHD Proxy]: https://github.com/RackHD/neighborhood-manager/tree/master/rackhd

Expand Down
46 changes: 38 additions & 8 deletions glide.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions glide.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,14 @@
package: github.com/RackHD/neighborhood-manager
import:
- package: github.com/hashicorp/consul
version: ~0.7.0
subpackages:
- api
- package: github.com/hashicorp/go-cleanhttp
- package: github.com/king-jam/gossdp
- package: github.com/spf13/viper
testImport:
- package: github.com/onsi/ginkgo
version: ~1.2.0
- package: github.com/onsi/gomega
version: ~1.0.0
25 changes: 21 additions & 4 deletions rackhd/proxy/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,11 @@ func (p *Server) HandleNodes(w http.ResponseWriter, r *http.Request) {
w.Write([]byte(fmt.Sprintf("%s", err)))
return
}
if (r.Method != "GET") && (len(addrMap) > 1) {
w.WriteHeader(400)
w.Write([]byte(fmt.Sprintln("Unsupported api call to multiple hosts. Use query string method.")))
return
}
ar := p.GetResp(r, addrMap)
p.RespCheck(r, w, ar)
}
Expand All @@ -83,20 +88,20 @@ func (p *Server) GetResp(r *http.Request, addrs map[string]struct{}) Responses {
defer p.wg.Done()
req, err := NewRequest(r, entry)
if err != nil {
cr <- NewResposeFromError(err)
cr <- NewResponseFromError(err)
return
}
client := cleanhttp.DefaultClient()
respGet, err := client.Do(req)
fmt.Println("request sent")
if err != nil {
cr <- NewResposeFromError(err)
cr <- NewResponseFromError(err)
return
}
defer respGet.Body.Close()
responseCopy, err := NewResponse(respGet)
if err != nil {
cr <- NewResposeFromError(err)
cr <- NewResponseFromError(err)
return
}
cr <- responseCopy
Expand Down Expand Up @@ -159,7 +164,8 @@ func (p *Server) GetQueryAddresses(querySlice []string) map[string]struct{} {
// helper function to write to the ResponseWriter.
func (p *Server) RespCheck(r *http.Request, w http.ResponseWriter, ar Responses) {
w.Write([]byte("["))
var cutSize int
var cutSize, status int
status = 500
for i, r := range ar {
if r.Body == nil {
continue
Expand All @@ -175,6 +181,17 @@ func (p *Server) RespCheck(r *http.Request, w http.ResponseWriter, ar Responses)
if i != len(ar)-1 {
w.Write([]byte(","))
}
if r.StatusCode < status {
status = r.StatusCode
}
}
if len(ar) <= 1 {
for k, v := range ar[0].Header {
for _, value := range v {
w.Header().Set(k, value)
}
}
}
w.Write([]byte("]"))
w.WriteHeader(status)
}
6 changes: 4 additions & 2 deletions rackhd/proxy/helper.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (

// Response is the internal proxy response object
type Response struct {
Header http.Header
StatusCode int
Body []byte
RequestURL string
Expand All @@ -22,6 +23,7 @@ func NewResponse(resp *http.Response) (*Response, error) {
return nil, err
}
proxyResponse := &Response{
Header: resp.Header,
StatusCode: resp.StatusCode,
Body: body,
RequestURL: resp.Request.URL.String(),
Expand All @@ -30,8 +32,8 @@ func NewResponse(resp *http.Response) (*Response, error) {
return proxyResponse, err
}

// NewResposeFromError sets errors
func NewResposeFromError(err error) *Response {
// NewResponseFromError sets errors
func NewResponseFromError(err error) *Response {
proxyRespnse := &Response{
StatusCode: 500,
Error: err,
Expand Down

0 comments on commit d2fbcf6

Please sign in to comment.