/
oauth.go
37 lines (32 loc) · 1015 Bytes
/
oauth.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package httpcodec;
import(
"github.com/garyburd/go-oauth/oauth"
"net/http"
"net/rpc"
"net/url"
)
type OAuthConfig struct {
Consumer oauth.Credentials
Token oauth.Credentials
}
func SetDefaultOAuthConfig(defaults OAuthConfig, config *OAuthConfig) {
if config.Token.Token == "" {
config.Token.Token = defaults.Token.Token
config.Token.Secret = defaults.Token.Secret
config.Consumer.Token = defaults.Consumer.Token
config.Consumer.Secret = defaults.Consumer.Secret
}
}
func NewOAuth1Encoder(config OAuthConfig) HeaderEncoder {
var client oauth.Client = oauth.Client{Credentials: config.Consumer}
var token oauth.Credentials = config.Token
return func(r *rpc.Request, v interface{}, req *http.Request) error {
var signUrl url.URL = *req.URL
var params = signUrl.Query()
// OAuth library appends the full set of signed params to the signing url.
signUrl.RawQuery = ""
client.SignParam(&token, req.Method, signUrl.String(), params)
req.URL.RawQuery = params.Encode()
return nil
}
}