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:
parent
36cec789cd
commit
cd4d0004fa
@ -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) {
|
||||||
|
|
||||||
|
@ -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,
|
||||||
|
Loading…
Reference in New Issue
Block a user