From da3089cf879dc660359c9fbf76a2188bc1a93a55 Mon Sep 17 00:00:00 2001 From: Dejan Mijic Date: Sat, 30 Sep 2017 19:58:08 +0200 Subject: [PATCH] Ensure service interface is properly implemented Signed-off-by: Dejan Mijic --- manager/api/logging.go | 13 +++++++++++++ manager/api/metrics.go | 9 +++++++++ manager/api/transport.go | 14 +++++++------- manager/manager.go | 18 +++++++++--------- manager/service.go | 6 +++--- 5 files changed, 41 insertions(+), 19 deletions(-) diff --git a/manager/api/logging.go b/manager/api/logging.go index 7210c437..42377c7b 100644 --- a/manager/api/logging.go +++ b/manager/api/logging.go @@ -45,6 +45,19 @@ func (ls *loggingService) Login(user manager.User) (token string, err error) { return ls.Service.Login(user) } +func (ls *loggingService) Identity(key string) (id string, err error) { + defer func(begin time.Time) { + ls.logger.Log( + "method", "identity", + "id", id, + "error", err, + "took", time.Since(begin), + ) + }(time.Now()) + + return ls.Service.Identity(key) +} + func (ls *loggingService) AddClient(key string, client manager.Client) (id string, err error) { defer func(begin time.Time) { ls.logger.Log( diff --git a/manager/api/metrics.go b/manager/api/metrics.go index 9dbd9bd9..0fbd868f 100644 --- a/manager/api/metrics.go +++ b/manager/api/metrics.go @@ -43,6 +43,15 @@ func (ms *metricService) Login(user manager.User) (string, error) { return ms.Service.Login(user) } +func (ms *metricService) Identity(key string) (string, error) { + defer func(begin time.Time) { + ms.counter.With("method", "identity").Add(1) + ms.latency.With("method", "identity").Observe(time.Since(begin).Seconds()) + }(time.Now()) + + return ms.Service.Identity(key) +} + func (ms *metricService) AddClient(key string, client manager.Client) (string, error) { defer func(begin time.Time) { ms.counter.With("method", "add_client").Add(1) diff --git a/manager/api/transport.go b/manager/api/transport.go index f54958c2..23ca0b16 100644 --- a/manager/api/transport.go +++ b/manager/api/transport.go @@ -20,13 +20,6 @@ func MakeHandler(svc manager.Service) http.Handler { r := bone.New() - r.Post("/identity", kithttp.NewServer( - identityEndpoint(svc), - decodeIdentity, - encodeResponse, - opts..., - )) - r.Post("/users", kithttp.NewServer( registrationEndpoint(svc), decodeCredentials, @@ -41,6 +34,13 @@ func MakeHandler(svc manager.Service) http.Handler { opts..., )) + r.Post("/identity", kithttp.NewServer( + identityEndpoint(svc), + decodeIdentity, + encodeResponse, + opts..., + )) + r.Post("/clients", kithttp.NewServer( addClientEndpoint(svc), decodeClient, diff --git a/manager/manager.go b/manager/manager.go index ca62ebe9..1ebc1d5b 100644 --- a/manager/manager.go +++ b/manager/manager.go @@ -49,6 +49,15 @@ func (ms *managerService) Login(user User) (string, error) { return ms.idp.TemporaryKey(user.Email) } +func (ms *managerService) Identity(key string) (string, error) { + client, err := ms.idp.Identity(key) + if err != nil { + return "", err + } + + return client, nil +} + func (ms *managerService) AddClient(key string, client Client) (string, error) { if err := client.validate(); err != nil { return "", err @@ -203,12 +212,3 @@ func (ms *managerService) CanAccess(key, channel string) bool { return ms.channels.HasClient(channel, client) } - -func (ms *managerService) Identity(key string) (string, error) { - client, err := ms.idp.Identity(key) - if err != nil { - return "", err - } - - return client, nil -} diff --git a/manager/service.go b/manager/service.go index 61ae7357..52fbf605 100644 --- a/manager/service.go +++ b/manager/service.go @@ -33,6 +33,9 @@ type Service interface { // identified by the non-nil error values in the response. Login(User) (string, error) + // Identity retrieves Client ID for a given client token + Identity(string) (string, error) + // AddClient adds new client to the user identified by the provided key. AddClient(string, Client) (string, error) @@ -74,7 +77,4 @@ type Service interface { // CanAccess determines whether or not the channel can be accessed with the // provided key. CanAccess(string, string) bool - - // Identity retrieves Client ID for a given client token - Identity(string) (string, error) }