diff --git a/ably/rest_client.go b/ably/rest_client.go index 27683a8e..41bab35b 100644 --- a/ably/rest_client.go +++ b/ably/rest_client.go @@ -23,13 +23,14 @@ var ( presMsgType = reflect.TypeOf((*[]*proto.PresenceMessage)(nil)).Elem() ) +// constants for rsc7 const ( - // AblyVersionHeader is a header key sent to ably with the client's supported - // ably version. AblyVersionHeader = "X-Ably-Version" - - // AblyVersion the spec version supported by the client. - AblyVersion = "1.0" + AblyLibHeader = "X-Ably-Lib" + LibraryVersion = "1.0" + LibraryName = "ably-go" + LibraryString = LibraryName + "-" + LibraryVersion + AblyVersion = "1.0" ) func query(fn func(string, interface{}) (*http.Response, error)) QueryFunc { @@ -180,6 +181,7 @@ func (c *RestClient) NewHTTPRequest(r *Request) (*http.Request, error) { } req.Header.Set("Accept", proto) req.Header.Set(AblyVersionHeader, AblyVersion) + req.Header.Set(AblyLibHeader, LibraryString) if !r.NoAuth { if err := c.Auth.authReq(req); err != nil { return nil, err diff --git a/ably/rest_client_test.go b/ably/rest_client_test.go index 8a363906..e0b22a6c 100644 --- a/ably/rest_client_test.go +++ b/ably/rest_client_test.go @@ -218,4 +218,14 @@ func TestRSC7(t *testing.T) { t.Errorf("expected %s got %s", ably.AblyVersion, h) } }) + t.Run("must set lib header", func(ts *testing.T) { + req, err := c.NewHTTPRequest(&ably.Request{}) + if err != nil { + ts.Fatal(err) + } + h := req.Header.Get(ably.AblyLibHeader) + if h != ably.LibraryString { + t.Errorf("expected %s got %s", ably.LibraryString, h) + } + }) }