Start abstracting away the ACME provider (#830)

* Start abstracting away the ACME provider

* Move ACME to interface with sub-package implementations

* Addressing comments

* Library -> Provider

* Missed a couple of Library -> Provider

* One more Library -> Provider

* remove constants
This commit is contained in:
Jake Sanders
2019-10-09 16:42:05 +01:00
committed by Asim Aslam
parent 44473f954f
commit 107b7419b7
5 changed files with 69 additions and 8 deletions

16
api/server/acme/acme.go Normal file
View File

@@ -0,0 +1,16 @@
// Package acme abstracts away various ACME libraries
package acme
import (
"errors"
"net"
)
var (
ErrProviderNotImplemented = errors.New("Provider not implemented")
)
// Provider is a ACME provider interface
type Provider interface {
NewListener(...string) (net.Listener, error)
}

View File

@@ -0,0 +1,22 @@
// Package autocert is the ACME interpreter from golang.org/x/crypto/acme/autocert
package autocert
import (
"net"
"github.com/micro/go-micro/api/server/acme"
"golang.org/x/crypto/acme/autocert"
)
// autoCertACME is the ACME provider from golang.org/x/crypto/acme/autocert
type autocertProvider struct{}
// NewListener implements acme.Provider
func (a *autocertProvider) NewListener(ACMEHosts ...string) (net.Listener, error) {
return autocert.NewListener(ACMEHosts...), nil
}
// New returns an autocert acme.Provider
func New() acme.Provider {
return &autocertProvider{}
}

View File

@@ -0,0 +1,15 @@
package autocert
import (
"testing"
)
func TestAutocert(t *testing.T) {
l := New()
if _, ok := l.(*autocertProvider); !ok {
t.Error("New() didn't return an autocertProvider")
}
if _, err := l.NewListener(); err != nil {
t.Error(err.Error())
}
}