rdstation-ruby-client 2.5.3 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a86741ab9503d0df23891a8c5f5624ecfa1aa16239bdcceff547b38600490ce3
4
- data.tar.gz: ee42acbda82c510a976cc6219eba9ac84761cdcbc74923f3c6ba59047ac25102
3
+ metadata.gz: f95c666afffacdbac2a2903c5b8909999bb24bba716f89d4646ee19c165bc262
4
+ data.tar.gz: 1beded8e2c402f5bb89523e3e20d5ee8ed485f6687819317f558f958bdd90353
5
5
  SHA512:
6
- metadata.gz: d8bfed006377c6561dfc35e5951a303d8efa17b049d20523abcf6a580b467280b30a8072d320756fbaa7420af142e7c2c99f9d5f7b93732bc0dcbcb2a41fbdde
7
- data.tar.gz: 182cda1194b7fad1a853663c0eed931615acaf9c13dc60f60ff378f63765175a3a622e9e349801cda369d06aff84b2b0ca2541f7fe3fa755c8122e31f81b9220
6
+ metadata.gz: 4803cf2a2f16e6982c84d84d9109c03130f8df4ff4d92ecfc9b5500e96383afdf6527b7dd834d7d1256d9947ab67f4aeed6d70591a2a86c3edf9b10ad7cced70
7
+ data.tar.gz: 344733aa7473f0d0db3391e26fc4a00648b9123ded0a5713549ab67462fdc528ef1a3256774d728aa2df6490cbdc989e65c2538e9a81c3f9829ab6f0622c303f
data/.circleci/config.yml CHANGED
@@ -22,7 +22,7 @@ jobs:
22
22
  # Download and cache dependencies
23
23
  - restore_cache:
24
24
  keys:
25
- - v1-dependencies-{{ checksum "Gemfile.lock" }}
25
+ - v1-dependencies-{{ checksum "rdstation-ruby-client.gemspec" }}
26
26
  # fallback to using the latest cache if no exact match is found
27
27
  - v1-dependencies-
28
28
 
@@ -34,7 +34,7 @@ jobs:
34
34
  - save_cache:
35
35
  paths:
36
36
  - ./vendor/bundle
37
- key: v1-dependencies-{{ checksum "Gemfile.lock" }}
37
+ key: v1-dependencies-{{ checksum "rdstation-ruby-client.gemspec" }}
38
38
 
39
39
  # run tests!
40
40
  - run:
data/.gitignore CHANGED
@@ -11,6 +11,7 @@ spec/reports
11
11
  test/tmp
12
12
  test/version_tmp
13
13
  tmp
14
+ Gemfile.lock
14
15
 
15
16
  # YARD artifacts
16
17
  .yardoc
data/CHANGELOG.md CHANGED
@@ -1,3 +1,39 @@
1
+ ## 2.7.0
2
+
3
+ ### Additions
4
+
5
+ #### 1. New Analytics client
6
+
7
+ Usage example:
8
+
9
+ ```ruby
10
+ client = RDStation::Client.new(access_token: 'access_token', refresh_token: 'refresh_token')
11
+ query_parms = { start_date:'2022-11-02', end_date:'2022-11-08' }
12
+ client.analytics.email_marketing(query_params)
13
+ ```
14
+
15
+ ## 2.6.0
16
+
17
+ ### Additions
18
+
19
+ #### 1. New Emails client
20
+
21
+ Usage example:
22
+
23
+ ```ruby
24
+ client = RDStation::Client.new(access_token: 'access_token', refresh_token: 'refresh_token')
25
+ client.emails.all
26
+ ```
27
+
28
+ #### 2. New Segmentations client
29
+
30
+ Usage example:
31
+
32
+ ```ruby
33
+ client = RDStation::Client.new(access_token: 'access_token', refresh_token: 'refresh_token')
34
+ client.segmentations.all
35
+ ```
36
+
1
37
  ## 2.5.1
2
38
 
3
39
  - Fixed checking `empty?` for nil values inside of InvalidRefreshToken class
