forked from TrueCloudLab/lego
6004e599ed
* feat: add dep configuration files. * chore: add vendor folder. * refactor: update Dockerfile. * review: remove git from Dockerfile. * review: remove RUN apk. * review: dep status. * feat: added .dockerignore
68 lines
1.9 KiB
Go
68 lines
1.9 KiB
Go
package dnsimple
|
|
|
|
import (
|
|
"encoding/base64"
|
|
)
|
|
|
|
const (
|
|
httpHeaderDomainToken = "X-DNSimple-Domain-Token"
|
|
httpHeaderApiToken = "X-DNSimple-Token"
|
|
httpHeaderAuthorization = "Authorization"
|
|
)
|
|
|
|
// Provides credentials that can be used for authenticating with DNSimple.
|
|
//
|
|
// See https://developer.dnsimple.com/v2/#authentication
|
|
type Credentials interface {
|
|
// Returns the HTTP headers that should be set
|
|
// to authenticate the HTTP Request.
|
|
Headers() map[string]string
|
|
}
|
|
|
|
// Domain token authentication
|
|
type domainTokenCredentials struct {
|
|
domainToken string
|
|
}
|
|
|
|
// NewDomainTokenCredentials construct Credentials using the DNSimple Domain Token method.
|
|
func NewDomainTokenCredentials(domainToken string) Credentials {
|
|
return &domainTokenCredentials{domainToken: domainToken}
|
|
}
|
|
|
|
func (c *domainTokenCredentials) Headers() map[string]string {
|
|
return map[string]string{httpHeaderDomainToken: c.domainToken}
|
|
}
|
|
|
|
// HTTP basic authentication
|
|
type httpBasicCredentials struct {
|
|
email string
|
|
password string
|
|
}
|
|
|
|
// NewHTTPBasicCredentials construct Credentials using HTTP Basic Auth.
|
|
func NewHTTPBasicCredentials(email, password string) Credentials {
|
|
return &httpBasicCredentials{email, password}
|
|
}
|
|
|
|
func (c *httpBasicCredentials) Headers() map[string]string {
|
|
return map[string]string{httpHeaderAuthorization: "Basic " + c.basicAuth(c.email, c.password)}
|
|
}
|
|
|
|
func (c *httpBasicCredentials) basicAuth(username, password string) string {
|
|
auth := username + ":" + password
|
|
return base64.StdEncoding.EncodeToString([]byte(auth))
|
|
}
|
|
|
|
// OAuth token authentication
|
|
type oauthTokenCredentials struct {
|
|
oauthToken string
|
|
}
|
|
|
|
// NewOauthTokenCredentials construct Credentials using the OAuth access token.
|
|
func NewOauthTokenCredentials(oauthToken string) Credentials {
|
|
return &oauthTokenCredentials{oauthToken: oauthToken}
|
|
}
|
|
|
|
func (c *oauthTokenCredentials) Headers() map[string]string {
|
|
return map[string]string{httpHeaderAuthorization: "Bearer " + c.oauthToken}
|
|
}
|