]> Cypherpunks repositories - gostls13.git/commitdiff
http: add Request.SetBasicAuth method
authorBrad Fitzpatrick <bradfitz@golang.org>
Fri, 13 May 2011 22:43:46 +0000 (15:43 -0700)
committerBrad Fitzpatrick <bradfitz@golang.org>
Fri, 13 May 2011 22:43:46 +0000 (15:43 -0700)
R=golang-dev, dsymonds, rsc
CC=golang-dev
https://golang.org/cl/4543050

src/pkg/http/request.go
src/pkg/http/request_test.go

index 8545d75660a829d5464bd9a38af2cf36e4967089..353b1c62c91fe77ace819d4d179fb0a35957672b 100644 (file)
@@ -12,6 +12,7 @@ import (
        "bufio"
        "crypto/tls"
        "container/vector"
+       "encoding/base64"
        "fmt"
        "io"
        "io/ioutil"
@@ -479,6 +480,18 @@ func NewRequest(method, url string, body io.Reader) (*Request, os.Error) {
        return req, nil
 }
 
+// SetBasicAuth sets the request's Authorization header to use HTTP
+// Basic Authentication with the provided username and password.
+//
+// With HTTP Basic Authentication the provided username and password
+// are not encrypted.
+func (r *Request) SetBasicAuth(username, password string) {
+       s := username + ":" + password
+       buf := make([]byte, base64.StdEncoding.EncodedLen(len(s)))
+       base64.StdEncoding.Encode(buf, []byte(s))
+       r.Header.Set("Authorization", "Basic "+string(buf))
+}
+
 // ReadRequest reads and parses a request from b.
 func ReadRequest(b *bufio.Reader) (req *Request, err os.Error) {
 
index 466e47a1f8b30b40787d59ecf26b01765ce72d83..8429e92ebadab0c9da750c071243501a0aa50ff3 100644 (file)
@@ -173,6 +173,14 @@ func TestRedirect(t *testing.T) {
        }
 }
 
+func TestSetBasicAuth(t *testing.T) {
+       r, _ := NewRequest("GET", "http://example.com/", nil)
+       r.SetBasicAuth("Aladdin", "open sesame")
+       if g, e := r.Header.Get("Authorization"), "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=="; g != e {
+               t.Errorf("got header %q, want %q", g, e)
+       }
+}
+
 func TestMultipartRequest(t *testing.T) {
        // Test that we can read the values and files of a 
        // multipart request with FormValue and FormFile,