diff --git a/http/api/transport.go b/http/api/transport.go index 443bef01..dbce22db 100644 --- a/http/api/transport.go +++ b/http/api/transport.go @@ -10,6 +10,7 @@ import ( "github.com/cisco/senml" kithttp "github.com/go-kit/kit/transport/http" "github.com/go-zoo/bone" + "github.com/mainflux/mainflux" adapter "github.com/mainflux/mainflux/http" "github.com/mainflux/mainflux/writer" "github.com/prometheus/client_golang/prometheus/promhttp" @@ -41,6 +42,7 @@ func MakeHandler(svc adapter.Service) http.Handler { opts..., )) + r.GetFunc("/version", mainflux.Version()) r.Handle("/metrics", promhttp.Handler()) return r diff --git a/manager/api/endpoint.go b/manager/api/endpoint.go index ab65f866..24ef9e42 100644 --- a/manager/api/endpoint.go +++ b/manager/api/endpoint.go @@ -7,17 +7,6 @@ import ( "github.com/mainflux/mainflux/manager" ) -func infoEndpoint(svc manager.Service) endpoint.Endpoint { - return func(_ context.Context, request interface{}) (interface{}, error) { - info, err := svc.Info() - if err != nil { - return nil, err - } - - return infoRes{Version: info.Version}, nil - } -} - func registrationEndpoint(svc manager.Service) endpoint.Endpoint { return func(_ context.Context, request interface{}) (interface{}, error) { user := request.(manager.User) diff --git a/manager/api/resources.go b/manager/api/resources.go index bfdb9c43..af5e97be 100644 --- a/manager/api/resources.go +++ b/manager/api/resources.go @@ -15,25 +15,6 @@ type apiResponse interface { empty() bool } -// Info -type infoReq struct{} - -type infoRes struct { - Version string `json:"version"` -} - -func (res infoRes) headers() map[string]string { - return map[string]string{} -} - -func (res infoRes) code() int { - return http.StatusOK -} - -func (res infoRes) empty() bool { - return false -} - type clientReq struct { key string id string diff --git a/manager/api/transport.go b/manager/api/transport.go index c1e34e40..45022b19 100644 --- a/manager/api/transport.go +++ b/manager/api/transport.go @@ -7,6 +7,7 @@ import ( kithttp "github.com/go-kit/kit/transport/http" "github.com/go-zoo/bone" + "github.com/mainflux/mainflux" "github.com/mainflux/mainflux/manager" "github.com/prometheus/client_golang/prometheus/promhttp" ) @@ -19,13 +20,6 @@ func MakeHandler(svc manager.Service) http.Handler { r := bone.New() - r.Get("/info", kithttp.NewServer( - infoEndpoint(svc), - decodeInfo, - encodeResponse, - opts..., - )) - r.Post("/users", kithttp.NewServer( registrationEndpoint(svc), decodeCredentials, @@ -124,16 +118,12 @@ func MakeHandler(svc manager.Service) http.Handler { opts..., )) + r.GetFunc("/version", mainflux.Version()) r.Handle("/metrics", promhttp.Handler()) return r } -func decodeInfo(_ context.Context, r *http.Request) (interface{}, error) { - req := infoReq{} - return req, nil -} - func decodeCredentials(_ context.Context, r *http.Request) (interface{}, error) { var user manager.User if err := json.NewDecoder(r.Body).Decode(&user); err != nil { diff --git a/manager/info.go b/manager/info.go deleted file mode 100644 index 96aeb57f..00000000 --- a/manager/info.go +++ /dev/null @@ -1,13 +0,0 @@ -package manager - -const Version = "1.0.0" - -type Info struct { - Version string -} - -func getInfo() (Info, error) { - info := Info{Version: Version} - - return info, nil -} diff --git a/manager/manager.go b/manager/manager.go index 420ca6f9..ffa8eac9 100644 --- a/manager/manager.go +++ b/manager/manager.go @@ -22,14 +22,6 @@ func NewService(users UserRepository, clients ClientRepository, channels Channel } } -func (ms *managerService) Info() (Info, error) { - info, err := getInfo() - if err != nil { - return Info{}, err - } - return info, nil -} - func (ms *managerService) Register(user User) error { if err := user.validate(); err != nil { return err diff --git a/manager/service.go b/manager/service.go index d793ff06..0dc3071d 100644 --- a/manager/service.go +++ b/manager/service.go @@ -24,9 +24,6 @@ var ( // Service specifies an API that must be fullfiled by the domain service // implementation, and all of its decorators (e.g. logging & metrics). type Service interface { - // Version - Info() (Info, error) - // Register creates new user account. In case of the failed registration, a // non-nil error value is returned. Register(User) error diff --git a/version.go b/version.go new file mode 100644 index 00000000..7c2b056c --- /dev/null +++ b/version.go @@ -0,0 +1,25 @@ +// Package mainflux acts as an umbrella package containing multiple different +// microservices / deliverables. It provides the top-level platform versioning. +package mainflux + +import ( + "encoding/json" + "net/http" +) + +const version string = "1.0.0" + +type response struct { + Version string +} + +// Version exposes an HTTP handler for retrieving service version. +func Version() http.HandlerFunc { + return http.HandlerFunc(func(rw http.ResponseWriter, _ *http.Request) { + res := response{Version: version} + + data, _ := json.Marshal(res) + + rw.Write(data) + }) +}