data/README.md CHANGED
@@ -16,7 +16,10 @@ Upgrading? Check the [migration guide](#Migration-guide) before bumping to a new
16
16
  4. [Events](#Events)
17
17
  5. [Fields](#Fields)
18
18
  6. [Webhooks](#Webhooks)
19
- 7. [Errors](#Errors)
19
+ 7. [Emails](#Emails)
20
+ 8. [Segmentations](#Segmentations)
21
+ 9. [Analytics](#Analytics)
22
+ 10. [Errors](#Errors)
20
23
  3. [Changelog](#Changelog)
21
24
  4. [Migration guide](#Migration-guide)
22
25
  1. [Upgrading from 1.2.x to 2.0.0](#Upgrading-from-1.2.x-to-2.0.0)
@@ -302,6 +305,56 @@ client = RDStation::Client.new(access_token: 'access_token', refresh_token: 'ref
302
305
  client.webhooks.delete('WEBHOOK_UUID')
303
306
  ```
304
307
 
308
+ ### Emails
309
+ Endpoints to [Email](https://developers.rdstation.com/reference/get_platform-emails) information in your RD Station account.
310
+
311
+ #### List all emails
312
+
313
+ ```ruby
314
+ client = RDStation::Client.new(access_token: 'access_token', refresh_token: 'refresh_token')
315
+ client.emails.all
316
+ ```
317
+
318
+ #### List emails using query params
319
+ ```ruby
320
+ client = RDStation::Client.new(access_token: 'access_token', refresh_token: 'refresh_token')
321
+ query_params = {page_size: 10, page: 1}
322
+ client.emails.all(query_params)
323
+ ```
324
+
325
+ #### Get email by id
326
+
327
+ ```ruby
328
+ client = RDStation::Client.new(access_token: 'access_token', refresh_token: 'refresh_token')
329
+ client.emails.by_id(id)
330
+ ```
331
+
332
+ ### Segmentations
333
+ Endpoints to [Segmentation](https://developers.rdstation.com/reference/segmenta%C3%A7%C3%B5es) information in your RD Station account.
334
+ #### List all segmentations
335
+
336
+ ```ruby
337
+ client = RDStation::Client.new(access_token: 'access_token', refresh_token: 'refresh_token')
338
+ client.segmentations.all
339
+ ```
340
+
341
+ #### Get the contact list with a specific segmentation
342
+
343
+ ```ruby
344
+ client = RDStation::Client.new(access_token: 'access_token', refresh_token: 'refresh_token')
345
+ client.segmentations.contacts(segmentation_id)
346
+ ```
347
+ ### Analytics
348
+ Endpoints to [Analytics](https://developers.rdstation.com/reference/get_platform-analytics-emails) information in your RD Station account.
349
+
350
+ #### List all email marketing analytics data
351
+ - NOTE: The query params `start_date`(yyyy-mm-dd) and `end_date`(yyyy-mm-dd) are required
352
+
353
+ ```ruby
354
+ client = RDStation::Client.new(access_token: 'access_token', refresh_token: 'refresh_token')
355
+ query_parms = { start_date:'2022-11-02', end_date:'2022-11-08' }
356
+ client.analytics.email_marketing(query_params)
357
+ ```
305
358
  ### Errors
306
359
 
307
360
  Each endpoint may raise errors accoording to the HTTP response code from RDStation:
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RDStation
4
+ class Analytics
5
+ include HTTParty
6
+ include ::RDStation::RetryableRequest
7
+
8
+ def initialize(authorization:)
9
+ @authorization = authorization
10
+ end
11
+
12
+ def email_marketing(query_params={})
13
+ retryable_request(@authorization) do |authorization|
14
+ response = self.class.get(base_url, headers: authorization.headers, query: query_params)
15
+ ApiResponse.build(response)
16
+ end
17
+ end
18
+
19
+ private
20
+
21
+ def base_url
22
+ "#{RDStation.host}/platform/analytics/emails"
23
+ end
24
+ end
25
+ end
@@ -24,6 +24,18 @@ module RDStation
24
24
  @webhooks ||= RDStation::Webhooks.new(authorization: @authorization)
25
25
  end
26
26
 
27
+ def segmentations
28
+ @segmentations ||= RDStation::Segmentations.new(authorization: @authorization)
29
+ end
30
+
31
+ def emails
32
+ @emails ||= RDStation::Emails.new(authorization: @authorization)
33
+ end
34
+
35
+ def analytics
36
+ @analytics ||= RDStation::Analytics.new(authorization: @authorization)
37
+ end
38
+
27
39
  private
28
40
 
29
41
  def warn_deprecation
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RDStation
4
+ class Emails
5
+ include HTTParty
6
+ include ::RDStation::RetryableRequest
7
+
8
+ def initialize(authorization:)
9
+ @authorization = authorization
10
+ end
11
+
12
+ def all(query_params={})
13
+ retryable_request(@authorization) do |authorization|
14
+ response = self.class.get(base_url, headers: authorization.headers, query: query_params)
15
+ ApiResponse.build(response)
16
+ end
17
+ end
18
+
19
+ def by_id(id)
20
+ retryable_request(@authorization) do |authorization|
21
+ response = self.class.get(base_url(id), headers: authorization.headers)
22
+ ApiResponse.build(response)
23
+ end
24
+ end
25
+
26
+ private
27
+
28
+ def base_url(path='')
29
+ "#{RDStation.host}/platform/emails/#{path}"
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,30 @@
1
+ module RDStation
2
+ class Segmentations
3
+ include HTTParty
4
+ include ::RDStation::RetryableRequest
5
+
6
+ def initialize(authorization:)
7
+ @authorization = authorization
8
+ end
9
+
10
+ def all
11
+ retryable_request(@authorization) do |authorization|
12
+ response = self.class.get(base_url, headers: authorization.headers)
13
+ ApiResponse.build(response)
14
+ end
15
+ end
16
+
17
+ def contacts(segmentation_id)
18
+ retryable_request(@authorization) do |authorization|
19
+ response = self.class.get(base_url("#{segmentation_id}/contacts"), headers: authorization.headers)
20
+ ApiResponse.build(response)
21
+ end
22
+ end
23
+
24
+ private
25
+
26
+ def base_url(path = '')
27
+ "#{RDStation.host}/platform/segmentations/#{path}"
28
+ end
29
+ end
30
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RDStation
4
- VERSION = '2.5.3'
4
+ VERSION = '2.7.0'
5
5
  end
@@ -13,6 +13,9 @@ require 'rdstation/contacts'
13
13
  require 'rdstation/events'
14
14
  require 'rdstation/fields'
15
15
  require 'rdstation/webhooks'
16
+ require 'rdstation/segmentations'
17
+ require 'rdstation/emails'
18
+ require 'rdstation/analytics'
16
19
 
17
20
  # Error handling
18
21
  require 'rdstation/error'
@@ -0,0 +1,107 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe RDStation::Analytics do
4
+ let(:analytics_client) do
5
+ described_class.new(authorization: RDStation::Authorization.new(access_token: 'access_token'))
6
+ end
7
+
8
+ let(:analytics_endpoint) { 'https://api.rd.services/platform/analytics/emails' }
9
+
10
+ let(:headers) do
11
+ {
12
+ Authorization: 'Bearer access_token',
13
+ 'Content-Type': 'application/json'
14
+ }
15
+ end
16
+
17
+ let(:error_handler) do
18
+ instance_double(RDStation::ErrorHandler, raise_error: 'mock raised errors')
19
+ end
20
+
21
+ before do
22
+ allow(RDStation::ErrorHandler).to receive(:new).and_return(error_handler)
23
+ end
24
+
25
+ describe '#email_marketing' do
26
+ let(:analytics_list) do
27
+ {
28
+ account_id: 1,
29
+ query_date: {
30
+ start_date: "2022-11-08",
31
+ end_date: "2022-11-08"
32
+ },
33
+ emails: [
34
+ {
35
+ campaign_id: 6061281,
36
+ campaign_name: "Desconto",
37
+ send_at: "2021-08-06T17:26:39-03:00",
38
+ contacts_count: 1000,
39
+ email_dropped_count: 3,
40
+ email_delivered_count: 997,
41
+ email_bounced_count: 5,
42
+ email_opened_count: 500,
43
+ email_clicked_count: 500,
44
+ email_unsubscribed_count: 4,
45
+ email_spam_reported_count: 1,
46
+ email_delivered_rate: 98.7,
47
+ email_opened_rate: 46.9,
48
+ email_clicked_rate: 36.5,
49
+ email_spam_reported_rate: 0
50
+ }
51
+ ]
52
+ }.to_json
53
+ end
54
+
55
+ it 'calls retryable_request' do
56
+ expect(analytics_client).to receive(:retryable_request)
57
+ analytics_client.email_marketing
58
+ end
59
+
60
+ context 'when the request is successful' do
61
+ before do
62
+ stub_request(:get, analytics_endpoint)
63
+ .with(headers: headers)
64
+ .to_return(status: 200, body: analytics_list.to_json)
65
+ end
66
+
67
+ it 'returns all email marketing analytics data' do
68
+ response = analytics_client.email_marketing
69
+ expect(response).to eq(analytics_list)
70
+ end
71
+ end
72
+
73
+ context 'when the request contains query params' do
74
+ let(:query_params) do
75
+ {
76
+ start_date:'2022-11-2',
77
+ end_date:'2022-11-8',
78
+ campaign_id: '6061281'
79
+ }
80
+ end
81
+
82
+ before do
83
+ stub_request(:get, analytics_endpoint)
84
+ .with(headers: headers, query: query_params)
85
+ .to_return(status: 200, body: analytics_list.to_json)
86
+ end
87
+
88
+ it 'returns email marketing analytics data filtered by the query params' do
89
+ response = analytics_client.email_marketing(query_params)
90
+ expect(response).to eq(analytics_list)
91
+ end
92
+ end
93
+
94
+ context 'when the response contains errors' do
95
+ before do
96
+ stub_request(:get, analytics_endpoint)
97
+ .with(headers: headers)
98
+ .to_return(status: 400, body: { 'errors' => ['all errors'] }.to_json)
99
+ end
100
+
101
+ it 'calls raise_error on error handler' do
102
+ analytics_client.email_marketing
103
+ expect(error_handler).to have_received(:raise_error)
104
+ end
105
+ end
106
+ end
107
+ end
@@ -0,0 +1,165 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe RDStation::Emails do
4
+ let(:emails_client) do
5
+ described_class.new(authorization: RDStation::Authorization.new(access_token: 'access_token'))
6
+ end
7
+
8
+ let(:emails_endpoint) { 'https://api.rd.services/platform/emails/' }
9
+
10
+ let(:headers) do
11
+ {
12
+ Authorization: 'Bearer access_token',
13
+ 'Content-Type': 'application/json'
14
+ }
15
+ end
16
+
17
+ let(:error_handler) do
18
+ instance_double(RDStation::ErrorHandler, raise_error: 'mock raised errors')
19
+ end
20
+
21
+ before do
22
+ allow(RDStation::ErrorHandler).to receive(:new).and_return(error_handler)
23
+ end
24
+
25
+ describe '#all' do
26
+ let(:emails_list) do
27
+ {
28
+ items: [
29
+ {
30
+ id: 123,
31
+ name: 'Marketing email',
32
+ created_at: '2017-11-21T20:00:00-02:00',
33
+ updated_at: '2017-11-21T20:00:00-02:00',
34
+ send_at: '2017-11-21T20:00:00-02:00',
35
+ leads_count: 55_000,
36
+ status: 'FINISHED',
37
+ type: 'email_model',
38
+ is_predictive_sending: false,
39
+ sending_is_imminent: false,
40
+ behavior_score_info: {
41
+ disengaged: false,
42
+ engaged: false,
43
+ indeterminate: false
44
+ },
45
+ campaign_id: 123,
46
+ component_template_id: 123
47
+ }
48
+ ],
49
+ total: 1
50
+ }.to_json
51
+ end
52
+
53
+ it 'calls retryable_request' do
54
+ expect(emails_client).to receive(:retryable_request)
55
+ emails_client.all
56
+ end
57
+
58
+ context 'when the request is successful' do
59
+ before do
60
+ stub_request(:get, emails_endpoint)
61
+ .with(headers: headers)
62
+ .to_return(status: 200, body: emails_list.to_json)
63
+ end
64
+
65
+ it 'returns all emails' do
66
+ response = emails_client.all
67
+ expect(response).to eq(emails_list)
68
+ end
69
+ end
70
+
71
+ context 'when the request contains query params' do
72
+ let(:query_params) do
73
+ {
74
+ page: 1,
75
+ page_size: 10,
76
+ query: 'Test',
77
+ ids: '123, 456',
78
+ types: 'CAMPAIGN_EMAIL'
79
+ }
80
+ end
81
+
82
+ before do
83
+ stub_request(:get, emails_endpoint)
84
+ .with(headers: headers, query: query_params)
85
+ .to_return(status: 200, body: emails_list.to_json)
86
+ end
87
+
88
+ it 'returns emails filtered by the query params' do
89
+ response = emails_client.all(query_params)
90
+ expect(response).to eq(emails_list)
91
+ end
92
+ end
93
+
94
+ context 'when the response contains errors' do
95
+ before do
96
+ stub_request(:get, emails_endpoint)
97
+ .with(headers: headers)
98
+ .to_return(status: 400, body: { 'errors' => ['all errors'] }.to_json)
99
+ end
100
+
101
+ it 'calls raise_error on error handler' do
102
+ emails_client.all
103
+ expect(error_handler).to have_received(:raise_error)
104
+ end
105
+ end
106
+ end
107
+
108
+ describe '#by_id' do
109
+ let(:id) { 123 }
110
+ let(:emails_endpoint_by_id) { emails_endpoint + id.to_s }
111
+
112
+ it 'calls retryable_request' do
113
+ expect(emails_client).to receive(:retryable_request)
114
+ emails_client.by_id(id)
115
+ end
116
+
117
+ context 'when the request is successful' do
118
+ let(:email) do
119
+ {
120
+ id: 123,
121
+ name: 'Marketing email',
122
+ created_at: '2017-11-21T20:00:00-02:00',
123
+ updated_at: '2017-11-21T20:00:00-02:00',
124
+ send_at: '2017-11-21T20:00:00-02:00',
125
+ leads_count: 55_000,
126
+ status: 'FINISHED',
127
+ type: 'email_model',
128
+ is_predictive_sending: false,
129
+ sending_is_imminent: false,
130
+ behavior_score_info: {
131
+ disengaged: false,
132
+ engaged: false,
133
+ indeterminate: false
134
+ },
135
+ campaign_id: 123,
136
+ component_template_id: 123
137
+ }.to_json
138
+ end
139
+
140
+ before do
141
+ stub_request(:get, emails_endpoint_by_id)
142
+ .with(headers: headers)
143
+ .to_return(status: 200, body: email.to_json)
144
+ end
145
+
146
+ it 'returns the email' do
147
+ response = emails_client.by_id(id)
148
+ expect(response).to eq(email)
149
+ end
150
+ end
151
+
152
+ context 'when the response contains errors' do
153
+ before do
154
+ stub_request(:get, emails_endpoint_by_id)
155
+ .with(headers: headers)
156
+ .to_return(status: 400, body: { 'errors' => ['all errors'] }.to_json)
157
+ end
158
+
159
+ it 'calls raise_error on error handler' do
160
+ emails_client.by_id(id)
161
+ expect(error_handler).to have_received(:raise_error)
162
+ end
163
+ end
164
+ end
165
+ end
@@ -9,6 +9,12 @@ RSpec.describe RDStation::Fields do
9
9
  end
10
10
  end
11
11
 
12
+ after do
13
+ RDStation.configure do |config|
14
+ config.base_host = 'https://api.rd.services'
15
+ end
16
+ end
17
+
12
18
  let(:valid_access_token) { 'valid_access_token' }
13
19
  let(:rdstation_fields_with_valid_token) do
14
20
  described_class.new(authorization: RDStation::Authorization.new(access_token: valid_access_token))
@@ -0,0 +1,138 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe RDStation::Segmentations do
4
+ let(:segmentations_client) do
5
+ described_class.new(authorization: RDStation::Authorization.new(access_token: 'access_token'))
6
+ end
7
+
8
+ let(:segmentations_endpoint) { 'https://api.rd.services/platform/segmentations/' }
9
+
10
+ let(:headers) do
11
+ {
12
+ Authorization: 'Bearer access_token',
13
+ 'Content-Type': 'application/json'
14
+ }
15
+ end
16
+
17
+ let(:error_handler) do
18
+ instance_double(RDStation::ErrorHandler, raise_error: 'mock raised errors')
19
+ end
20
+
21
+ before do
22
+ allow(RDStation::ErrorHandler).to receive(:new).and_return(error_handler)
23
+ end
24
+
25
+ describe '#all' do
26
+ it 'calls retryable_request' do
27
+ expect(segmentations_client).to receive(:retryable_request)
28
+ segmentations_client.all
29
+ end
30
+
31
+ context 'when the request is successful' do
32
+ let(:segmentations) do
33
+ {
34
+ segmentations: [
35
+ {
36
+ id: 1,
37
+ name: 'Todos os contatos da base',
38
+ standard: true,
39
+ created_at: '2021-09-24T14:14:04.510-03:00',
40
+ updated_at: '2021-09-24T14:14:04.510-03:00',
41
+ process_status: 'processed',
42
+ links: [
43
+ {
44
+ rel: 'SELF',
45
+ href: 'https://api.rd.services/platform/segmentations/1/contacts',
46
+ media: 'application/json',
47
+ type: 'GET'
48
+ }
49
+ ]
50
+ }
51
+ ]
52
+ }.to_json
53
+ end
54
+
55
+ before do
56
+ stub_request(:get, segmentations_endpoint)
57
+ .with(headers: headers)
58
+ .to_return(status: 200, body: segmentations.to_json)
59
+ end
60
+
61
+ it 'returns all segmentations' do
62
+ response = segmentations_client.all
63
+ expect(response).to eq(segmentations)
64
+ end
65
+ end
66
+
67
+ context 'when the response contains errors' do
68
+ before do
69
+ stub_request(:get, segmentations_endpoint)
70
+ .with(headers: headers)
71
+ .to_return(status: 400, body: { 'errors' => ['all errors'] }.to_json)
72
+ end
73
+
74
+ it 'calls raise_error on error handler' do
75
+ segmentations_client.all
76
+ expect(error_handler).to have_received(:raise_error)
77
+ end
78
+ end
79
+ end
80
+
81
+ describe '#contacts' do
82
+ let(:segmentation_id) { 123 }
83
+ let(:segmentations_endpoint_by_contacts) { segmentations_endpoint + "#{segmentation_id}/contacts" }
84
+
85
+ it 'calls retryable_request' do
86
+ expect(segmentations_client).to receive(:retryable_request)
87
+ segmentations_client.contacts(segmentation_id)
88
+ end
89
+
90
+ context 'when the request is successful' do
91
+ let(:contact) do
92
+ {
93
+ contacts: [
94
+ {
95
+ uuid: '5408c5a3-4711-4f2e-8d0b-13407a3e30f3',
96
+ name: 'Lead Example 1',
97
+ email: 'leadexample1@example.com',
98
+ last_conversion_date: '2021-09-13T15:01:06.325-03:00',
99
+ created_at: '2021-09-13T15:01:06.325-03:00',
100
+ links: [
101
+ {
102
+ rel: 'SELF',
103
+ href: 'https://api.rd.services/platform/contacts/5408c5a3-4711-4f2e-8d0b-13407a3e30f3',
104
+ media: 'application/json',
105
+ type: 'GET'
106
+ }
107
+ ]
108
+ }
109
+ ]
110
+ }.to_json
111
+ end
112
+
113
+ before do
114
+ stub_request(:get, segmentations_endpoint_by_contacts)
115
+ .with(headers: headers)
116
+ .to_return(status: 200, body: contact.to_json)
117
+ end
118
+
119
+ it 'returns the contact' do
120
+ response = segmentations_client.contacts(segmentation_id)
121
+ expect(response).to eq(contact)
122
+ end
123
+ end
124
+
125
+ context 'when the response contains errors' do
126
+ before do
127
+ stub_request(:get, segmentations_endpoint_by_contacts)
128
+ .with(headers: headers)
129
+ .to_return(status: 400, body: { 'errors' => ['all errors'] }.to_json)
130
+ end
131
+
132
+ it 'calls raise_error on error handler' do
133
+ segmentations_client.contacts(segmentation_id)
134
+ expect(error_handler).to have_received(:raise_error)
135
+ end
136
+ end
137
+ end
138
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rdstation-ruby-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.3
4
+ version: 2.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paulo L F Casaretto
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-04 00:00:00.000000000 Z
11
+ date: 2022-11-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -141,12 +141,14 @@ files:
141
141
  - Rakefile
142
142
  - lib/rdstation-ruby-client.rb
143
143
  - lib/rdstation.rb
144
+ - lib/rdstation/analytics.rb
144
145
  - lib/rdstation/api_response.rb
145
146
  - lib/rdstation/authentication.rb
146
147
  - lib/rdstation/authorization.rb
147
148
  - lib/rdstation/builder/field.rb
148
149
  - lib/rdstation/client.rb
149
150
  - lib/rdstation/contacts.rb
151
+ - lib/rdstation/emails.rb
150
152
  - lib/rdstation/error.rb
151
153
  - lib/rdstation/error/format.rb
152
154
  - lib/rdstation/error/formatter.rb
@@ -162,16 +164,19 @@ files:
162
164
  - lib/rdstation/events.rb
163
165
  - lib/rdstation/fields.rb
164
166
  - lib/rdstation/retryable_request.rb
167
+ - lib/rdstation/segmentations.rb
165
168
  - lib/rdstation/version.rb
166
169
  - lib/rdstation/webhooks.rb
167
170
  - rdstation-ruby-client.gemspec
168
171
  - spec/lib/rdstation-ruby-client_spec.rb
172
+ - spec/lib/rdstation/analytics_spec.rb
169
173
  - spec/lib/rdstation/api_response_spec.rb
170
174
  - spec/lib/rdstation/authentication_spec.rb
171
175
  - spec/lib/rdstation/authorization_spec.rb
172
176
  - spec/lib/rdstation/builder/field_spec.rb
173
177
  - spec/lib/rdstation/client_spec.rb
174
178
  - spec/lib/rdstation/contacts_spec.rb
179
+ - spec/lib/rdstation/emails_spec.rb
175
180
  - spec/lib/rdstation/error/format_spec.rb
176
181
  - spec/lib/rdstation/error/formatter_spec.rb
177
182
  - spec/lib/rdstation/error_handler/conflicting_field_spec.rb
@@ -186,6 +191,7 @@ files:
186
191
  - spec/lib/rdstation/events_spec.rb
187
192
  - spec/lib/rdstation/fields_spec.rb
188
193
  - spec/lib/rdstation/retryable_request_spec.rb
194
+ - spec/lib/rdstation/segmentations_spec.rb
189
195
  - spec/lib/rdstation/webhooks_spec.rb
190
196
  - spec/lib/rdstation_spec.rb
191
197
  - spec/spec_helper.rb
@@ -214,12 +220,14 @@ specification_version: 4
214
220
  summary: Ruby API wrapper for RD Station
215
221
  test_files:
216
222
  - spec/lib/rdstation-ruby-client_spec.rb
223
+ - spec/lib/rdstation/analytics_spec.rb
217
224
  - spec/lib/rdstation/api_response_spec.rb
218
225
  - spec/lib/rdstation/authentication_spec.rb
219
226
  - spec/lib/rdstation/authorization_spec.rb
220
227
  - spec/lib/rdstation/builder/field_spec.rb
221
228
  - spec/lib/rdstation/client_spec.rb
222
229
  - spec/lib/rdstation/contacts_spec.rb
230
+ - spec/lib/rdstation/emails_spec.rb
223
231
  - spec/lib/rdstation/error/format_spec.rb
224
232
  - spec/lib/rdstation/error/formatter_spec.rb
225
233
  - spec/lib/rdstation/error_handler/conflicting_field_spec.rb
@@ -234,6 +242,7 @@ test_files:
234
242
  - spec/lib/rdstation/events_spec.rb
235
243
  - spec/lib/rdstation/fields_spec.rb
236
244
  - spec/lib/rdstation/retryable_request_spec.rb
245
+ - spec/lib/rdstation/segmentations_spec.rb
237
246
  - spec/lib/rdstation/webhooks_spec.rb
238
247
  - spec/lib/rdstation_spec.rb
239
248
  - spec/spec_helper.rb