From af5de5e1d68af565b36676ad31a1e2cc52b25821 Mon Sep 17 00:00:00 2001 From: Oleg <11861208+Catzilla@users.noreply.github.com> Date: Wed, 21 Aug 2024 03:34:59 +0300 Subject: [PATCH] Fixed SubscriberApi.UpdatePreferences --- lib/model.go | 29 +++++++++++++++++++---------- lib/subscribers.go | 6 +++--- lib/subscribers_test.go | 11 +++++------ 3 files changed, 27 insertions(+), 19 deletions(-) diff --git a/lib/model.go b/lib/model.go index cf0f22f..e4ba491 100644 --- a/lib/model.go +++ b/lib/model.go @@ -19,9 +19,11 @@ const ( ) const ( - EMAIL ChannelType = "EMAIL" - SMS ChannelType = "SMS" - DIRECT ChannelType = "DIRECT" + INAPP ChannelType = "in_app" + EMAIL ChannelType = "email" + SMS ChannelType = "sms" + CHAT ChannelType = "chat" + PUSH ChannelType = "push" ) const ( @@ -157,11 +159,11 @@ type Preference struct { } type Channel struct { - Email bool `json:"email"` - Sms bool `json:"sms"` - Chat bool `json:"chat"` - InApp bool `json:"in_app"` - Push bool `json:"push"` + Email *bool `json:"email,omitempty"` + Sms *bool `json:"sms,omitempty"` + Chat *bool `json:"chat,omitempty"` + InApp *bool `json:"in_app,omitempty"` + Push *bool `json:"push,omitempty"` } type SubscriberPreferencesResponse struct { @@ -171,14 +173,21 @@ type SubscriberPreferencesResponse struct { } `json:"data"` } +type UpdateSubscriberPreferencesResponse struct { + Data struct { + Template Template `json:"template"` + Preference Preference `json:"preference"` + } `json:"data"` +} + type UpdateSubscriberPreferencesChannel struct { Type ChannelType `json:"type"` Enabled bool `json:"enabled"` } type UpdateSubscriberPreferencesOptions struct { - Channel []UpdateSubscriberPreferencesChannel `json:"channel,omitempty"` - Enabled bool `json:"enabled,omitempty"` + Channel *UpdateSubscriberPreferencesChannel `json:"channel,omitempty"` + Enabled *bool `json:"enabled,omitempty"` } type ListTopicsResponse struct { diff --git a/lib/subscribers.go b/lib/subscribers.go index 83372c3..6777dc2 100644 --- a/lib/subscribers.go +++ b/lib/subscribers.go @@ -23,7 +23,7 @@ type ISubscribers interface { GetUnseenCount(ctx context.Context, subscriberID string, opts *SubscriberUnseenCountOptions) (*SubscriberUnseenCountResponse, error) MarkMessageSeen(ctx context.Context, subscriberID string, opts SubscriberMarkMessageSeenOptions) (*SubscriberNotificationFeedResponse, error) GetPreferences(ctx context.Context, subscriberID string) (*SubscriberPreferencesResponse, error) - UpdatePreferences(ctx context.Context, subscriberID string, templateId string, opts *UpdateSubscriberPreferencesOptions) (*SubscriberPreferencesResponse, error) + UpdatePreferences(ctx context.Context, subscriberID string, templateId string, opts *UpdateSubscriberPreferencesOptions) (*UpdateSubscriberPreferencesResponse, error) } type SubscriberService service @@ -234,8 +234,8 @@ func (s *SubscriberService) GetUnseenCount(ctx context.Context, subscriberID str return &resp, nil } -func (s *SubscriberService) UpdatePreferences(ctx context.Context, subscriberID string, templateId string, opts *UpdateSubscriberPreferencesOptions) (*SubscriberPreferencesResponse, error) { - var resp SubscriberPreferencesResponse +func (s *SubscriberService) UpdatePreferences(ctx context.Context, subscriberID string, templateId string, opts *UpdateSubscriberPreferencesOptions) (*UpdateSubscriberPreferencesResponse, error) { + var resp UpdateSubscriberPreferencesResponse URL := s.client.config.BackendURL.JoinPath("subscribers", subscriberID, "preferences", templateId) var reqBody io.Reader = http.NoBody diff --git a/lib/subscribers_test.go b/lib/subscribers_test.go index 0836350..443e64c 100644 --- a/lib/subscribers_test.go +++ b/lib/subscribers_test.go @@ -413,13 +413,12 @@ func TestSubscriberService_UpdatePreferences_Success(t *testing.T) { var expectedResponse *lib.SubscriberPreferencesResponse fileToStruct(filepath.Join("../testdata", "subscriber_preferences_response.json"), &expectedResponse) + enabled := true var opts *lib.UpdateSubscriberPreferencesOptions = &lib.UpdateSubscriberPreferencesOptions{ - Enabled: true, - Channel: []lib.UpdateSubscriberPreferencesChannel{ - { - Type: "email", - Enabled: true, - }, + Enabled: &enabled, + Channel: &lib.UpdateSubscriberPreferencesChannel{ + Type: "email", + Enabled: true, }, } httpServer := createTestServer(t, TestServerOptions[*lib.UpdateSubscriberPreferencesOptions, *lib.SubscriberPreferencesResponse]{