diff options
author | ferhat elmas <elmas.ferhat@gmail.com> | 2016-11-15 01:18:53 +0100 |
---|---|---|
committer | Máximo Cuadros <mcuadros@gmail.com> | 2016-11-15 01:18:53 +0100 |
commit | 16d86605732ba3198c0acd4317b53cf4991a7d4d (patch) | |
tree | 3306f0438235f7dfe19fd37c5393a4794abe0535 /examples | |
parent | eb89d2dd9a36440d58aea224c055b364e49785f7 (diff) | |
download | go-git-16d86605732ba3198c0acd4317b53cf4991a7d4d.tar.gz |
Add configurable http client factory (fixes #120) (#121)
* new http client factory ready to install/override default http(s)
* mv GitUploadPackServiceFactory to clients.common pkg
* rename http.HTTPError to http.Err
* rename http.HTTPAuthMethod to http.AuthMethod
* add doc and examples/ usage
* general improvements:
- update install link in readme to v4 (example are already pointing v4)
- fix indentation in package doc (styling for godoc.org)
- use http.Status constants instead of integers
- close leaked response body
- rm named returns which stutter in doc
- fix one format string
- rm unnecessary if checks
- documentation fixes
Diffstat (limited to 'examples')
-rw-r--r-- | examples/custom_http_client/main.go | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/examples/custom_http_client/main.go b/examples/custom_http_client/main.go new file mode 100644 index 0000000..f28590f --- /dev/null +++ b/examples/custom_http_client/main.go @@ -0,0 +1,59 @@ +package main + +import ( + "crypto/tls" + "net/http" + "time" + + "github.com/fatih/color" + + git "gopkg.in/src-d/go-git.v4" + "gopkg.in/src-d/go-git.v4/plumbing/client" + githttp "gopkg.in/src-d/go-git.v4/plumbing/client/http" +) + +func main() { + // Create a custom http(s) client + customClient := &http.Client{ + Transport: &http.Transport{ + TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, + }, // accept any certificate (might be useful for testing) + Timeout: 15 * time.Second, // 15 second timeout + CheckRedirect: func(req *http.Request, via []*http.Request) error { // don't follow redirect + return http.ErrUseLastResponse + }, + } + // Override http(s) default protocol to use our custom client + clients.InstallProtocol( + "https", + githttp.NewGitUploadPackServiceFactory(customClient)) + + // Create an in-memory repository + r := git.NewMemoryRepository() + + const url = "https://github.com/git-fixtures/basic.git" + + // Clone repo + if err := r.Clone(&git.CloneOptions{URL: url}); err != nil { + panic(err) + } + + // Retrieve the branch pointed by HEAD + head, err := r.Head() + if err != nil { + panic(err) + } + + // Print latest commit + commit, err := r.Commit(head.Hash()) + if err != nil { + panic(err) + } + color.Green(commit.String()) + // Output: + // commit 6ecf0ef2c2dffb796033e5a02219af86ec6584e5 + // Author: Máximo Cuadros Ortiz <mcuadros@gmail.com> + // Date: Sun Apr 05 23:30:47 2015 +0200 + // + // vendor stuff +} |