]> Cypherpunks repositories - gostls13.git/commitdiff
Add basic http authentication support.
authorIvan Krasin <krasin@golang.org>
Wed, 16 Dec 2009 00:27:45 +0000 (16:27 -0800)
committerRuss Cox <rsc@golang.org>
Wed, 16 Dec 2009 00:27:45 +0000 (16:27 -0800)
Fixes #407.

R=rsc, ajstarks
CC=ushakov
https://golang.org/cl/176076

src/pkg/http/client.go

index aa3d3be6dc2d3716ce294ffa3f898a372ca6f999..af11a4b74576fa6b5b566ffa640520d3b2e518a1 100644 (file)
@@ -8,6 +8,7 @@ package http
 
 import (
        "bufio"
+       "encoding/base64"
        "fmt"
        "io"
        "net"
@@ -118,6 +119,16 @@ func send(req *Request) (resp *Response, err os.Error) {
        if !hasPort(addr) {
                addr += ":http"
        }
+       info := req.URL.Userinfo
+       if len(info) > 0 {
+               enc := base64.URLEncoding
+               encoded := make([]byte, enc.EncodedLen(len(info)))
+               enc.Encode(encoded, strings.Bytes(info))
+               if req.Header == nil {
+                       req.Header = make(map[string]string)
+               }
+               req.Header["Authorization"] = "Basic " + string(encoded)
+       }
        conn, err := net.Dial("tcp", "", addr)
        if err != nil {
                return nil, err