35 lines
646 B
Go
Raw Normal View History

package signer
import (
"context"
"errors"
"net/http"
)
// An Argument that can be passed to Signer
type SignerArg string
type Signer interface {
SignHTTP(ctx context.Context, request *http.Request) error
}
type SignerArgs interface {
Validate() error
}
func NewSigner(args SignerArgs) (signer Signer, err error) {
switch signerArgs := args.(type) {
case *AWSOptions:
awsSigner, err := NewAwsSigner(signerArgs)
if err != nil {
awsSigner, err = NewAwsSignerFromConfig(signerArgs)
if err != nil {
return nil, err
}
}
return awsSigner, err
default:
return nil, errors.New("unknown signature arguments type")
}
}