var HTTPClient contextKey
HTTPClient is the context key to associate an *http.Client value with a context.
var NoContext = context.TODO()
NoContext is the default context to use in most cases.
func NewClient(ctx context.Context, config *Config, token *Token) *http.Client
NewClient returns a new http Client which signs requests via OAuth1.
func ParseAuthorizationCallback(req *http.Request) (requestToken, verifier string, err error)
ParseAuthorizationCallback parses an OAuth1 authorization callback request from a provider server. The oauth_token and oauth_verifier parameters are parsed to return the request token from earlier in the flow and the verifier string. See RFC 5849 2.2 Resource Owner Authorization.
func PercentEncode(input string) string
PercentEncode percent encodes a string according to RFC 3986 2.1.
type Config struct { // Consumer Key (Client Identifier) ConsumerKey string // Consumer Secret (Client Shared-Secret) ConsumerSecret string // Callback URL CallbackURL string // Provider Endpoint specifying OAuth1 endpoint URLs Endpoint Endpoint // OAuth1 Signer (defaults to HMAC-SHA1) Signer Signer }
Config represents an OAuth1 consumer's (client's) key and secret, the callback URL, and the provider Endpoint to which the consumer corresponds.
func NewConfig(consumerKey, consumerSecret string) *Config
NewConfig returns a new Config with the given consumer key and secret.
func (c *Config) AccessToken(requestToken, requestSecret, verifier string) (accessToken, accessSecret string, err error)
AccessToken obtains an access token (token credential) by POSTing a request (with oauth_token and oauth_verifier in the auth header) to the Endpoint AccessTokenURL. Returns the access token and secret (token credentials). See RFC 5849 2.3 Token Credentials.
func (c *Config) AuthorizationURL(requestToken string) (*url.URL, error)
AuthorizationURL accepts a request token and returns the *url.URL to the Endpoint's authorization page that asks the user (resource owner) for to authorize the consumer to act on his/her/its behalf. See RFC 5849 2.2 Resource Owner Authorization.
func (c *Config) Client(ctx context.Context, t *Token) *http.Client
Client returns an HTTP client which uses the provided ctx and access Token.
func (c *Config) RequestToken() (requestToken, requestSecret string, err error)
RequestToken obtains a Request token and secret (temporary credential) by POSTing a request (with oauth_callback in the auth header) to the Endpoint RequestTokenURL. The response body form is validated to ensure oauth_callback_confirmed is true. Returns the request token and secret (temporary credentials). See RFC 5849 2.1 Temporary Credentials.
type Endpoint struct { // Request URL (Temporary Credential Request URI) RequestTokenURL string // Authorize URL (Resource Owner Authorization URI) AuthorizeURL string // Access Token URL (Token Request URI) AccessTokenURL string }
Endpoint represents an OAuth1 provider's (server's) request token, owner authorization, and access token request URLs.
type HMACSigner struct { ConsumerSecret string }
HMACSigner signs messages with an HMAC SHA1 digest, using the concatenated consumer secret and token secret as the key.
func (s *HMACSigner) Name() string
Name returns the HMAC-SHA1 method.
func (s *HMACSigner) Sign(tokenSecret, message string) (string, error)
Sign creates a concatenated consumer and token secret key and calculates the HMAC digest of the message. Returns the base64 encoded digest bytes.
type RSASigner struct { PrivateKey *rsa.PrivateKey }
RSASigner RSA PKCS1-v1_5 signs SHA1 digests of messages using the given RSA private key.
func (s *RSASigner) Name() string
Name returns the RSA-SHA1 method.
func (s *RSASigner) Sign(tokenSecret, message string) (string, error)
Sign uses RSA PKCS1-v1_5 to sign a SHA1 digest of the given message. The tokenSecret is not used with this signing scheme.
type Signer interface { // Name returns the name of the signing method. Name() string // Sign signs the message using the given secret key. Sign(key string, message string) (string, error) }
A Signer signs messages to create signed OAuth1 Requests.
type Token struct { Token string TokenSecret string }
Token is an AccessToken (token credential) which allows a consumer (client) to access resources from an OAuth1 provider server.
func NewToken(token, tokenSecret string) *Token
NewToken returns a new Token with the given token and token secret.
type TokenSource interface { Token() (*Token, error) }
A TokenSource can return a Token.
func StaticTokenSource(token *Token) TokenSource
StaticTokenSource returns a TokenSource which always returns the same Token. This is appropriate for tokens which do not have a time expiration.
type Transport struct { // Base is the base RoundTripper used to make HTTP requests. If nil, then // http.DefaultTransport is used Base http.RoundTripper // contains filtered or unexported fields }
Transport is an http.RoundTripper which makes OAuth1 HTTP requests. It wraps a base RoundTripper and adds an Authorization header using the token from a TokenSource.
Transport is a low-level component, most users should use Config to create an http.Client instead.
func (t *Transport) RoundTrip(req *http.Request) (*http.Response, error)
RoundTrip authorizes the request with a signed OAuth1 Authorization header using the auther and TokenSource.