...

Source file src/github.com/aws/smithy-go/transport/http/url.go

Documentation: github.com/aws/smithy-go/transport/http

     1  package http
     2  
     3  import "strings"
     4  
     5  // JoinPath returns an absolute URL path composed of the two paths provided.
     6  // Enforces that the returned path begins with '/'. If added path is empty the
     7  // returned path suffix will match the first parameter suffix.
     8  func JoinPath(a, b string) string {
     9  	if len(a) == 0 {
    10  		a = "/"
    11  	} else if a[0] != '/' {
    12  		a = "/" + a
    13  	}
    14  
    15  	if len(b) != 0 && b[0] == '/' {
    16  		b = b[1:]
    17  	}
    18  
    19  	if len(b) != 0 && len(a) > 1 && a[len(a)-1] != '/' {
    20  		a = a + "/"
    21  	}
    22  
    23  	return a + b
    24  }
    25  
    26  // JoinRawQuery returns an absolute raw query expression. Any duplicate '&'
    27  // will be collapsed to single separator between values.
    28  func JoinRawQuery(a, b string) string {
    29  	a = strings.TrimFunc(a, isAmpersand)
    30  	b = strings.TrimFunc(b, isAmpersand)
    31  
    32  	if len(a) == 0 {
    33  		return b
    34  	}
    35  	if len(b) == 0 {
    36  		return a
    37  	}
    38  
    39  	return a + "&" + b
    40  }
    41  
    42  func isAmpersand(v rune) bool {
    43  	return v == '&'
    44  }
    45  

View as plain text