44 lines
1.4 KiB
Go
44 lines
1.4 KiB
Go
package auth
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/zclconf/go-cty/cty"
|
|
)
|
|
|
|
// HostCredentialsToken is a HostCredentials implementation that represents a
|
|
// single "bearer token", to be sent to the server via an Authorization header
|
|
// with the auth type set to "Bearer".
|
|
//
|
|
// To save a token as the credentials for a host, convert the token string to
|
|
// this type and use the result as a HostCredentialsWritable implementation.
|
|
type HostCredentialsToken string
|
|
|
|
// Interface implementation assertions. Compilation will fail here if
|
|
// HostCredentialsToken does not fully implement these interfaces.
|
|
var _ HostCredentials = HostCredentialsToken("")
|
|
var _ HostCredentialsWritable = HostCredentialsToken("")
|
|
|
|
// PrepareRequest alters the given HTTP request by setting its Authorization
|
|
// header to the string "Bearer " followed by the encapsulated authentication
|
|
// token.
|
|
func (tc HostCredentialsToken) PrepareRequest(req *http.Request) {
|
|
if req.Header == nil {
|
|
req.Header = http.Header{}
|
|
}
|
|
req.Header.Set("Authorization", "Bearer "+string(tc))
|
|
}
|
|
|
|
// Token returns the authentication token.
|
|
func (tc HostCredentialsToken) Token() string {
|
|
return string(tc)
|
|
}
|
|
|
|
// ToStore returns a credentials object with a single attribute "token" whose
|
|
// value is the token string.
|
|
func (tc HostCredentialsToken) ToStore() cty.Value {
|
|
return cty.ObjectVal(map[string]cty.Value{
|
|
"token": cty.StringVal(string(tc)),
|
|
})
|
|
}
|