-
Notifications
You must be signed in to change notification settings - Fork 93
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Robust Header Check #13
Changes from 7 commits
844754d
2ee8446
8a5d177
7c7f7b3
52eae4e
6531cce
a58e813
9e23b94
677e3d3
b18aaba
3169c9a
e9f06a3
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,6 +5,7 @@ import ( | |
"fmt" | ||
"io/ioutil" | ||
"net/http" | ||
"strings" | ||
"sync" | ||
"time" | ||
) | ||
|
@@ -90,7 +91,7 @@ func (t *Transport) RoundTrip(req *http.Request) (*http.Response, error) { | |
} | ||
|
||
req.Header.Set("Authorization", "token "+token) | ||
req.Header.Add("Accept", acceptHeader) // We add to "Accept" header to avoid overwriting existing req headers. | ||
addAcceptHeader(req) | ||
resp, err := t.tr.RoundTrip(req) | ||
return resp, err | ||
} | ||
|
@@ -134,3 +135,22 @@ func (t *Transport) refreshToken() error { | |
|
||
return nil | ||
} | ||
|
||
func addAcceptHeader(req *http.Request) { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Could this be slightly rewritten to return early when possible, what's your thoughts on this? I haven't tested it at all. // addAcceptIfJSON adds the preview accept headers if the request does not already specify an
// accept header, or if it's already specifying acceptance of json type as defined by
// https://developer.github.com/v3/media/.
func addAcceptIfJSON(headers http.Header) {
if headers.Get("Accept") == "" {
headers.Set("Accept", acceptHeader)
return
}
for _, header := range headers["Accept"] {
if strings.HasSuffix(header, "json") {
headers.Add("Accept", acceptHeader)
return
}
}
} Just accepting a There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @bradleyfalzon Made the changes |
||
if req.Header.Get("Accept") != "" { | ||
//Need to loop through all Accept headers incase there is more than one. | ||
for headerName, headers := range req.Header { | ||
if strings.ToLower(headerName) == "accept" { | ||
for _, header := range headers { | ||
//Looks as though all media types (https://developer.github.com/v3/media/) that can accept json end with "json". Only doing a suffix check to see if a json header already exists. | ||
if strings.HasSuffix(header, "json") { | ||
req.Header.Add("Accept", acceptHeader) // We add to "Accept" header to avoid overwriting existing req headers. | ||
return | ||
} | ||
} | ||
} | ||
} | ||
} else { | ||
req.Header.Add("Accept", acceptHeader) // We add to "Accept" header to avoid overwriting existing req headers. | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: can you remove this extra newline?