mirror of
https://github.com/minio/minio.git
synced 2024-12-24 06:05:55 -05:00
Refactor: simplify signV4TrimAll() (#3179)
This commit is contained in:
parent
8408dfaa6c
commit
eb1bc67db1
@ -161,15 +161,7 @@ func extractSignedHeaders(signedHeaders []string, reqHeaders http.Header) (http.
|
||||
// Trim leading and trailing spaces and replace sequential spaces with one space, following Trimall()
|
||||
// in http://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html
|
||||
func signV4TrimAll(input string) string {
|
||||
// Remove all whitespaces first
|
||||
cleanWhiteSpaces := func(r rune) rune {
|
||||
switch r {
|
||||
case '\t', '\n', '\u000b', '\r', '\f':
|
||||
return ' '
|
||||
}
|
||||
return r
|
||||
}
|
||||
input = strings.Map(cleanWhiteSpaces, input)
|
||||
// Compress adjacent spaces to one space and return
|
||||
// Compress adjacent spaces (a space is determined by
|
||||
// unicode.IsSpace() internally here) to one space and return
|
||||
return strings.Join(strings.Fields(input), " ")
|
||||
}
|
||||
|
@ -212,8 +212,8 @@ func TestFindHost(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
// TestSigV4TrimAll - tests the logic of TrimAll() function
|
||||
func TestSigV4TrimAll(t *testing.T) {
|
||||
// TestSignV4TrimAll - tests the logic of TrimAll() function
|
||||
func TestSignV4TrimAll(t *testing.T) {
|
||||
testCases := []struct {
|
||||
// Input.
|
||||
inputStr string
|
||||
@ -229,13 +229,14 @@ func TestSigV4TrimAll(t *testing.T) {
|
||||
{" a b c ", "a b c"},
|
||||
{"a \t b c ", "a b c"},
|
||||
{"\"a \t b c ", "\"a b c"},
|
||||
{" \t\n\u000b\r\fa \t\n\u000b\r\f b \t\n\u000b\r\f c \t\n\u000b\r\f", "a b c"},
|
||||
}
|
||||
|
||||
// Tests generated values from url encoded name.
|
||||
for i, testCase := range testCases {
|
||||
result := signV4TrimAll(testCase.inputStr)
|
||||
if testCase.result != result {
|
||||
t.Errorf("Test %d: Expected sigV4TrimAll result to be \"%s\", but found it to be \"%s\" instead", i+1, testCase.result, result)
|
||||
t.Errorf("Test %d: Expected signV4TrimAll result to be \"%s\", but found it to be \"%s\" instead", i+1, testCase.result, result)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user