support http.sslVerify too

This commit is contained in:
risk danger olson 2015-01-11 17:53:10 -07:00
parent f83b028792
commit 7a5bd75937
3 changed files with 40 additions and 39 deletions

@ -1,8 +1,10 @@
package gitmedia
import (
"crypto/tls"
"fmt"
"github.com/github/git-media/git"
"net/http"
"os"
"path"
"regexp"
@ -10,8 +12,9 @@ import (
)
type Configuration struct {
gitConfig map[string]string
remotes []string
gitConfig map[string]string
remotes []string
httpClient *http.Client
}
var (
@ -19,6 +22,22 @@ var (
httpPrefixRe = regexp.MustCompile("\\Ahttps?://")
)
func HttpClient() *http.Client {
return Config.HttpClient()
}
func (c *Configuration) HttpClient() *http.Client {
if c.httpClient == nil {
tr := &http.Transport{}
sslVerify, _ := c.GitConfig("http.sslverify")
if len(os.Getenv("GIT_SSL_NO_VERIFY")) > 0 || sslVerify == "false" {
tr.TLSClientConfig = &tls.Config{InsecureSkipVerify: true}
}
c.httpClient = &http.Client{Transport: tr}
}
return c.httpClient
}
func (c *Configuration) Endpoint() string {
if url, ok := c.GitConfig("media.url"); ok {
return url
@ -62,7 +81,7 @@ func (c *Configuration) GitConfig(key string) (string, bool) {
if c.gitConfig == nil {
c.loadGitConfig()
}
value, ok := c.gitConfig[key]
value, ok := c.gitConfig[strings.ToLower(key)]
return value, ok
}
@ -107,7 +126,7 @@ func (c *Configuration) loadGitConfig() {
if len(pieces) < 2 {
continue
}
key := pieces[0]
key := strings.ToLower(pieces[0])
c.gitConfig[key] = pieces[1]
keyParts := strings.Split(key, ".")

@ -7,8 +7,8 @@ import (
func TestEndpointDefaultsToOrigin(t *testing.T) {
config := &Configuration{
map[string]string{"remote.origin.media": "abc"},
[]string{},
gitConfig: map[string]string{"remote.origin.media": "abc"},
remotes: []string{},
}
assert.Equal(t, "abc", config.Endpoint())
@ -16,11 +16,11 @@ func TestEndpointDefaultsToOrigin(t *testing.T) {
func TestEndpointOverridesOrigin(t *testing.T) {
config := &Configuration{
map[string]string{
gitConfig: map[string]string{
"media.url": "abc",
"remote.origin.media": "def",
},
[]string{},
remotes: []string{},
}
assert.Equal(t, "abc", config.Endpoint())
@ -28,8 +28,8 @@ func TestEndpointOverridesOrigin(t *testing.T) {
func TestEndpointAddsMediaSuffix(t *testing.T) {
config := &Configuration{
map[string]string{"remote.origin.url": "https://example.com/foo/bar"},
[]string{},
gitConfig: map[string]string{"remote.origin.url": "https://example.com/foo/bar"},
remotes: []string{},
}
assert.Equal(t, "https://example.com/foo/bar.git/info/media", config.Endpoint())
@ -37,8 +37,8 @@ func TestEndpointAddsMediaSuffix(t *testing.T) {
func TestBareEndpointAddsMediaSuffix(t *testing.T) {
config := &Configuration{
map[string]string{"remote.origin.url": "https://example.com/foo/bar.git"},
[]string{},
gitConfig: map[string]string{"remote.origin.url": "https://example.com/foo/bar.git"},
remotes: []string{},
}
assert.Equal(t, "https://example.com/foo/bar.git/info/media", config.Endpoint())
@ -46,8 +46,8 @@ func TestBareEndpointAddsMediaSuffix(t *testing.T) {
func TestSSHEndpointAddsMediaSuffix(t *testing.T) {
config := &Configuration{
map[string]string{"remote.origin.url": "git@example.com:foo/bar"},
[]string{},
gitConfig: map[string]string{"remote.origin.url": "git@example.com:foo/bar"},
remotes: []string{},
}
assert.Equal(t, "https://example.com/foo/bar.git/info/media", config.Endpoint())
@ -55,8 +55,8 @@ func TestSSHEndpointAddsMediaSuffix(t *testing.T) {
func TestBareSSHEndpointAddsMediaSuffix(t *testing.T) {
config := &Configuration{
map[string]string{"remote.origin.url": "git@example.com:foo/bar.git"},
[]string{},
gitConfig: map[string]string{"remote.origin.url": "git@example.com:foo/bar.git"},
remotes: []string{},
}
assert.Equal(t, "https://example.com/foo/bar.git/info/media", config.Endpoint())
@ -64,8 +64,8 @@ func TestBareSSHEndpointAddsMediaSuffix(t *testing.T) {
func TestHTTPEndpointAddsMediaSuffix(t *testing.T) {
config := &Configuration{
map[string]string{"remote.origin.url": "http://example.com/foo/bar"},
[]string{},
gitConfig: map[string]string{"remote.origin.url": "http://example.com/foo/bar"},
remotes: []string{},
}
assert.Equal(t, "http://example.com/foo/bar.git/info/media", config.Endpoint())
@ -73,8 +73,8 @@ func TestHTTPEndpointAddsMediaSuffix(t *testing.T) {
func TestBareHTTPEndpointAddsMediaSuffix(t *testing.T) {
config := &Configuration{
map[string]string{"remote.origin.url": "http://example.com/foo/bar.git"},
[]string{},
gitConfig: map[string]string{"remote.origin.url": "http://example.com/foo/bar.git"},
remotes: []string{},
}
assert.Equal(t, "http://example.com/foo/bar.git/info/media", config.Endpoint())

@ -1,7 +1,6 @@
package gitmediaclient
import (
"crypto/tls"
"encoding/base64"
"encoding/json"
"errors"
@ -151,25 +150,8 @@ func validateMediaHeader(contentType string, reader io.Reader) (bool, *gitmedia.
return true, nil
}
var httpClient *http.Client
func getHttpClient() *http.Client {
if httpClient == nil {
if len(os.Getenv("GIT_SSL_NO_VERIFY")) > 0 {
tr := &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}
httpClient = &http.Client{Transport: tr}
} else {
httpClient = http.DefaultClient
}
}
return httpClient
}
func doRequest(req *http.Request, creds Creds) (*http.Response, *gitmedia.WrappedError) {
res, err := getHttpClient().Do(req)
res, err := gitmedia.HttpClient().Do(req)
var wErr *gitmedia.WrappedError