customerio 3.0.0 → 3.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/main.yml +30 -0
- data/CHANGELOG.markdown +24 -0
- data/README.md +6 -5
- data/lib/customerio.rb +1 -0
- data/lib/customerio/api.rb +4 -3
- data/lib/customerio/client.rb +4 -3
- data/lib/customerio/regions.rb +11 -0
- data/lib/customerio/version.rb +1 -1
- data/spec/api_client_spec.rb +42 -0
- data/spec/client_spec.rb +44 -0
- data/spec/spec_helper.rb +2 -2
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 48f0d7c8bb61994c6bee0e1b846772f7ab304913182a1d1ac87f52a6e4e9beff
|
4
|
+
data.tar.gz: e8df14b0db35439d08687a2ff61161d5d6bfc3a9f8ae6df71ba9c1cd7d4c91e9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7fff0a46a46e90a65f39694abf8713abe1a5e9edd0f388d26fea80d305332ed8425998397822899a9b66f27e77fb98e1051cd332842c73cd20da0a7ad7380a9d
|
7
|
+
data.tar.gz: 1eab0fb3fe94024954b04f77c34029aa2b9a9b6a089d5d6aa86f9070101e0bf13e7019725e8031fcdd7af0ddf76532e4b2b85b6dfe7e482ecb5f407b339df381
|
@@ -0,0 +1,30 @@
|
|
1
|
+
name: ruby_ci
|
2
|
+
|
3
|
+
on: [push]
|
4
|
+
|
5
|
+
jobs:
|
6
|
+
build:
|
7
|
+
strategy:
|
8
|
+
matrix:
|
9
|
+
ruby: ['2.5', '2.6', '2.7']
|
10
|
+
runs-on: ubuntu-latest
|
11
|
+
steps:
|
12
|
+
- uses: actions/checkout@v2
|
13
|
+
- name: set up ruby
|
14
|
+
uses: actions/setup-ruby@v1
|
15
|
+
with:
|
16
|
+
ruby-version: ${{ matrix.ruby }}
|
17
|
+
- name: install bundle
|
18
|
+
run: |
|
19
|
+
sudo apt-get -yqq install libpq-dev
|
20
|
+
gem install bundler
|
21
|
+
- name: Cache dependencies
|
22
|
+
uses: actions/cache@v2
|
23
|
+
with:
|
24
|
+
path: vendor/bundle
|
25
|
+
key: customerio-${{ matrix.ruby }}-${{ hashFiles('customerio.gemspec') }}
|
26
|
+
restore-keys: |
|
27
|
+
customerio-${{ matrix.ruby }}-
|
28
|
+
- name: Install dependencies
|
29
|
+
run: bundle install --path vendor/bundle
|
30
|
+
- run: bundle exec rspec
|
data/CHANGELOG.markdown
CHANGED
@@ -1,3 +1,27 @@
|
|
1
|
+
|
2
|
+
## Customerio 3.1.0 - March 25, 2021
|
3
|
+
### Added
|
4
|
+
- Support for EU region
|
5
|
+
|
6
|
+
### Removed
|
7
|
+
### Changed
|
8
|
+
- `Customerio::Client` and `CustomerIO::APIClient` have a new parameter `region` that can be set to either `Customerio::Regions::EU` or `Customerio::Regions::US` (defaults to `Customerio::Regions::US`)
|
9
|
+
|
10
|
+
## Customerio 3.0.0 - Dec 2, 2020
|
11
|
+
|
12
|
+
### Added
|
13
|
+
- Support for the Transactional API
|
14
|
+
|
15
|
+
### Removed
|
16
|
+
- `add_to_segment` and `remove_from_segment` methods
|
17
|
+
- Support for non-JSON data
|
18
|
+
|
19
|
+
### Changed
|
20
|
+
- IDs in the URLs are now escaped.
|
21
|
+
- Improved validations for data that's passed in.
|
22
|
+
- Earlier, if you passed in an event name without a customer ID to the `track` method, we would create an anonymous event. That is now removed. To create an anonymous event, use the `anonymous_track` method.
|
23
|
+
|
24
|
+
|
1
25
|
## Customerio 3.0.0 - Dec 2, 2020
|
2
26
|
|
3
27
|
### Added
|
data/README.md
CHANGED
@@ -42,15 +42,16 @@ You'll be able to integrate **fully** with [Customer.io](http://customer.io) wit
|
|
42
42
|
|
43
43
|
### Setup
|
44
44
|
|
45
|
-
Create an instance of the client with your [
|
46
|
-
which can be found on the [customer.io integration screen](https://fly.customer.io/account/customerio_integration).
|
45
|
+
Create an instance of the client with your [Customer.io credentials](https://fly.customer.io/settings/api_credentials).
|
47
46
|
|
48
47
|
If you're using Rails, create an initializer `config/initializers/customerio.rb`:
|
49
48
|
|
50
49
|
```ruby
|
51
|
-
$customerio = Customerio::Client.new("YOUR SITE ID", "YOUR API SECRET KEY")
|
50
|
+
$customerio = Customerio::Client.new("YOUR SITE ID", "YOUR API SECRET KEY", region: Customerio::Regions::US)
|
52
51
|
```
|
53
52
|
|
53
|
+
`region` is optional and takes one of two values—`US` or `EU`. If you do not specify your region, we assume that your account is based in the US (`US`). If your account is based in the EU and you do not provide the correct region (`EU`), we'll route requests to our EU data centers accordingly, however this may cause data to be logged in the US.
|
54
|
+
|
54
55
|
### Identify logged in customers
|
55
56
|
|
56
57
|
Tracking data of logged in customers is a key part of [Customer.io](http://customer.io). In order to
|
@@ -121,7 +122,7 @@ encourage your customers to perform an action.
|
|
121
122
|
$customerio.track(5, "purchase", :type => "socks", :price => "13.99")
|
122
123
|
```
|
123
124
|
|
124
|
-
**Note:** If you
|
125
|
+
**Note:** If you want to track events which occurred in the past, you can include a `timestamp` attribute
|
125
126
|
(in seconds since the epoch), and we'll use that as the date the event occurred.
|
126
127
|
|
127
128
|
```ruby
|
@@ -195,7 +196,7 @@ Use `send_email` referencing your request to send a transactional message. [Lear
|
|
195
196
|
```ruby
|
196
197
|
require "customerio"
|
197
198
|
|
198
|
-
client = Customerio::APIClient.new("your API key")
|
199
|
+
client = Customerio::APIClient.new("your API key", region: Customerio::Regions::US)
|
199
200
|
|
200
201
|
request = Customerio::SendEmailRequest.new(
|
201
202
|
to: "person@example.com",
|
data/lib/customerio.rb
CHANGED
data/lib/customerio/api.rb
CHANGED
@@ -3,10 +3,11 @@ require 'multi_json'
|
|
3
3
|
|
4
4
|
module Customerio
|
5
5
|
class APIClient
|
6
|
-
DEFAULT_API_URL = 'https://api.customer.io'
|
7
|
-
|
8
6
|
def initialize(app_key, options = {})
|
9
|
-
options[:
|
7
|
+
options[:region] = Customerio::Regions::US if options[:region].nil?
|
8
|
+
raise "region must be an instance of Customerio::Regions::Region" unless options[:region].is_a?(Customerio::Regions::Region)
|
9
|
+
|
10
|
+
options[:url] = options[:region].api_url if options[:url].nil? || options[:url].empty?
|
10
11
|
@client = Customerio::BaseClient.new({ app_key: app_key }, options)
|
11
12
|
end
|
12
13
|
|
data/lib/customerio/client.rb
CHANGED
@@ -2,13 +2,14 @@ require "addressable/uri"
|
|
2
2
|
|
3
3
|
module Customerio
|
4
4
|
class Client
|
5
|
-
DEFAULT_TRACK_URL = 'https://track.customer.io'
|
6
|
-
|
7
5
|
class MissingIdAttributeError < RuntimeError; end
|
8
6
|
class ParamError < RuntimeError; end
|
9
7
|
|
10
8
|
def initialize(site_id, api_key, options = {})
|
11
|
-
options[:
|
9
|
+
options[:region] = Customerio::Regions::US if options[:region].nil?
|
10
|
+
raise "region must be an instance of Customerio::Regions::Region" unless options[:region].is_a?(Customerio::Regions::Region)
|
11
|
+
|
12
|
+
options[:url] = options[:region].track_url if options[:url].nil? || options[:url].empty?
|
12
13
|
@client = Customerio::BaseClient.new({ site_id: site_id, api_key: api_key }, options)
|
13
14
|
end
|
14
15
|
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require 'multi_json'
|
3
|
+
|
4
|
+
module Customerio
|
5
|
+
module Regions
|
6
|
+
Region = Struct.new(:track_url, :api_url)
|
7
|
+
|
8
|
+
US = Customerio::Regions::Region.new('https://track.customer.io', 'https://api.customer.io').freeze
|
9
|
+
EU = Customerio::Regions::Region.new('https://track-eu.customer.io', 'https://api-eu.customer.io').freeze
|
10
|
+
end
|
11
|
+
end
|
data/lib/customerio/version.rb
CHANGED
data/spec/api_client_spec.rb
CHANGED
@@ -21,6 +21,48 @@ describe Customerio::APIClient do
|
|
21
21
|
MultiJson.dump(data)
|
22
22
|
end
|
23
23
|
|
24
|
+
it "the base client is initialised with the correct values when no region is passed in" do
|
25
|
+
app_key = "appkey"
|
26
|
+
|
27
|
+
expect(Customerio::BaseClient).to(
|
28
|
+
receive(:new)
|
29
|
+
.with(
|
30
|
+
{ app_key: app_key },
|
31
|
+
{
|
32
|
+
region: Customerio::Regions::US,
|
33
|
+
url: Customerio::Regions::US.api_url
|
34
|
+
}
|
35
|
+
)
|
36
|
+
)
|
37
|
+
|
38
|
+
client = Customerio::APIClient.new(app_key)
|
39
|
+
end
|
40
|
+
|
41
|
+
it "raises an error when an incorrect region is passed in" do
|
42
|
+
expect {
|
43
|
+
Customerio::APIClient.new("appkey", region: :au)
|
44
|
+
}.to raise_error /region must be an instance of Customerio::Regions::Region/
|
45
|
+
end
|
46
|
+
|
47
|
+
[Customerio::Regions::US, Customerio::Regions::EU].each do |region|
|
48
|
+
it "the base client is initialised with the correct values when the region \"#{region}\" is passed in" do
|
49
|
+
app_key = "appkey"
|
50
|
+
|
51
|
+
expect(Customerio::BaseClient).to(
|
52
|
+
receive(:new)
|
53
|
+
.with(
|
54
|
+
{ app_key: app_key },
|
55
|
+
{
|
56
|
+
region: region,
|
57
|
+
url: region.api_url
|
58
|
+
}
|
59
|
+
)
|
60
|
+
)
|
61
|
+
|
62
|
+
client = Customerio::APIClient.new(app_key, { region: region })
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
24
66
|
describe "#send_email" do
|
25
67
|
it "sends a POST request to the /api/send/email path" do
|
26
68
|
req = Customerio::SendEmailRequest.new(
|
data/spec/client_spec.rb
CHANGED
@@ -22,6 +22,50 @@ describe Customerio::Client do
|
|
22
22
|
MultiJson.dump(data)
|
23
23
|
end
|
24
24
|
|
25
|
+
it "the base client is initialised with the correct values when no region is passed in" do
|
26
|
+
site_id = "SITE_ID"
|
27
|
+
api_key = "API_KEY"
|
28
|
+
|
29
|
+
expect(Customerio::BaseClient).to(
|
30
|
+
receive(:new)
|
31
|
+
.with(
|
32
|
+
{ site_id: site_id, api_key: api_key },
|
33
|
+
{
|
34
|
+
region: Customerio::Regions::US,
|
35
|
+
url: Customerio::Regions::US.track_url
|
36
|
+
}
|
37
|
+
)
|
38
|
+
)
|
39
|
+
|
40
|
+
client = Customerio::Client.new(site_id, api_key)
|
41
|
+
end
|
42
|
+
|
43
|
+
it "raises an error when an incorrect region is passed in" do
|
44
|
+
expect {
|
45
|
+
Customerio::Client.new("siteid", "apikey", region: :au)
|
46
|
+
}.to raise_error /region must be an instance of Customerio::Regions::Region/
|
47
|
+
end
|
48
|
+
|
49
|
+
[Customerio::Regions::US, Customerio::Regions::EU].each do |region|
|
50
|
+
it "the base client is initialised with the correct values when the region \"#{region}\" is passed in" do
|
51
|
+
site_id = "SITE_ID"
|
52
|
+
api_key = "API_KEY"
|
53
|
+
|
54
|
+
expect(Customerio::BaseClient).to(
|
55
|
+
receive(:new)
|
56
|
+
.with(
|
57
|
+
{ site_id: site_id, api_key: api_key },
|
58
|
+
{
|
59
|
+
region: region,
|
60
|
+
url: region.track_url
|
61
|
+
}
|
62
|
+
)
|
63
|
+
)
|
64
|
+
|
65
|
+
client = Customerio::Client.new(site_id, api_key, { region: region })
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
25
69
|
it "uses json by default" do
|
26
70
|
body = { id: 5, name: "Bob" }
|
27
71
|
client = Customerio::Client.new("SITE_ID", "API_KEY")
|
data/spec/spec_helper.rb
CHANGED
@@ -10,6 +10,6 @@ require 'rspec'
|
|
10
10
|
require 'webmock/rspec'
|
11
11
|
|
12
12
|
RSpec.configure do |config|
|
13
|
-
config.expect_with(:rspec) { |c| c.syntax = :should }
|
14
|
-
config.mock_with(:rspec) { |c| c.syntax = :should }
|
13
|
+
config.expect_with(:rspec) { |c| c.syntax = [:should, :expect] }
|
14
|
+
config.mock_with(:rspec) { |c| c.syntax = [:should, :expect] }
|
15
15
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: customerio
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Allison
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-03-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: multi_json
|
@@ -102,6 +102,7 @@ extensions: []
|
|
102
102
|
extra_rdoc_files: []
|
103
103
|
files:
|
104
104
|
- ".circleci/config.yml"
|
105
|
+
- ".github/workflows/main.yml"
|
105
106
|
- ".gitignore"
|
106
107
|
- CHANGELOG.markdown
|
107
108
|
- Gemfile
|
@@ -114,6 +115,7 @@ files:
|
|
114
115
|
- lib/customerio/base_client.rb
|
115
116
|
- lib/customerio/client.rb
|
116
117
|
- lib/customerio/param_encoder.rb
|
118
|
+
- lib/customerio/regions.rb
|
117
119
|
- lib/customerio/requests/send_email_request.rb
|
118
120
|
- lib/customerio/version.rb
|
119
121
|
- spec/api_client_spec.rb
|
@@ -139,7 +141,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
139
141
|
- !ruby/object:Gem::Version
|
140
142
|
version: '0'
|
141
143
|
requirements: []
|
142
|
-
rubygems_version: 3.
|
144
|
+
rubygems_version: 3.2.3
|
143
145
|
signing_key:
|
144
146
|
specification_version: 4
|
145
147
|
summary: A ruby client for the Customer.io event API.
|