From 1e16779c5260c2f35644bbebe2772286cd03c6d2 Mon Sep 17 00:00:00 2001 From: William Petit Date: Wed, 19 Sep 2018 15:53:40 +0200 Subject: [PATCH] Add ReachViewVersion() API --- reach/reachview_version.go | 47 +++++++++++++++++++++++++++++++++ reach/reachview_version_test.go | 35 ++++++++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 reach/reachview_version.go create mode 100644 reach/reachview_version_test.go diff --git a/reach/reachview_version.go b/reach/reachview_version.go new file mode 100644 index 0000000..3bacf46 --- /dev/null +++ b/reach/reachview_version.go @@ -0,0 +1,47 @@ +package reach + +import ( + "sync" + + "forge.cadoles.com/Pyxis/golang-socketio" + "github.com/pkg/errors" +) + +const ( + eventGetReachViewVersion = "get reachview version" + eventReachViewVersionResults = "current reachview version" +) + +type reachViewVersion struct { + Version string `json:"version"` +} + +// ReachViewVersion returns the ReachRS module ReachView version +func (c *Client) ReachViewVersion() (string, error) { + + var err error + var version string + var wg sync.WaitGroup + + wg.Add(1) + + err = c.conn.On(eventReachViewVersionResults, func(h *gosocketio.Channel, rv *reachViewVersion) { + version = rv.Version + c.conn.Off(eventReachViewVersionResults) + wg.Done() + }) + if err != nil { + return "", errors.Wrapf(err, "error while binding to '%s' event", eventReachViewVersionResults) + } + + c.logf("sending '%s' event", eventGetReachViewVersion) + if err = c.conn.Emit(eventGetReachViewVersion, nil); err != nil { + return "", errors.Wrapf(err, "error while emitting '%s' event", eventGetReachViewVersion) + } + c.logf("'%s' event sent", eventGetReachViewVersion) + + wg.Wait() + + return version, err + +} diff --git a/reach/reachview_version_test.go b/reach/reachview_version_test.go new file mode 100644 index 0000000..e384019 --- /dev/null +++ b/reach/reachview_version_test.go @@ -0,0 +1,35 @@ +package reach + +import ( + "log" + "testing" +) + +func TestClientReachViewVersion(t *testing.T) { + + if !*runIntegrationTests { + t.Skip("To run this test, use: go test -integration") + } + + client := NewClient( + WithStandardLogger(), + WithEndpoint(*reachHost, 80), + ) + if err := client.Connect(); err != nil { + t.Fatal(err) + } + + version, err := client.ReachViewVersion() + if err != nil { + t.Error(err) + } + + if version == "" { + t.Error("version should not be empty") + } + + log.Printf("reachview version result: %v", version) + + defer client.Close() + +}