diff options
| author | Teddy Wing | 2022-09-20 21:00:42 +0200 | 
|---|---|---|
| committer | Teddy Wing | 2022-09-20 21:00:42 +0200 | 
| commit | 2cc79c6873dc59b0510045717b0359bc64513fc1 (patch) | |
| tree | cdac0f9a3671cc21374f43d1d5dae829e021737c /vendor/golang.org/x | |
| parent | 426afbfbee72c8c1e66c67c6837f62a9f5633698 (diff) | |
| download | gdrive-2cc79c6873dc59b0510045717b0359bc64513fc1.tar.bz2 | |
Untrack and ignore the vendor directory
I don't think this should be in version control.
Diffstat (limited to 'vendor/golang.org/x')
21 files changed, 0 insertions, 1928 deletions
| diff --git a/vendor/golang.org/x/net/LICENSE b/vendor/golang.org/x/net/LICENSE deleted file mode 100644 index 6a66aea..0000000 --- a/vendor/golang.org/x/net/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2009 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -   * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -   * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. -   * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/golang.org/x/net/PATENTS b/vendor/golang.org/x/net/PATENTS deleted file mode 100644 index 7330990..0000000 --- a/vendor/golang.org/x/net/PATENTS +++ /dev/null @@ -1,22 +0,0 @@ -Additional IP Rights Grant (Patents) - -"This implementation" means the copyrightable works distributed by -Google as part of the Go project. - -Google hereby grants to You a perpetual, worldwide, non-exclusive, -no-charge, royalty-free, irrevocable (except as stated in this section) -patent license to make, have made, use, offer to sell, sell, import, -transfer and otherwise run, modify and propagate the contents of this -implementation of Go, where such license applies only to those patent -claims, both currently owned or controlled by Google and acquired in -the future, licensable by Google that are necessarily infringed by this -implementation of Go.  This grant does not include claims that would be -infringed only as a consequence of further modification of this -implementation.  If you or your agent or exclusive licensee institute or -order or agree to the institution of patent litigation against any -entity (including a cross-claim or counterclaim in a lawsuit) alleging -that this implementation of Go or any code incorporated within this -implementation of Go constitutes direct or contributory patent -infringement, or inducement of patent infringement, then any patent -rights granted to you under this License for this implementation of Go -shall terminate as of the date such litigation is filed. diff --git a/vendor/golang.org/x/net/context/context.go b/vendor/golang.org/x/net/context/context.go deleted file mode 100644 index 56efb95..0000000 --- a/vendor/golang.org/x/net/context/context.go +++ /dev/null @@ -1,156 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package context defines the Context type, which carries deadlines, -// cancelation signals, and other request-scoped values across API boundaries -// and between processes. -// -// Incoming requests to a server should create a Context, and outgoing calls to -// servers should accept a Context.  The chain of function calls between must -// propagate the Context, optionally replacing it with a modified copy created -// using WithDeadline, WithTimeout, WithCancel, or WithValue. -// -// Programs that use Contexts should follow these rules to keep interfaces -// consistent across packages and enable static analysis tools to check context -// propagation: -// -// Do not store Contexts inside a struct type; instead, pass a Context -// explicitly to each function that needs it.  The Context should be the first -// parameter, typically named ctx: -// -// 	func DoSomething(ctx context.Context, arg Arg) error { -// 		// ... use ctx ... -// 	} -// -// Do not pass a nil Context, even if a function permits it.  Pass context.TODO -// if you are unsure about which Context to use. -// -// Use context Values only for request-scoped data that transits processes and -// APIs, not for passing optional parameters to functions. -// -// The same Context may be passed to functions running in different goroutines; -// Contexts are safe for simultaneous use by multiple goroutines. -// -// See http://blog.golang.org/context for example code for a server that uses -// Contexts. -package context - -import "time" - -// A Context carries a deadline, a cancelation signal, and other values across -// API boundaries. -// -// Context's methods may be called by multiple goroutines simultaneously. -type Context interface { -	// Deadline returns the time when work done on behalf of this context -	// should be canceled.  Deadline returns ok==false when no deadline is -	// set.  Successive calls to Deadline return the same results. -	Deadline() (deadline time.Time, ok bool) - -	// Done returns a channel that's closed when work done on behalf of this -	// context should be canceled.  Done may return nil if this context can -	// never be canceled.  Successive calls to Done return the same value. -	// -	// WithCancel arranges for Done to be closed when cancel is called; -	// WithDeadline arranges for Done to be closed when the deadline -	// expires; WithTimeout arranges for Done to be closed when the timeout -	// elapses. -	// -	// Done is provided for use in select statements: -	// -	//  // Stream generates values with DoSomething and sends them to out -	//  // until DoSomething returns an error or ctx.Done is closed. -	//  func Stream(ctx context.Context, out <-chan Value) error { -	//  	for { -	//  		v, err := DoSomething(ctx) -	//  		if err != nil { -	//  			return err -	//  		} -	//  		select { -	//  		case <-ctx.Done(): -	//  			return ctx.Err() -	//  		case out <- v: -	//  		} -	//  	} -	//  } -	// -	// See http://blog.golang.org/pipelines for more examples of how to use -	// a Done channel for cancelation. -	Done() <-chan struct{} - -	// Err returns a non-nil error value after Done is closed.  Err returns -	// Canceled if the context was canceled or DeadlineExceeded if the -	// context's deadline passed.  No other values for Err are defined. -	// After Done is closed, successive calls to Err return the same value. -	Err() error - -	// Value returns the value associated with this context for key, or nil -	// if no value is associated with key.  Successive calls to Value with -	// the same key returns the same result. -	// -	// Use context values only for request-scoped data that transits -	// processes and API boundaries, not for passing optional parameters to -	// functions. -	// -	// A key identifies a specific value in a Context.  Functions that wish -	// to store values in Context typically allocate a key in a global -	// variable then use that key as the argument to context.WithValue and -	// Context.Value.  A key can be any type that supports equality; -	// packages should define keys as an unexported type to avoid -	// collisions. -	// -	// Packages that define a Context key should provide type-safe accessors -	// for the values stores using that key: -	// -	// 	// Package user defines a User type that's stored in Contexts. -	// 	package user -	// -	// 	import "golang.org/x/net/context" -	// -	// 	// User is the type of value stored in the Contexts. -	// 	type User struct {...} -	// -	// 	// key is an unexported type for keys defined in this package. -	// 	// This prevents collisions with keys defined in other packages. -	// 	type key int -	// -	// 	// userKey is the key for user.User values in Contexts.  It is -	// 	// unexported; clients use user.NewContext and user.FromContext -	// 	// instead of using this key directly. -	// 	var userKey key = 0 -	// -	// 	// NewContext returns a new Context that carries value u. -	// 	func NewContext(ctx context.Context, u *User) context.Context { -	// 		return context.WithValue(ctx, userKey, u) -	// 	} -	// -	// 	// FromContext returns the User value stored in ctx, if any. -	// 	func FromContext(ctx context.Context) (*User, bool) { -	// 		u, ok := ctx.Value(userKey).(*User) -	// 		return u, ok -	// 	} -	Value(key interface{}) interface{} -} - -// Background returns a non-nil, empty Context. It is never canceled, has no -// values, and has no deadline.  It is typically used by the main function, -// initialization, and tests, and as the top-level Context for incoming -// requests. -func Background() Context { -	return background -} - -// TODO returns a non-nil, empty Context.  Code should use context.TODO when -// it's unclear which Context to use or it is not yet available (because the -// surrounding function has not yet been extended to accept a Context -// parameter).  TODO is recognized by static analysis tools that determine -// whether Contexts are propagated correctly in a program. -func TODO() Context { -	return todo -} - -// A CancelFunc tells an operation to abandon its work. -// A CancelFunc does not wait for the work to stop. -// After the first call, subsequent calls to a CancelFunc do nothing. -type CancelFunc func() diff --git a/vendor/golang.org/x/net/context/ctxhttp/cancelreq.go b/vendor/golang.org/x/net/context/ctxhttp/cancelreq.go deleted file mode 100644 index e3170e3..0000000 --- a/vendor/golang.org/x/net/context/ctxhttp/cancelreq.go +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2015 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build go1.5 - -package ctxhttp - -import "net/http" - -func canceler(client *http.Client, req *http.Request) func() { -	// TODO(djd): Respect any existing value of req.Cancel. -	ch := make(chan struct{}) -	req.Cancel = ch - -	return func() { -		close(ch) -	} -} diff --git a/vendor/golang.org/x/net/context/ctxhttp/cancelreq_go14.go b/vendor/golang.org/x/net/context/ctxhttp/cancelreq_go14.go deleted file mode 100644 index 56bcbad..0000000 --- a/vendor/golang.org/x/net/context/ctxhttp/cancelreq_go14.go +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2015 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !go1.5 - -package ctxhttp - -import "net/http" - -type requestCanceler interface { -	CancelRequest(*http.Request) -} - -func canceler(client *http.Client, req *http.Request) func() { -	rc, ok := client.Transport.(requestCanceler) -	if !ok { -		return func() {} -	} -	return func() { -		rc.CancelRequest(req) -	} -} diff --git a/vendor/golang.org/x/net/context/ctxhttp/ctxhttp.go b/vendor/golang.org/x/net/context/ctxhttp/ctxhttp.go deleted file mode 100644 index e35860a..0000000 --- a/vendor/golang.org/x/net/context/ctxhttp/ctxhttp.go +++ /dev/null @@ -1,145 +0,0 @@ -// Copyright 2015 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package ctxhttp provides helper functions for performing context-aware HTTP requests. -package ctxhttp - -import ( -	"io" -	"net/http" -	"net/url" -	"strings" - -	"golang.org/x/net/context" -) - -func nop() {} - -var ( -	testHookContextDoneBeforeHeaders = nop -	testHookDoReturned               = nop -	testHookDidBodyClose             = nop -) - -// Do sends an HTTP request with the provided http.Client and returns an HTTP response. -// If the client is nil, http.DefaultClient is used. -// If the context is canceled or times out, ctx.Err() will be returned. -func Do(ctx context.Context, client *http.Client, req *http.Request) (*http.Response, error) { -	if client == nil { -		client = http.DefaultClient -	} - -	// Request cancelation changed in Go 1.5, see cancelreq.go and cancelreq_go14.go. -	cancel := canceler(client, req) - -	type responseAndError struct { -		resp *http.Response -		err  error -	} -	result := make(chan responseAndError, 1) - -	// Make local copies of test hooks closed over by goroutines below. -	// Prevents data races in tests. -	testHookDoReturned := testHookDoReturned -	testHookDidBodyClose := testHookDidBodyClose - -	go func() { -		resp, err := client.Do(req) -		testHookDoReturned() -		result <- responseAndError{resp, err} -	}() - -	var resp *http.Response - -	select { -	case <-ctx.Done(): -		testHookContextDoneBeforeHeaders() -		cancel() -		// Clean up after the goroutine calling client.Do: -		go func() { -			if r := <-result; r.resp != nil { -				testHookDidBodyClose() -				r.resp.Body.Close() -			} -		}() -		return nil, ctx.Err() -	case r := <-result: -		var err error -		resp, err = r.resp, r.err -		if err != nil { -			return resp, err -		} -	} - -	c := make(chan struct{}) -	go func() { -		select { -		case <-ctx.Done(): -			cancel() -		case <-c: -			// The response's Body is closed. -		} -	}() -	resp.Body = ¬ifyingReader{resp.Body, c} - -	return resp, nil -} - -// Get issues a GET request via the Do function. -func Get(ctx context.Context, client *http.Client, url string) (*http.Response, error) { -	req, err := http.NewRequest("GET", url, nil) -	if err != nil { -		return nil, err -	} -	return Do(ctx, client, req) -} - -// Head issues a HEAD request via the Do function. -func Head(ctx context.Context, client *http.Client, url string) (*http.Response, error) { -	req, err := http.NewRequest("HEAD", url, nil) -	if err != nil { -		return nil, err -	} -	return Do(ctx, client, req) -} - -// Post issues a POST request via the Do function. -func Post(ctx context.Context, client *http.Client, url string, bodyType string, body io.Reader) (*http.Response, error) { -	req, err := http.NewRequest("POST", url, body) -	if err != nil { -		return nil, err -	} -	req.Header.Set("Content-Type", bodyType) -	return Do(ctx, client, req) -} - -// PostForm issues a POST request via the Do function. -func PostForm(ctx context.Context, client *http.Client, url string, data url.Values) (*http.Response, error) { -	return Post(ctx, client, url, "application/x-www-form-urlencoded", strings.NewReader(data.Encode())) -} - -// notifyingReader is an io.ReadCloser that closes the notify channel after -// Close is called or a Read fails on the underlying ReadCloser. -type notifyingReader struct { -	io.ReadCloser -	notify chan<- struct{} -} - -func (r *notifyingReader) Read(p []byte) (int, error) { -	n, err := r.ReadCloser.Read(p) -	if err != nil && r.notify != nil { -		close(r.notify) -		r.notify = nil -	} -	return n, err -} - -func (r *notifyingReader) Close() error { -	err := r.ReadCloser.Close() -	if r.notify != nil { -		close(r.notify) -		r.notify = nil -	} -	return err -} diff --git a/vendor/golang.org/x/net/context/go17.go b/vendor/golang.org/x/net/context/go17.go deleted file mode 100644 index f8cda19..0000000 --- a/vendor/golang.org/x/net/context/go17.go +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright 2016 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build go1.7 - -package context - -import ( -	"context" // standard library's context, as of Go 1.7 -	"time" -) - -var ( -	todo       = context.TODO() -	background = context.Background() -) - -// Canceled is the error returned by Context.Err when the context is canceled. -var Canceled = context.Canceled - -// DeadlineExceeded is the error returned by Context.Err when the context's -// deadline passes. -var DeadlineExceeded = context.DeadlineExceeded - -// WithCancel returns a copy of parent with a new Done channel. The returned -// context's Done channel is closed when the returned cancel function is called -// or when the parent context's Done channel is closed, whichever happens first. -// -// Canceling this context releases resources associated with it, so code should -// call cancel as soon as the operations running in this Context complete. -func WithCancel(parent Context) (ctx Context, cancel CancelFunc) { -	ctx, f := context.WithCancel(parent) -	return ctx, CancelFunc(f) -} - -// WithDeadline returns a copy of the parent context with the deadline adjusted -// to be no later than d.  If the parent's deadline is already earlier than d, -// WithDeadline(parent, d) is semantically equivalent to parent.  The returned -// context's Done channel is closed when the deadline expires, when the returned -// cancel function is called, or when the parent context's Done channel is -// closed, whichever happens first. -// -// Canceling this context releases resources associated with it, so code should -// call cancel as soon as the operations running in this Context complete. -func WithDeadline(parent Context, deadline time.Time) (Context, CancelFunc) { -	ctx, f := context.WithDeadline(parent, deadline) -	return ctx, CancelFunc(f) -} - -// WithTimeout returns WithDeadline(parent, time.Now().Add(timeout)). -// -// Canceling this context releases resources associated with it, so code should -// call cancel as soon as the operations running in this Context complete: -// -// 	func slowOperationWithTimeout(ctx context.Context) (Result, error) { -// 		ctx, cancel := context.WithTimeout(ctx, 100*time.Millisecond) -// 		defer cancel()  // releases resources if slowOperation completes before timeout elapses -// 		return slowOperation(ctx) -// 	} -func WithTimeout(parent Context, timeout time.Duration) (Context, CancelFunc) { -	return WithDeadline(parent, time.Now().Add(timeout)) -} - -// WithValue returns a copy of parent in which the value associated with key is -// val. -// -// Use context Values only for request-scoped data that transits processes and -// APIs, not for passing optional parameters to functions. -func WithValue(parent Context, key interface{}, val interface{}) Context { -	return context.WithValue(parent, key, val) -} diff --git a/vendor/golang.org/x/net/context/pre_go17.go b/vendor/golang.org/x/net/context/pre_go17.go deleted file mode 100644 index 5a30aca..0000000 --- a/vendor/golang.org/x/net/context/pre_go17.go +++ /dev/null @@ -1,300 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !go1.7 - -package context - -import ( -	"errors" -	"fmt" -	"sync" -	"time" -) - -// An emptyCtx is never canceled, has no values, and has no deadline.  It is not -// struct{}, since vars of this type must have distinct addresses. -type emptyCtx int - -func (*emptyCtx) Deadline() (deadline time.Time, ok bool) { -	return -} - -func (*emptyCtx) Done() <-chan struct{} { -	return nil -} - -func (*emptyCtx) Err() error { -	return nil -} - -func (*emptyCtx) Value(key interface{}) interface{} { -	return nil -} - -func (e *emptyCtx) String() string { -	switch e { -	case background: -		return "context.Background" -	case todo: -		return "context.TODO" -	} -	return "unknown empty Context" -} - -var ( -	background = new(emptyCtx) -	todo       = new(emptyCtx) -) - -// Canceled is the error returned by Context.Err when the context is canceled. -var Canceled = errors.New("context canceled") - -// DeadlineExceeded is the error returned by Context.Err when the context's -// deadline passes. -var DeadlineExceeded = errors.New("context deadline exceeded") - -// WithCancel returns a copy of parent with a new Done channel. The returned -// context's Done channel is closed when the returned cancel function is called -// or when the parent context's Done channel is closed, whichever happens first. -// -// Canceling this context releases resources associated with it, so code should -// call cancel as soon as the operations running in this Context complete. -func WithCancel(parent Context) (ctx Context, cancel CancelFunc) { -	c := newCancelCtx(parent) -	propagateCancel(parent, c) -	return c, func() { c.cancel(true, Canceled) } -} - -// newCancelCtx returns an initialized cancelCtx. -func newCancelCtx(parent Context) *cancelCtx { -	return &cancelCtx{ -		Context: parent, -		done:    make(chan struct{}), -	} -} - -// propagateCancel arranges for child to be canceled when parent is. -func propagateCancel(parent Context, child canceler) { -	if parent.Done() == nil { -		return // parent is never canceled -	} -	if p, ok := parentCancelCtx(parent); ok { -		p.mu.Lock() -		if p.err != nil { -			// parent has already been canceled -			child.cancel(false, p.err) -		} else { -			if p.children == nil { -				p.children = make(map[canceler]bool) -			} -			p.children[child] = true -		} -		p.mu.Unlock() -	} else { -		go func() { -			select { -			case <-parent.Done(): -				child.cancel(false, parent.Err()) -			case <-child.Done(): -			} -		}() -	} -} - -// parentCancelCtx follows a chain of parent references until it finds a -// *cancelCtx.  This function understands how each of the concrete types in this -// package represents its parent. -func parentCancelCtx(parent Context) (*cancelCtx, bool) { -	for { -		switch c := parent.(type) { -		case *cancelCtx: -			return c, true -		case *timerCtx: -			return c.cancelCtx, true -		case *valueCtx: -			parent = c.Context -		default: -			return nil, false -		} -	} -} - -// removeChild removes a context from its parent. -func removeChild(parent Context, child canceler) { -	p, ok := parentCancelCtx(parent) -	if !ok { -		return -	} -	p.mu.Lock() -	if p.children != nil { -		delete(p.children, child) -	} -	p.mu.Unlock() -} - -// A canceler is a context type that can be canceled directly.  The -// implementations are *cancelCtx and *timerCtx. -type canceler interface { -	cancel(removeFromParent bool, err error) -	Done() <-chan struct{} -} - -// A cancelCtx can be canceled.  When canceled, it also cancels any children -// that implement canceler. -type cancelCtx struct { -	Context - -	done chan struct{} // closed by the first cancel call. - -	mu       sync.Mutex -	children map[canceler]bool // set to nil by the first cancel call -	err      error             // set to non-nil by the first cancel call -} - -func (c *cancelCtx) Done() <-chan struct{} { -	return c.done -} - -func (c *cancelCtx) Err() error { -	c.mu.Lock() -	defer c.mu.Unlock() -	return c.err -} - -func (c *cancelCtx) String() string { -	return fmt.Sprintf("%v.WithCancel", c.Context) -} - -// cancel closes c.done, cancels each of c's children, and, if -// removeFromParent is true, removes c from its parent's children. -func (c *cancelCtx) cancel(removeFromParent bool, err error) { -	if err == nil { -		panic("context: internal error: missing cancel error") -	} -	c.mu.Lock() -	if c.err != nil { -		c.mu.Unlock() -		return // already canceled -	} -	c.err = err -	close(c.done) -	for child := range c.children { -		// NOTE: acquiring the child's lock while holding parent's lock. -		child.cancel(false, err) -	} -	c.children = nil -	c.mu.Unlock() - -	if removeFromParent { -		removeChild(c.Context, c) -	} -} - -// WithDeadline returns a copy of the parent context with the deadline adjusted -// to be no later than d.  If the parent's deadline is already earlier than d, -// WithDeadline(parent, d) is semantically equivalent to parent.  The returned -// context's Done channel is closed when the deadline expires, when the returned -// cancel function is called, or when the parent context's Done channel is -// closed, whichever happens first. -// -// Canceling this context releases resources associated with it, so code should -// call cancel as soon as the operations running in this Context complete. -func WithDeadline(parent Context, deadline time.Time) (Context, CancelFunc) { -	if cur, ok := parent.Deadline(); ok && cur.Before(deadline) { -		// The current deadline is already sooner than the new one. -		return WithCancel(parent) -	} -	c := &timerCtx{ -		cancelCtx: newCancelCtx(parent), -		deadline:  deadline, -	} -	propagateCancel(parent, c) -	d := deadline.Sub(time.Now()) -	if d <= 0 { -		c.cancel(true, DeadlineExceeded) // deadline has already passed -		return c, func() { c.cancel(true, Canceled) } -	} -	c.mu.Lock() -	defer c.mu.Unlock() -	if c.err == nil { -		c.timer = time.AfterFunc(d, func() { -			c.cancel(true, DeadlineExceeded) -		}) -	} -	return c, func() { c.cancel(true, Canceled) } -} - -// A timerCtx carries a timer and a deadline.  It embeds a cancelCtx to -// implement Done and Err.  It implements cancel by stopping its timer then -// delegating to cancelCtx.cancel. -type timerCtx struct { -	*cancelCtx -	timer *time.Timer // Under cancelCtx.mu. - -	deadline time.Time -} - -func (c *timerCtx) Deadline() (deadline time.Time, ok bool) { -	return c.deadline, true -} - -func (c *timerCtx) String() string { -	return fmt.Sprintf("%v.WithDeadline(%s [%s])", c.cancelCtx.Context, c.deadline, c.deadline.Sub(time.Now())) -} - -func (c *timerCtx) cancel(removeFromParent bool, err error) { -	c.cancelCtx.cancel(false, err) -	if removeFromParent { -		// Remove this timerCtx from its parent cancelCtx's children. -		removeChild(c.cancelCtx.Context, c) -	} -	c.mu.Lock() -	if c.timer != nil { -		c.timer.Stop() -		c.timer = nil -	} -	c.mu.Unlock() -} - -// WithTimeout returns WithDeadline(parent, time.Now().Add(timeout)). -// -// Canceling this context releases resources associated with it, so code should -// call cancel as soon as the operations running in this Context complete: -// -// 	func slowOperationWithTimeout(ctx context.Context) (Result, error) { -// 		ctx, cancel := context.WithTimeout(ctx, 100*time.Millisecond) -// 		defer cancel()  // releases resources if slowOperation completes before timeout elapses -// 		return slowOperation(ctx) -// 	} -func WithTimeout(parent Context, timeout time.Duration) (Context, CancelFunc) { -	return WithDeadline(parent, time.Now().Add(timeout)) -} - -// WithValue returns a copy of parent in which the value associated with key is -// val. -// -// Use context Values only for request-scoped data that transits processes and -// APIs, not for passing optional parameters to functions. -func WithValue(parent Context, key interface{}, val interface{}) Context { -	return &valueCtx{parent, key, val} -} - -// A valueCtx carries a key-value pair.  It implements Value for that key and -// delegates all other calls to the embedded Context. -type valueCtx struct { -	Context -	key, val interface{} -} - -func (c *valueCtx) String() string { -	return fmt.Sprintf("%v.WithValue(%#v, %#v)", c.Context, c.key, c.val) -} - -func (c *valueCtx) Value(key interface{}) interface{} { -	if c.key == key { -		return c.val -	} -	return c.Context.Value(key) -} diff --git a/vendor/golang.org/x/oauth2/.travis.yml b/vendor/golang.org/x/oauth2/.travis.yml deleted file mode 100644 index a035125..0000000 --- a/vendor/golang.org/x/oauth2/.travis.yml +++ /dev/null @@ -1,14 +0,0 @@ -language: go - -go: -  - 1.3 -  - 1.4 - -install: -  - export GOPATH="$HOME/gopath" -  - mkdir -p "$GOPATH/src/golang.org/x" -  - mv "$TRAVIS_BUILD_DIR" "$GOPATH/src/golang.org/x/oauth2" -  - go get -v -t -d golang.org/x/oauth2/... - -script: -  - go test -v golang.org/x/oauth2/... diff --git a/vendor/golang.org/x/oauth2/AUTHORS b/vendor/golang.org/x/oauth2/AUTHORS deleted file mode 100644 index 15167cd..0000000 --- a/vendor/golang.org/x/oauth2/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code refers to The Go Authors for copyright purposes. -# The master list of authors is in the main Go distribution, -# visible at http://tip.golang.org/AUTHORS. diff --git a/vendor/golang.org/x/oauth2/CONTRIBUTING.md b/vendor/golang.org/x/oauth2/CONTRIBUTING.md deleted file mode 100644 index 46aa2b1..0000000 --- a/vendor/golang.org/x/oauth2/CONTRIBUTING.md +++ /dev/null @@ -1,31 +0,0 @@ -# Contributing to Go - -Go is an open source project. - -It is the work of hundreds of contributors. We appreciate your help! - - -## Filing issues - -When [filing an issue](https://github.com/golang/oauth2/issues), make sure to answer these five questions: - -1. What version of Go are you using (`go version`)? -2. What operating system and processor architecture are you using? -3. What did you do? -4. What did you expect to see? -5. What did you see instead? - -General questions should go to the [golang-nuts mailing list](https://groups.google.com/group/golang-nuts) instead of the issue tracker. -The gophers there will answer or ask you to file an issue if you've tripped over a bug. - -## Contributing code - -Please read the [Contribution Guidelines](https://golang.org/doc/contribute.html) -before sending patches. - -**We do not accept GitHub pull requests** -(we use [Gerrit](https://code.google.com/p/gerrit/) instead for code review). - -Unless otherwise noted, the Go source files are distributed under -the BSD-style license found in the LICENSE file. - diff --git a/vendor/golang.org/x/oauth2/CONTRIBUTORS b/vendor/golang.org/x/oauth2/CONTRIBUTORS deleted file mode 100644 index 1c4577e..0000000 --- a/vendor/golang.org/x/oauth2/CONTRIBUTORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code was written by the Go contributors. -# The master list of contributors is in the main Go distribution, -# visible at http://tip.golang.org/CONTRIBUTORS. diff --git a/vendor/golang.org/x/oauth2/LICENSE b/vendor/golang.org/x/oauth2/LICENSE deleted file mode 100644 index d02f24f..0000000 --- a/vendor/golang.org/x/oauth2/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2009 The oauth2 Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -   * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -   * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. -   * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/golang.org/x/oauth2/README.md b/vendor/golang.org/x/oauth2/README.md deleted file mode 100644 index 0d51417..0000000 --- a/vendor/golang.org/x/oauth2/README.md +++ /dev/null @@ -1,64 +0,0 @@ -# OAuth2 for Go - -[](https://travis-ci.org/golang/oauth2) - -oauth2 package contains a client implementation for OAuth 2.0 spec. - -## Installation - -~~~~ -go get golang.org/x/oauth2 -~~~~ - -See godoc for further documentation and examples. - -* [godoc.org/golang.org/x/oauth2](http://godoc.org/golang.org/x/oauth2) -* [godoc.org/golang.org/x/oauth2/google](http://godoc.org/golang.org/x/oauth2/google) - - -## App Engine - -In change 96e89be (March 2015) we removed the `oauth2.Context2` type in favor -of the [`context.Context`](https://golang.org/x/net/context#Context) type from -the `golang.org/x/net/context` package - -This means its no longer possible to use the "Classic App Engine" -`appengine.Context` type with the `oauth2` package. (You're using -Classic App Engine if you import the package `"appengine"`.) - -To work around this, you may use the new `"google.golang.org/appengine"` -package. This package has almost the same API as the `"appengine"` package, -but it can be fetched with `go get` and used on "Managed VMs" and well as -Classic App Engine. - -See the [new `appengine` package's readme](https://github.com/golang/appengine#updating-a-go-app-engine-app) -for information on updating your app. - -If you don't want to update your entire app to use the new App Engine packages, -you may use both sets of packages in parallel, using only the new packages -with the `oauth2` package. - -	import ( -		"golang.org/x/net/context" -		"golang.org/x/oauth2" -		"golang.org/x/oauth2/google" -		newappengine "google.golang.org/appengine" -		newurlfetch "google.golang.org/appengine/urlfetch" - -		"appengine" -	) - -	func handler(w http.ResponseWriter, r *http.Request) { -		var c appengine.Context = appengine.NewContext(r) -		c.Infof("Logging a message with the old package") - -		var ctx context.Context = newappengine.NewContext(r) -		client := &http.Client{ -			Transport: &oauth2.Transport{ -				Source: google.AppEngineTokenSource(ctx, "scope"), -				Base:   &newurlfetch.Transport{Context: ctx}, -			}, -		} -		client.Get("...") -	} - diff --git a/vendor/golang.org/x/oauth2/client_appengine.go b/vendor/golang.org/x/oauth2/client_appengine.go deleted file mode 100644 index 8962c49..0000000 --- a/vendor/golang.org/x/oauth2/client_appengine.go +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build appengine - -// App Engine hooks. - -package oauth2 - -import ( -	"net/http" - -	"golang.org/x/net/context" -	"golang.org/x/oauth2/internal" -	"google.golang.org/appengine/urlfetch" -) - -func init() { -	internal.RegisterContextClientFunc(contextClientAppEngine) -} - -func contextClientAppEngine(ctx context.Context) (*http.Client, error) { -	return urlfetch.Client(ctx), nil -} diff --git a/vendor/golang.org/x/oauth2/internal/oauth2.go b/vendor/golang.org/x/oauth2/internal/oauth2.go deleted file mode 100644 index fbe1028..0000000 --- a/vendor/golang.org/x/oauth2/internal/oauth2.go +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package internal contains support packages for oauth2 package. -package internal - -import ( -	"bufio" -	"crypto/rsa" -	"crypto/x509" -	"encoding/pem" -	"errors" -	"fmt" -	"io" -	"strings" -) - -// ParseKey converts the binary contents of a private key file -// to an *rsa.PrivateKey. It detects whether the private key is in a -// PEM container or not. If so, it extracts the the private key -// from PEM container before conversion. It only supports PEM -// containers with no passphrase. -func ParseKey(key []byte) (*rsa.PrivateKey, error) { -	block, _ := pem.Decode(key) -	if block != nil { -		key = block.Bytes -	} -	parsedKey, err := x509.ParsePKCS8PrivateKey(key) -	if err != nil { -		parsedKey, err = x509.ParsePKCS1PrivateKey(key) -		if err != nil { -			return nil, fmt.Errorf("private key should be a PEM or plain PKSC1 or PKCS8; parse error: %v", err) -		} -	} -	parsed, ok := parsedKey.(*rsa.PrivateKey) -	if !ok { -		return nil, errors.New("private key is invalid") -	} -	return parsed, nil -} - -func ParseINI(ini io.Reader) (map[string]map[string]string, error) { -	result := map[string]map[string]string{ -		"": map[string]string{}, // root section -	} -	scanner := bufio.NewScanner(ini) -	currentSection := "" -	for scanner.Scan() { -		line := strings.TrimSpace(scanner.Text()) -		if strings.HasPrefix(line, ";") { -			// comment. -			continue -		} -		if strings.HasPrefix(line, "[") && strings.HasSuffix(line, "]") { -			currentSection = strings.TrimSpace(line[1 : len(line)-1]) -			result[currentSection] = map[string]string{} -			continue -		} -		parts := strings.SplitN(line, "=", 2) -		if len(parts) == 2 && parts[0] != "" { -			result[currentSection][strings.TrimSpace(parts[0])] = strings.TrimSpace(parts[1]) -		} -	} -	if err := scanner.Err(); err != nil { -		return nil, fmt.Errorf("error scanning ini: %v", err) -	} -	return result, nil -} - -func CondVal(v string) []string { -	if v == "" { -		return nil -	} -	return []string{v} -} diff --git a/vendor/golang.org/x/oauth2/internal/token.go b/vendor/golang.org/x/oauth2/internal/token.go deleted file mode 100644 index a6ed3cc..0000000 --- a/vendor/golang.org/x/oauth2/internal/token.go +++ /dev/null @@ -1,225 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package internal contains support packages for oauth2 package. -package internal - -import ( -	"encoding/json" -	"fmt" -	"io" -	"io/ioutil" -	"mime" -	"net/http" -	"net/url" -	"strconv" -	"strings" -	"time" - -	"golang.org/x/net/context" -) - -// Token represents the crendentials used to authorize -// the requests to access protected resources on the OAuth 2.0 -// provider's backend. -// -// This type is a mirror of oauth2.Token and exists to break -// an otherwise-circular dependency. Other internal packages -// should convert this Token into an oauth2.Token before use. -type Token struct { -	// AccessToken is the token that authorizes and authenticates -	// the requests. -	AccessToken string - -	// TokenType is the type of token. -	// The Type method returns either this or "Bearer", the default. -	TokenType string - -	// RefreshToken is a token that's used by the application -	// (as opposed to the user) to refresh the access token -	// if it expires. -	RefreshToken string - -	// Expiry is the optional expiration time of the access token. -	// -	// If zero, TokenSource implementations will reuse the same -	// token forever and RefreshToken or equivalent -	// mechanisms for that TokenSource will not be used. -	Expiry time.Time - -	// Raw optionally contains extra metadata from the server -	// when updating a token. -	Raw interface{} -} - -// tokenJSON is the struct representing the HTTP response from OAuth2 -// providers returning a token in JSON form. -type tokenJSON struct { -	AccessToken  string         `json:"access_token"` -	TokenType    string         `json:"token_type"` -	RefreshToken string         `json:"refresh_token"` -	ExpiresIn    expirationTime `json:"expires_in"` // at least PayPal returns string, while most return number -	Expires      expirationTime `json:"expires"`    // broken Facebook spelling of expires_in -} - -func (e *tokenJSON) expiry() (t time.Time) { -	if v := e.ExpiresIn; v != 0 { -		return time.Now().Add(time.Duration(v) * time.Second) -	} -	if v := e.Expires; v != 0 { -		return time.Now().Add(time.Duration(v) * time.Second) -	} -	return -} - -type expirationTime int32 - -func (e *expirationTime) UnmarshalJSON(b []byte) error { -	var n json.Number -	err := json.Unmarshal(b, &n) -	if err != nil { -		return err -	} -	i, err := n.Int64() -	if err != nil { -		return err -	} -	*e = expirationTime(i) -	return nil -} - -var brokenAuthHeaderProviders = []string{ -	"https://accounts.google.com/", -	"https://api.dropbox.com/", -	"https://api.dropboxapi.com/", -	"https://api.instagram.com/", -	"https://api.netatmo.net/", -	"https://api.odnoklassniki.ru/", -	"https://api.pushbullet.com/", -	"https://api.soundcloud.com/", -	"https://api.twitch.tv/", -	"https://app.box.com/", -	"https://connect.stripe.com/", -	"https://login.microsoftonline.com/", -	"https://login.salesforce.com/", -	"https://oauth.sandbox.trainingpeaks.com/", -	"https://oauth.trainingpeaks.com/", -	"https://oauth.vk.com/", -	"https://openapi.baidu.com/", -	"https://slack.com/", -	"https://test-sandbox.auth.corp.google.com", -	"https://test.salesforce.com/", -	"https://user.gini.net/", -	"https://www.douban.com/", -	"https://www.googleapis.com/", -	"https://www.linkedin.com/", -	"https://www.strava.com/oauth/", -	"https://www.wunderlist.com/oauth/", -	"https://api.patreon.com/", -} - -func RegisterBrokenAuthHeaderProvider(tokenURL string) { -	brokenAuthHeaderProviders = append(brokenAuthHeaderProviders, tokenURL) -} - -// providerAuthHeaderWorks reports whether the OAuth2 server identified by the tokenURL -// implements the OAuth2 spec correctly -// See https://code.google.com/p/goauth2/issues/detail?id=31 for background. -// In summary: -// - Reddit only accepts client secret in the Authorization header -// - Dropbox accepts either it in URL param or Auth header, but not both. -// - Google only accepts URL param (not spec compliant?), not Auth header -// - Stripe only accepts client secret in Auth header with Bearer method, not Basic -func providerAuthHeaderWorks(tokenURL string) bool { -	for _, s := range brokenAuthHeaderProviders { -		if strings.HasPrefix(tokenURL, s) { -			// Some sites fail to implement the OAuth2 spec fully. -			return false -		} -	} - -	// Assume the provider implements the spec properly -	// otherwise. We can add more exceptions as they're -	// discovered. We will _not_ be adding configurable hooks -	// to this package to let users select server bugs. -	return true -} - -func RetrieveToken(ctx context.Context, ClientID, ClientSecret, TokenURL string, v url.Values) (*Token, error) { -	hc, err := ContextClient(ctx) -	if err != nil { -		return nil, err -	} -	v.Set("client_id", ClientID) -	bustedAuth := !providerAuthHeaderWorks(TokenURL) -	if bustedAuth && ClientSecret != "" { -		v.Set("client_secret", ClientSecret) -	} -	req, err := http.NewRequest("POST", TokenURL, strings.NewReader(v.Encode())) -	if err != nil { -		return nil, err -	} -	req.Header.Set("Content-Type", "application/x-www-form-urlencoded") -	if !bustedAuth { -		req.SetBasicAuth(ClientID, ClientSecret) -	} -	r, err := hc.Do(req) -	if err != nil { -		return nil, err -	} -	defer r.Body.Close() -	body, err := ioutil.ReadAll(io.LimitReader(r.Body, 1<<20)) -	if err != nil { -		return nil, fmt.Errorf("oauth2: cannot fetch token: %v", err) -	} -	if code := r.StatusCode; code < 200 || code > 299 { -		return nil, fmt.Errorf("oauth2: cannot fetch token: %v\nResponse: %s", r.Status, body) -	} - -	var token *Token -	content, _, _ := mime.ParseMediaType(r.Header.Get("Content-Type")) -	switch content { -	case "application/x-www-form-urlencoded", "text/plain": -		vals, err := url.ParseQuery(string(body)) -		if err != nil { -			return nil, err -		} -		token = &Token{ -			AccessToken:  vals.Get("access_token"), -			TokenType:    vals.Get("token_type"), -			RefreshToken: vals.Get("refresh_token"), -			Raw:          vals, -		} -		e := vals.Get("expires_in") -		if e == "" { -			// TODO(jbd): Facebook's OAuth2 implementation is broken and -			// returns expires_in field in expires. Remove the fallback to expires, -			// when Facebook fixes their implementation. -			e = vals.Get("expires") -		} -		expires, _ := strconv.Atoi(e) -		if expires != 0 { -			token.Expiry = time.Now().Add(time.Duration(expires) * time.Second) -		} -	default: -		var tj tokenJSON -		if err = json.Unmarshal(body, &tj); err != nil { -			return nil, err -		} -		token = &Token{ -			AccessToken:  tj.AccessToken, -			TokenType:    tj.TokenType, -			RefreshToken: tj.RefreshToken, -			Expiry:       tj.expiry(), -			Raw:          make(map[string]interface{}), -		} -		json.Unmarshal(body, &token.Raw) // no error checks for optional fields -	} -	// Don't overwrite `RefreshToken` with an empty value -	// if this was a token refreshing request. -	if token.RefreshToken == "" { -		token.RefreshToken = v.Get("refresh_token") -	} -	return token, nil -} diff --git a/vendor/golang.org/x/oauth2/internal/transport.go b/vendor/golang.org/x/oauth2/internal/transport.go deleted file mode 100644 index f1f173e..0000000 --- a/vendor/golang.org/x/oauth2/internal/transport.go +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package internal contains support packages for oauth2 package. -package internal - -import ( -	"net/http" - -	"golang.org/x/net/context" -) - -// HTTPClient is the context key to use with golang.org/x/net/context's -// WithValue function to associate an *http.Client value with a context. -var HTTPClient ContextKey - -// ContextKey is just an empty struct. It exists so HTTPClient can be -// an immutable public variable with a unique type. It's immutable -// because nobody else can create a ContextKey, being unexported. -type ContextKey struct{} - -// ContextClientFunc is a func which tries to return an *http.Client -// given a Context value. If it returns an error, the search stops -// with that error.  If it returns (nil, nil), the search continues -// down the list of registered funcs. -type ContextClientFunc func(context.Context) (*http.Client, error) - -var contextClientFuncs []ContextClientFunc - -func RegisterContextClientFunc(fn ContextClientFunc) { -	contextClientFuncs = append(contextClientFuncs, fn) -} - -func ContextClient(ctx context.Context) (*http.Client, error) { -	if ctx != nil { -		if hc, ok := ctx.Value(HTTPClient).(*http.Client); ok { -			return hc, nil -		} -	} -	for _, fn := range contextClientFuncs { -		c, err := fn(ctx) -		if err != nil { -			return nil, err -		} -		if c != nil { -			return c, nil -		} -	} -	return http.DefaultClient, nil -} - -func ContextTransport(ctx context.Context) http.RoundTripper { -	hc, err := ContextClient(ctx) -	// This is a rare error case (somebody using nil on App Engine). -	if err != nil { -		return ErrorTransport{err} -	} -	return hc.Transport -} - -// ErrorTransport returns the specified error on RoundTrip. -// This RoundTripper should be used in rare error cases where -// error handling can be postponed to response handling time. -type ErrorTransport struct{ Err error } - -func (t ErrorTransport) RoundTrip(*http.Request) (*http.Response, error) { -	return nil, t.Err -} diff --git a/vendor/golang.org/x/oauth2/oauth2.go b/vendor/golang.org/x/oauth2/oauth2.go deleted file mode 100644 index 9b7b977..0000000 --- a/vendor/golang.org/x/oauth2/oauth2.go +++ /dev/null @@ -1,337 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package oauth2 provides support for making -// OAuth2 authorized and authenticated HTTP requests. -// It can additionally grant authorization with Bearer JWT. -package oauth2 - -import ( -	"bytes" -	"errors" -	"net/http" -	"net/url" -	"strings" -	"sync" - -	"golang.org/x/net/context" -	"golang.org/x/oauth2/internal" -) - -// NoContext is the default context you should supply if not using -// your own context.Context (see https://golang.org/x/net/context). -var NoContext = context.TODO() - -// RegisterBrokenAuthHeaderProvider registers an OAuth2 server -// identified by the tokenURL prefix as an OAuth2 implementation -// which doesn't support the HTTP Basic authentication -// scheme to authenticate with the authorization server. -// Once a server is registered, credentials (client_id and client_secret) -// will be passed as query parameters rather than being present -// in the Authorization header. -// See https://code.google.com/p/goauth2/issues/detail?id=31 for background. -func RegisterBrokenAuthHeaderProvider(tokenURL string) { -	internal.RegisterBrokenAuthHeaderProvider(tokenURL) -} - -// Config describes a typical 3-legged OAuth2 flow, with both the -// client application information and the server's endpoint URLs. -type Config struct { -	// ClientID is the application's ID. -	ClientID string - -	// ClientSecret is the application's secret. -	ClientSecret string - -	// Endpoint contains the resource server's token endpoint -	// URLs. These are constants specific to each server and are -	// often available via site-specific packages, such as -	// google.Endpoint or github.Endpoint. -	Endpoint Endpoint - -	// RedirectURL is the URL to redirect users going through -	// the OAuth flow, after the resource owner's URLs. -	RedirectURL string - -	// Scope specifies optional requested permissions. -	Scopes []string -} - -// A TokenSource is anything that can return a token. -type TokenSource interface { -	// Token returns a token or an error. -	// Token must be safe for concurrent use by multiple goroutines. -	// The returned Token must not be modified. -	Token() (*Token, error) -} - -// Endpoint contains the OAuth 2.0 provider's authorization and token -// endpoint URLs. -type Endpoint struct { -	AuthURL  string -	TokenURL string -} - -var ( -	// AccessTypeOnline and AccessTypeOffline are options passed -	// to the Options.AuthCodeURL method. They modify the -	// "access_type" field that gets sent in the URL returned by -	// AuthCodeURL. -	// -	// Online is the default if neither is specified. If your -	// application needs to refresh access tokens when the user -	// is not present at the browser, then use offline. This will -	// result in your application obtaining a refresh token the -	// first time your application exchanges an authorization -	// code for a user. -	AccessTypeOnline  AuthCodeOption = SetAuthURLParam("access_type", "online") -	AccessTypeOffline AuthCodeOption = SetAuthURLParam("access_type", "offline") - -	// ApprovalForce forces the users to view the consent dialog -	// and confirm the permissions request at the URL returned -	// from AuthCodeURL, even if they've already done so. -	ApprovalForce AuthCodeOption = SetAuthURLParam("approval_prompt", "force") -) - -// An AuthCodeOption is passed to Config.AuthCodeURL. -type AuthCodeOption interface { -	setValue(url.Values) -} - -type setParam struct{ k, v string } - -func (p setParam) setValue(m url.Values) { m.Set(p.k, p.v) } - -// SetAuthURLParam builds an AuthCodeOption which passes key/value parameters -// to a provider's authorization endpoint. -func SetAuthURLParam(key, value string) AuthCodeOption { -	return setParam{key, value} -} - -// AuthCodeURL returns a URL to OAuth 2.0 provider's consent page -// that asks for permissions for the required scopes explicitly. -// -// State is a token to protect the user from CSRF attacks. You must -// always provide a non-zero string and validate that it matches the -// the state query parameter on your redirect callback. -// See http://tools.ietf.org/html/rfc6749#section-10.12 for more info. -// -// Opts may include AccessTypeOnline or AccessTypeOffline, as well -// as ApprovalForce. -func (c *Config) AuthCodeURL(state string, opts ...AuthCodeOption) string { -	var buf bytes.Buffer -	buf.WriteString(c.Endpoint.AuthURL) -	v := url.Values{ -		"response_type": {"code"}, -		"client_id":     {c.ClientID}, -		"redirect_uri":  internal.CondVal(c.RedirectURL), -		"scope":         internal.CondVal(strings.Join(c.Scopes, " ")), -		"state":         internal.CondVal(state), -	} -	for _, opt := range opts { -		opt.setValue(v) -	} -	if strings.Contains(c.Endpoint.AuthURL, "?") { -		buf.WriteByte('&') -	} else { -		buf.WriteByte('?') -	} -	buf.WriteString(v.Encode()) -	return buf.String() -} - -// PasswordCredentialsToken converts a resource owner username and password -// pair into a token. -// -// Per the RFC, this grant type should only be used "when there is a high -// degree of trust between the resource owner and the client (e.g., the client -// is part of the device operating system or a highly privileged application), -// and when other authorization grant types are not available." -// See https://tools.ietf.org/html/rfc6749#section-4.3 for more info. -// -// The HTTP client to use is derived from the context. -// If nil, http.DefaultClient is used. -func (c *Config) PasswordCredentialsToken(ctx context.Context, username, password string) (*Token, error) { -	return retrieveToken(ctx, c, url.Values{ -		"grant_type": {"password"}, -		"username":   {username}, -		"password":   {password}, -		"scope":      internal.CondVal(strings.Join(c.Scopes, " ")), -	}) -} - -// Exchange converts an authorization code into a token. -// -// It is used after a resource provider redirects the user back -// to the Redirect URI (the URL obtained from AuthCodeURL). -// -// The HTTP client to use is derived from the context. -// If a client is not provided via the context, http.DefaultClient is used. -// -// The code will be in the *http.Request.FormValue("code"). Before -// calling Exchange, be sure to validate FormValue("state"). -func (c *Config) Exchange(ctx context.Context, code string) (*Token, error) { -	return retrieveToken(ctx, c, url.Values{ -		"grant_type":   {"authorization_code"}, -		"code":         {code}, -		"redirect_uri": internal.CondVal(c.RedirectURL), -		"scope":        internal.CondVal(strings.Join(c.Scopes, " ")), -	}) -} - -// Client returns an HTTP client using the provided token. -// The token will auto-refresh as necessary. The underlying -// HTTP transport will be obtained using the provided context. -// The returned client and its Transport should not be modified. -func (c *Config) Client(ctx context.Context, t *Token) *http.Client { -	return NewClient(ctx, c.TokenSource(ctx, t)) -} - -// TokenSource returns a TokenSource that returns t until t expires, -// automatically refreshing it as necessary using the provided context. -// -// Most users will use Config.Client instead. -func (c *Config) TokenSource(ctx context.Context, t *Token) TokenSource { -	tkr := &tokenRefresher{ -		ctx:  ctx, -		conf: c, -	} -	if t != nil { -		tkr.refreshToken = t.RefreshToken -	} -	return &reuseTokenSource{ -		t:   t, -		new: tkr, -	} -} - -// tokenRefresher is a TokenSource that makes "grant_type"=="refresh_token" -// HTTP requests to renew a token using a RefreshToken. -type tokenRefresher struct { -	ctx          context.Context // used to get HTTP requests -	conf         *Config -	refreshToken string -} - -// WARNING: Token is not safe for concurrent access, as it -// updates the tokenRefresher's refreshToken field. -// Within this package, it is used by reuseTokenSource which -// synchronizes calls to this method with its own mutex. -func (tf *tokenRefresher) Token() (*Token, error) { -	if tf.refreshToken == "" { -		return nil, errors.New("oauth2: token expired and refresh token is not set") -	} - -	tk, err := retrieveToken(tf.ctx, tf.conf, url.Values{ -		"grant_type":    {"refresh_token"}, -		"refresh_token": {tf.refreshToken}, -	}) - -	if err != nil { -		return nil, err -	} -	if tf.refreshToken != tk.RefreshToken { -		tf.refreshToken = tk.RefreshToken -	} -	return tk, err -} - -// reuseTokenSource is a TokenSource that holds a single token in memory -// and validates its expiry before each call to retrieve it with -// Token. If it's expired, it will be auto-refreshed using the -// new TokenSource. -type reuseTokenSource struct { -	new TokenSource // called when t is expired. - -	mu sync.Mutex // guards t -	t  *Token -} - -// Token returns the current token if it's still valid, else will -// refresh the current token (using r.Context for HTTP client -// information) and return the new one. -func (s *reuseTokenSource) Token() (*Token, error) { -	s.mu.Lock() -	defer s.mu.Unlock() -	if s.t.Valid() { -		return s.t, nil -	} -	t, err := s.new.Token() -	if err != nil { -		return nil, err -	} -	s.t = t -	return t, nil -} - -// StaticTokenSource returns a TokenSource that always returns the same token. -// Because the provided token t is never refreshed, StaticTokenSource is only -// useful for tokens that never expire. -func StaticTokenSource(t *Token) TokenSource { -	return staticTokenSource{t} -} - -// staticTokenSource is a TokenSource that always returns the same Token. -type staticTokenSource struct { -	t *Token -} - -func (s staticTokenSource) Token() (*Token, error) { -	return s.t, nil -} - -// HTTPClient is the context key to use with golang.org/x/net/context's -// WithValue function to associate an *http.Client value with a context. -var HTTPClient internal.ContextKey - -// NewClient creates an *http.Client from a Context and TokenSource. -// The returned client is not valid beyond the lifetime of the context. -// -// As a special case, if src is nil, a non-OAuth2 client is returned -// using the provided context. This exists to support related OAuth2 -// packages. -func NewClient(ctx context.Context, src TokenSource) *http.Client { -	if src == nil { -		c, err := internal.ContextClient(ctx) -		if err != nil { -			return &http.Client{Transport: internal.ErrorTransport{err}} -		} -		return c -	} -	return &http.Client{ -		Transport: &Transport{ -			Base:   internal.ContextTransport(ctx), -			Source: ReuseTokenSource(nil, src), -		}, -	} -} - -// ReuseTokenSource returns a TokenSource which repeatedly returns the -// same token as long as it's valid, starting with t. -// When its cached token is invalid, a new token is obtained from src. -// -// ReuseTokenSource is typically used to reuse tokens from a cache -// (such as a file on disk) between runs of a program, rather than -// obtaining new tokens unnecessarily. -// -// The initial token t may be nil, in which case the TokenSource is -// wrapped in a caching version if it isn't one already. This also -// means it's always safe to wrap ReuseTokenSource around any other -// TokenSource without adverse effects. -func ReuseTokenSource(t *Token, src TokenSource) TokenSource { -	// Don't wrap a reuseTokenSource in itself. That would work, -	// but cause an unnecessary number of mutex operations. -	// Just build the equivalent one. -	if rt, ok := src.(*reuseTokenSource); ok { -		if t == nil { -			// Just use it directly. -			return rt -		} -		src = rt.new -	} -	return &reuseTokenSource{ -		t:   t, -		new: src, -	} -} diff --git a/vendor/golang.org/x/oauth2/token.go b/vendor/golang.org/x/oauth2/token.go deleted file mode 100644 index 7a3167f..0000000 --- a/vendor/golang.org/x/oauth2/token.go +++ /dev/null @@ -1,158 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package oauth2 - -import ( -	"net/http" -	"net/url" -	"strconv" -	"strings" -	"time" - -	"golang.org/x/net/context" -	"golang.org/x/oauth2/internal" -) - -// expiryDelta determines how earlier a token should be considered -// expired than its actual expiration time. It is used to avoid late -// expirations due to client-server time mismatches. -const expiryDelta = 10 * time.Second - -// Token represents the crendentials used to authorize -// the requests to access protected resources on the OAuth 2.0 -// provider's backend. -// -// Most users of this package should not access fields of Token -// directly. They're exported mostly for use by related packages -// implementing derivative OAuth2 flows. -type Token struct { -	// AccessToken is the token that authorizes and authenticates -	// the requests. -	AccessToken string `json:"access_token"` - -	// TokenType is the type of token. -	// The Type method returns either this or "Bearer", the default. -	TokenType string `json:"token_type,omitempty"` - -	// RefreshToken is a token that's used by the application -	// (as opposed to the user) to refresh the access token -	// if it expires. -	RefreshToken string `json:"refresh_token,omitempty"` - -	// Expiry is the optional expiration time of the access token. -	// -	// If zero, TokenSource implementations will reuse the same -	// token forever and RefreshToken or equivalent -	// mechanisms for that TokenSource will not be used. -	Expiry time.Time `json:"expiry,omitempty"` - -	// raw optionally contains extra metadata from the server -	// when updating a token. -	raw interface{} -} - -// Type returns t.TokenType if non-empty, else "Bearer". -func (t *Token) Type() string { -	if strings.EqualFold(t.TokenType, "bearer") { -		return "Bearer" -	} -	if strings.EqualFold(t.TokenType, "mac") { -		return "MAC" -	} -	if strings.EqualFold(t.TokenType, "basic") { -		return "Basic" -	} -	if t.TokenType != "" { -		return t.TokenType -	} -	return "Bearer" -} - -// SetAuthHeader sets the Authorization header to r using the access -// token in t. -// -// This method is unnecessary when using Transport or an HTTP Client -// returned by this package. -func (t *Token) SetAuthHeader(r *http.Request) { -	r.Header.Set("Authorization", t.Type()+" "+t.AccessToken) -} - -// WithExtra returns a new Token that's a clone of t, but using the -// provided raw extra map. This is only intended for use by packages -// implementing derivative OAuth2 flows. -func (t *Token) WithExtra(extra interface{}) *Token { -	t2 := new(Token) -	*t2 = *t -	t2.raw = extra -	return t2 -} - -// Extra returns an extra field. -// Extra fields are key-value pairs returned by the server as a -// part of the token retrieval response. -func (t *Token) Extra(key string) interface{} { -	if raw, ok := t.raw.(map[string]interface{}); ok { -		return raw[key] -	} - -	vals, ok := t.raw.(url.Values) -	if !ok { -		return nil -	} - -	v := vals.Get(key) -	switch s := strings.TrimSpace(v); strings.Count(s, ".") { -	case 0: // Contains no "."; try to parse as int -		if i, err := strconv.ParseInt(s, 10, 64); err == nil { -			return i -		} -	case 1: // Contains a single "."; try to parse as float -		if f, err := strconv.ParseFloat(s, 64); err == nil { -			return f -		} -	} - -	return v -} - -// expired reports whether the token is expired. -// t must be non-nil. -func (t *Token) expired() bool { -	if t.Expiry.IsZero() { -		return false -	} -	return t.Expiry.Add(-expiryDelta).Before(time.Now()) -} - -// Valid reports whether t is non-nil, has an AccessToken, and is not expired. -func (t *Token) Valid() bool { -	return t != nil && t.AccessToken != "" && !t.expired() -} - -// tokenFromInternal maps an *internal.Token struct into -// a *Token struct. -func tokenFromInternal(t *internal.Token) *Token { -	if t == nil { -		return nil -	} -	return &Token{ -		AccessToken:  t.AccessToken, -		TokenType:    t.TokenType, -		RefreshToken: t.RefreshToken, -		Expiry:       t.Expiry, -		raw:          t.Raw, -	} -} - -// retrieveToken takes a *Config and uses that to retrieve an *internal.Token. -// This token is then mapped from *internal.Token into an *oauth2.Token which is returned along -// with an error.. -func retrieveToken(ctx context.Context, c *Config, v url.Values) (*Token, error) { -	tk, err := internal.RetrieveToken(ctx, c.ClientID, c.ClientSecret, c.Endpoint.TokenURL, v) -	if err != nil { -		return nil, err -	} -	return tokenFromInternal(tk), nil -} diff --git a/vendor/golang.org/x/oauth2/transport.go b/vendor/golang.org/x/oauth2/transport.go deleted file mode 100644 index 92ac7e2..0000000 --- a/vendor/golang.org/x/oauth2/transport.go +++ /dev/null @@ -1,132 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package oauth2 - -import ( -	"errors" -	"io" -	"net/http" -	"sync" -) - -// Transport is an http.RoundTripper that makes OAuth 2.0 HTTP requests, -// wrapping a base RoundTripper and adding an Authorization header -// with a token from the supplied Sources. -// -// Transport is a low-level mechanism. Most code will use the -// higher-level Config.Client method instead. -type Transport struct { -	// Source supplies the token to add to outgoing requests' -	// Authorization headers. -	Source TokenSource - -	// Base is the base RoundTripper used to make HTTP requests. -	// If nil, http.DefaultTransport is used. -	Base http.RoundTripper - -	mu     sync.Mutex                      // guards modReq -	modReq map[*http.Request]*http.Request // original -> modified -} - -// RoundTrip authorizes and authenticates the request with an -// access token. If no token exists or token is expired, -// tries to refresh/fetch a new token. -func (t *Transport) RoundTrip(req *http.Request) (*http.Response, error) { -	if t.Source == nil { -		return nil, errors.New("oauth2: Transport's Source is nil") -	} -	token, err := t.Source.Token() -	if err != nil { -		return nil, err -	} - -	req2 := cloneRequest(req) // per RoundTripper contract -	token.SetAuthHeader(req2) -	t.setModReq(req, req2) -	res, err := t.base().RoundTrip(req2) -	if err != nil { -		t.setModReq(req, nil) -		return nil, err -	} -	res.Body = &onEOFReader{ -		rc: res.Body, -		fn: func() { t.setModReq(req, nil) }, -	} -	return res, nil -} - -// CancelRequest cancels an in-flight request by closing its connection. -func (t *Transport) CancelRequest(req *http.Request) { -	type canceler interface { -		CancelRequest(*http.Request) -	} -	if cr, ok := t.base().(canceler); ok { -		t.mu.Lock() -		modReq := t.modReq[req] -		delete(t.modReq, req) -		t.mu.Unlock() -		cr.CancelRequest(modReq) -	} -} - -func (t *Transport) base() http.RoundTripper { -	if t.Base != nil { -		return t.Base -	} -	return http.DefaultTransport -} - -func (t *Transport) setModReq(orig, mod *http.Request) { -	t.mu.Lock() -	defer t.mu.Unlock() -	if t.modReq == nil { -		t.modReq = make(map[*http.Request]*http.Request) -	} -	if mod == nil { -		delete(t.modReq, orig) -	} else { -		t.modReq[orig] = mod -	} -} - -// cloneRequest returns a clone of the provided *http.Request. -// The clone is a shallow copy of the struct and its Header map. -func cloneRequest(r *http.Request) *http.Request { -	// shallow copy of the struct -	r2 := new(http.Request) -	*r2 = *r -	// deep copy of the Header -	r2.Header = make(http.Header, len(r.Header)) -	for k, s := range r.Header { -		r2.Header[k] = append([]string(nil), s...) -	} -	return r2 -} - -type onEOFReader struct { -	rc io.ReadCloser -	fn func() -} - -func (r *onEOFReader) Read(p []byte) (n int, err error) { -	n, err = r.rc.Read(p) -	if err == io.EOF { -		r.runFunc() -	} -	return -} - -func (r *onEOFReader) Close() error { -	err := r.rc.Close() -	r.runFunc() -	return err -} - -func (r *onEOFReader) runFunc() { -	if fn := r.fn; fn != nil { -		fn() -		r.fn = nil -	} -} | 
