Add httpunix dependency
This commit is contained in:
parent
34b0580225
commit
c22861931b
5 changed files with 125 additions and 0 deletions
10
Gopkg.lock
generated
10
Gopkg.lock
generated
|
@ -562,6 +562,14 @@
|
|||
revision = "298182f68c66c05229eb03ac171abe6e309ee79a"
|
||||
version = "v1.0.3"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
digest = "1:1e4c6579336a71d60c374c18fefca05377a3b241d5e0b246caa6efd37a1d1369"
|
||||
name = "github.com/tv42/httpunix"
|
||||
packages = ["."]
|
||||
pruneopts = "NUT"
|
||||
revision = "b75d8614f926c077e48d85f1f8f7885b758c6225"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:c10994a08ed2ff2cc7611d03ded8bb5f782096880b2daab391adbd9ab95a1764"
|
||||
name = "github.com/zakjan/cert-chain-resolver"
|
||||
|
@ -1230,12 +1238,14 @@
|
|||
"github.com/prometheus/client_model/go",
|
||||
"github.com/prometheus/common/expfmt",
|
||||
"github.com/spf13/pflag",
|
||||
"github.com/tv42/httpunix",
|
||||
"github.com/zakjan/cert-chain-resolver/certUtil",
|
||||
"gopkg.in/fsnotify/fsnotify.v1",
|
||||
"gopkg.in/go-playground/pool.v3",
|
||||
"k8s.io/api/apps/v1beta1",
|
||||
"k8s.io/api/core/v1",
|
||||
"k8s.io/api/extensions/v1beta1",
|
||||
"k8s.io/api/rbac/v1",
|
||||
"k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset",
|
||||
"k8s.io/apimachinery/pkg/api/errors",
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1",
|
||||
|
|
1
vendor/github.com/tv42/httpunix/.gitignore
generated
vendored
Normal file
1
vendor/github.com/tv42/httpunix/.gitignore
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
*.test
|
19
vendor/github.com/tv42/httpunix/LICENSE
generated
vendored
Normal file
19
vendor/github.com/tv42/httpunix/LICENSE
generated
vendored
Normal file
|
@ -0,0 +1,19 @@
|
|||
Copyright (c) 2013-2015 Tommi Virtanen.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
95
vendor/github.com/tv42/httpunix/httpunix.go
generated
vendored
Normal file
95
vendor/github.com/tv42/httpunix/httpunix.go
generated
vendored
Normal file
|
@ -0,0 +1,95 @@
|
|||
// Package httpunix provides a HTTP transport (net/http.RoundTripper)
|
||||
// that uses Unix domain sockets instead of HTTP.
|
||||
//
|
||||
// This is useful for non-browser connections within the same host, as
|
||||
// it allows using the file system for credentials of both client
|
||||
// and server, and guaranteeing unique names.
|
||||
//
|
||||
// The URLs look like this:
|
||||
//
|
||||
// http+unix://LOCATION/PATH_ETC
|
||||
//
|
||||
// where LOCATION is translated to a file system path with
|
||||
// Transport.RegisterLocation, and PATH_ETC follow normal http: scheme
|
||||
// conventions.
|
||||
package httpunix
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"errors"
|
||||
"net"
|
||||
"net/http"
|
||||
"sync"
|
||||
"time"
|
||||
)
|
||||
|
||||
// Scheme is the URL scheme used for HTTP over UNIX domain sockets.
|
||||
const Scheme = "http+unix"
|
||||
|
||||
// Transport is a http.RoundTripper that connects to Unix domain
|
||||
// sockets.
|
||||
type Transport struct {
|
||||
DialTimeout time.Duration
|
||||
RequestTimeout time.Duration
|
||||
ResponseHeaderTimeout time.Duration
|
||||
|
||||
mu sync.Mutex
|
||||
// map a URL "hostname" to a UNIX domain socket path
|
||||
loc map[string]string
|
||||
}
|
||||
|
||||
// RegisterLocation registers an URL location and maps it to the given
|
||||
// file system path.
|
||||
//
|
||||
// Calling RegisterLocation twice for the same location is a
|
||||
// programmer error, and causes a panic.
|
||||
func (t *Transport) RegisterLocation(loc string, path string) {
|
||||
t.mu.Lock()
|
||||
defer t.mu.Unlock()
|
||||
if t.loc == nil {
|
||||
t.loc = make(map[string]string)
|
||||
}
|
||||
if _, exists := t.loc[loc]; exists {
|
||||
panic("location " + loc + " already registered")
|
||||
}
|
||||
t.loc[loc] = path
|
||||
}
|
||||
|
||||
var _ http.RoundTripper = (*Transport)(nil)
|
||||
|
||||
// RoundTrip executes a single HTTP transaction. See
|
||||
// net/http.RoundTripper.
|
||||
func (t *Transport) RoundTrip(req *http.Request) (*http.Response, error) {
|
||||
if req.URL == nil {
|
||||
return nil, errors.New("http+unix: nil Request.URL")
|
||||
}
|
||||
if req.URL.Scheme != Scheme {
|
||||
return nil, errors.New("unsupported protocol scheme: " + req.URL.Scheme)
|
||||
}
|
||||
if req.URL.Host == "" {
|
||||
return nil, errors.New("http+unix: no Host in request URL")
|
||||
}
|
||||
t.mu.Lock()
|
||||
path, ok := t.loc[req.URL.Host]
|
||||
t.mu.Unlock()
|
||||
if !ok {
|
||||
return nil, errors.New("unknown location: " + req.Host)
|
||||
}
|
||||
|
||||
c, err := net.DialTimeout("unix", path, t.DialTimeout)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
r := bufio.NewReader(c)
|
||||
if t.RequestTimeout > 0 {
|
||||
c.SetWriteDeadline(time.Now().Add(t.RequestTimeout))
|
||||
}
|
||||
if err := req.Write(c); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if t.ResponseHeaderTimeout > 0 {
|
||||
c.SetReadDeadline(time.Now().Add(t.ResponseHeaderTimeout))
|
||||
}
|
||||
resp, err := http.ReadResponse(r, req)
|
||||
return resp, err
|
||||
}
|
BIN
vendor/google.golang.org/api/key.json.enc
generated
vendored
BIN
vendor/google.golang.org/api/key.json.enc
generated
vendored
Binary file not shown.
Loading…
Reference in a new issue