oauthutil

package
Version: v0.0.0-...-1b1593a Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 13, 2017 License: MIT Imports: 15 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// TitleBarRedirectURL is the OAuth2 redirect URL to use when the authorization
	// code should be returned in the title bar of the browser, with the page text
	// prompting the user to copy the code and paste it in the application.
	TitleBarRedirectURL = "urn:ietf:wg:oauth:2.0:oob"

	// RedirectURL is redirect to local webserver when active
	RedirectURL = "http://" + bindAddress + "/"

	// RedirectPublicURL is redirect to local webserver when active with public name
	RedirectPublicURL = "http://localhost.rclone.org:" + bindPort + "/"

	// RedirectLocalhostURL is redirect to local webserver when active with localhost
	RedirectLocalhostURL = "http://localhost:" + bindPort + "/"
)

Variables

This section is empty.

Functions

func Config

func Config(id, name string, config *oauth2.Config, opts ...oauth2.AuthCodeOption) error

Config does the initial creation of the token

It may run an internal webserver to receive the results

func ConfigNoOffline

func ConfigNoOffline(id, name string, config *oauth2.Config, opts ...oauth2.AuthCodeOption) error

ConfigNoOffline does the same as Config but does not pass the "access_type=offline" parameter.

func Context

func Context(client *http.Client) context.Context

Context returns a context with our HTTP Client baked in for oauth2

func GetToken

func GetToken(name string) (*oauth2.Token, error)

GetToken returns the token saved in the config file under section name.

func PutToken

func PutToken(name string, token *oauth2.Token, newSection bool) error

PutToken stores the token in the config file

This saves the config file if it changes

Types

type Renew

type Renew struct {
	// contains filtered or unexported fields
}

Renew allows tokens to be renewed on expiry if uploads are in progress.

func NewRenew

func NewRenew(name string, ts *TokenSource, run func() error) *Renew

NewRenew creates a new Renew struct and starts a background process which renews the token whenever it expires. It uses the run() call to run a transaction to do this.

It will only renew the token if the number of uploads > 0

func (*Renew) Invalidate

func (r *Renew) Invalidate()

Invalidate invalidates the token source

func (*Renew) Start

func (r *Renew) Start()

Start should be called before starting an upload

func (*Renew) Stop

func (r *Renew) Stop()

Stop should be called after finishing an upload

type TokenSource

type TokenSource struct {
	// contains filtered or unexported fields
}

TokenSource stores updated tokens in the config file

func NewClient

func NewClient(name string, config *oauth2.Config) (*http.Client, *TokenSource, error)

NewClient gets a token from the config file and configures a Client with it. It returns the client and a TokenSource which Invalidate may need to be called on

func NewClientWithBaseClient

func NewClientWithBaseClient(name string, config *oauth2.Config, baseClient *http.Client) (*http.Client, *TokenSource, error)

NewClientWithBaseClient gets a token from the config file and configures a Client with it. It returns the client and a TokenSource which Invalidate may need to be called on. It uses the httpClient passed in as the base client.

func (*TokenSource) Invalidate

func (ts *TokenSource) Invalidate()

Invalidate invalidates the token

func (*TokenSource) OnExpiry

func (ts *TokenSource) OnExpiry() <-chan time.Time

OnExpiry returns a channel which has the time written to it when the token expires. Note that there is only one channel so if attaching multiple go routines it will only signal to one of them.

func (*TokenSource) Token

func (ts *TokenSource) Token() (*oauth2.Token, error)

Token returns a token or an error. Token must be safe for concurrent use by multiple goroutines. The returned Token must not be modified.

This saves the token in the config file if it has changed

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL