1
0
mirror of https://github.com/golang/go synced 2024-11-22 02:14:40 -07:00

http: add Request.SetBasicAuth method

R=golang-dev, dsymonds, rsc
CC=golang-dev
https://golang.org/cl/4543050
This commit is contained in:
Brad Fitzpatrick 2011-05-13 15:43:46 -07:00
parent 36cec789cd
commit cd4d0004fa
2 changed files with 21 additions and 0 deletions

View File

@ -12,6 +12,7 @@ import (
"bufio" "bufio"
"crypto/tls" "crypto/tls"
"container/vector" "container/vector"
"encoding/base64"
"fmt" "fmt"
"io" "io"
"io/ioutil" "io/ioutil"
@ -479,6 +480,18 @@ func NewRequest(method, url string, body io.Reader) (*Request, os.Error) {
return req, nil 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. // ReadRequest reads and parses a request from b.
func ReadRequest(b *bufio.Reader) (req *Request, err os.Error) { func ReadRequest(b *bufio.Reader) (req *Request, err os.Error) {

View 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) { func TestMultipartRequest(t *testing.T) {
// Test that we can read the values and files of a // Test that we can read the values and files of a
// multipart request with FormValue and FormFile, // multipart request with FormValue and FormFile,