rdstation-ruby-client 2.6.0 → 2.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: eeaf9150717e1481fce77233ad549b2cd9a7d573f7c9f1e180a2c228c05ef374
4
- data.tar.gz: 79c04cb05e857cadb56d6b201ac12e22c30c35920fb1ddf473ea30700168c4fa
3
+ metadata.gz: f95c666afffacdbac2a2903c5b8909999bb24bba716f89d4646ee19c165bc262
4
+ data.tar.gz: 1beded8e2c402f5bb89523e3e20d5ee8ed485f6687819317f558f958bdd90353
5
5
  SHA512:
6
- metadata.gz: e7e70fb319205bc1ae61cb7567e82f6c7dae6050fedb403689589ea1b19dc9ca8d8699daa0287bb38f12797c41cb6bfbe20bf832989f2020c70673e4e9f655d9
7
- data.tar.gz: 4ab3bc836989453fd41cedebd1fc3aea0d6720fb390b62be913af5029e619c61484cf8c29f20c5228f050304d7cb4dcb641404fb899cdcd1878c0028f1b42fa4
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/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
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
+
1
15
  ## 2.6.0
2
16
 
3
17
  ### Additions
data/README.md CHANGED
@@ -18,7 +18,8 @@ Upgrading? Check the [migration guide](#Migration-guide) before bumping to a new
18
18
  6. [Webhooks](#Webhooks)
19
19
  7. [Emails](#Emails)
20
20
  8. [Segmentations](#Segmentations)
21
- 9. [Errors](#Errors)
21
+ 9. [Analytics](#Analytics)
22
+ 10. [Errors](#Errors)
22
23
  3. [Changelog](#Changelog)
23
24
  4. [Migration guide](#Migration-guide)
24
25
  1. [Upgrading from 1.2.x to 2.0.0](#Upgrading-from-1.2.x-to-2.0.0)
@@ -343,7 +344,17 @@ client.segmentations.all
343
344
  client = RDStation::Client.new(access_token: 'access_token', refresh_token: 'refresh_token')
344
345
  client.segmentations.contacts(segmentation_id)
345
346
  ```
347
+ ### Analytics
348
+ Endpoints to [Analytics](https://developers.rdstation.com/reference/get_platform-analytics-emails) information in your RD Station account.
346
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
+ ```
347
358
  ### Errors
348
359
 
349
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
@@ -32,6 +32,10 @@ module RDStation
32
32
  @emails ||= RDStation::Emails.new(authorization: @authorization)
33
33
  end
34
34
 
35
+ def analytics
36
+ @analytics ||= RDStation::Analytics.new(authorization: @authorization)
37
+ end
38
+
35
39
  private
36
40
 
37
41
  def warn_deprecation
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RDStation
4
- VERSION = '2.6.0'
4
+ VERSION = '2.7.0'
5
5
  end
@@ -15,6 +15,7 @@ require 'rdstation/fields'
15
15
  require 'rdstation/webhooks'
16
16
  require 'rdstation/segmentations'
17
17
  require 'rdstation/emails'
18
+ require 'rdstation/analytics'
18
19
 
19
20
  # Error handling
20
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
@@ -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))
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.6.0
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-13 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,6 +141,7 @@ 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
@@ -168,6 +169,7 @@ files:
168
169
  - lib/rdstation/webhooks.rb
169
170
  - rdstation-ruby-client.gemspec
170
171
  - spec/lib/rdstation-ruby-client_spec.rb
172
+ - spec/lib/rdstation/analytics_spec.rb
171
173
  - spec/lib/rdstation/api_response_spec.rb
172
174
  - spec/lib/rdstation/authentication_spec.rb
173
175
  - spec/lib/rdstation/authorization_spec.rb
@@ -218,6 +220,7 @@ specification_version: 4
218
220
  summary: Ruby API wrapper for RD Station
219
221
  test_files:
220
222
  - spec/lib/rdstation-ruby-client_spec.rb
223
+ - spec/lib/rdstation/analytics_spec.rb
221
224
  - spec/lib/rdstation/api_response_spec.rb
222
225
  - spec/lib/rdstation/authentication_spec.rb
223
226
  - spec/lib/rdstation/authorization_spec.rb