klaviyo 1.0.0 → 1.2.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
- SHA1:
3
- metadata.gz: b500c9a9b23a831e8dbd4973b10e86420af64d70
4
- data.tar.gz: 75585569e42545281d0622a40c5f888f261d6622
2
+ SHA256:
3
+ metadata.gz: 4761ff7c9edac6dd8dec7efd826f0b9a903022ced70b8938d9db3adfdc9f16ac
4
+ data.tar.gz: f9bca9ccb221bf7a30387a60e4fde3f6adba9e814702266fc0b869c5c470046b
5
5
  SHA512:
6
- metadata.gz: eecb6c11c4b4a893271f914db129724362ae6d74d5950ef79b5aa90e83939ea6c937af40122768b2e1f409640cef72587e19bfc3af05b1fda9dc33c4b46c3c20
7
- data.tar.gz: 98d0566c1c134ea9ab32c0968927019d0231532aeeb72a86e432aeef60a4314f54dd12450269d9dc0762a373feef0b15dfdba8a68b2ef387fe8ce29c9576ff39
6
+ metadata.gz: 0da39baf09b301c7df78833d2a9d62bc8f72b2512c06b4c67ca247a863f72d4563512915037ad80aff05168cb41d3830dbec56b3e2bda3605d7a8f1b7826baf4
7
+ data.tar.gz: d555098395599b4e1b9c725f815229949e0c208c00d0b387fcc00ac3071763d5aef830e3cf5316f71e7f84900e950bad27757370ab5a0b810f07a05e519541e0
data/klaviyo.gemspec CHANGED
@@ -2,8 +2,8 @@ files = ['klaviyo.gemspec', '{lib}/**/*'].map {|f| Dir[f]}.flatten
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'klaviyo'
5
- s.version = '1.0.0'
6
- s.date = '2014-09-06'
5
+ s.version = '1.2.0'
6
+ s.date = '2020-09-28'
7
7
  s.summary = 'You heard us, a Ruby wrapper for the Klaviyo API'
8
8
  s.description = 'Ruby wrapper for the Klaviyo API'
9
9
  s.authors = ['Klaviyo Team']
@@ -15,4 +15,4 @@ Gem::Specification.new do |s|
15
15
  s.add_dependency 'json'
16
16
  s.add_dependency 'rack'
17
17
  s.add_dependency 'escape'
18
- end
18
+ end
@@ -4,21 +4,24 @@ require 'json'
4
4
 
5
5
  module Klaviyo
6
6
  class KlaviyoError < StandardError; end
7
-
7
+
8
8
  class Client
9
- def initialize(api_key, url = 'http://a.klaviyo.com/')
9
+ VERSION = '1.2.0'
10
+ KL_USER_AGENT = "Ruby_Klaviyo/#{VERSION}"
11
+
12
+ def initialize(api_key, url = 'https://a.klaviyo.com/')
10
13
  @api_key = api_key
11
14
  @url = url
12
15
  end
13
-
16
+
14
17
  def track(event, kwargs = {})
15
18
  defaults = {:id => nil, :email => nil, :properties => {}, :customer_properties => {}, :time => nil}
16
19
  kwargs = defaults.merge(kwargs)
17
-
20
+
18
21
  if kwargs[:email].to_s.empty? and kwargs[:id].to_s.empty?
19
22
  raise KlaviyoError.new('You must identify a user by email or ID')
20
23
  end
21
-
24
+
22
25
  customer_properties = kwargs[:customer_properties]
23
26
  customer_properties[:email] = kwargs[:email] unless kwargs[:email].to_s.empty?
24
27
  customer_properties[:id] = kwargs[:id] unless kwargs[:id].to_s.empty?
@@ -31,24 +34,24 @@ module Klaviyo
31
34
  :ip => ''
32
35
  }
33
36
  params[:time] = kwargs[:time].to_time.to_i if kwargs[:time]
34
-
37
+
35
38
  params = build_params(params)
36
- request('crm/api/track', params)
39
+ request('api/track', params)
37
40
  end
38
-
41
+
39
42
  def track_once(event, opts = {})
40
43
  opts.update('__track_once__' => true)
41
44
  track(event, opts)
42
45
  end
43
-
46
+
44
47
  def identify(kwargs = {})
45
48
  defaults = {:id => nil, :email => nil, :properties => {}}
46
49
  kwargs = defaults.merge(kwargs)
47
-
50
+
48
51
  if kwargs[:email].to_s.empty? and kwargs[:id].to_s.empty?
49
52
  raise KlaviyoError.new('You must identify a user by email or ID')
50
53
  end
51
-
54
+
52
55
  properties = kwargs[:properties]
53
56
  properties[:email] = kwargs[:email] unless kwargs[:email].to_s.empty?
54
57
  properties[:id] = kwargs[:id] unless kwargs[:id].to_s.empty?
@@ -57,18 +60,18 @@ module Klaviyo
57
60
  :token => @api_key,
58
61
  :properties => properties
59
62
  })
60
- request('crm/api/identify', params)
63
+ request('api/identify', params)
61
64
  end
62
65
 
63
66
  private
64
-
67
+
65
68
  def build_params(params)
66
- 'data=' + Base64.encode64(JSON.generate(params)).gsub(/\n/,'')
69
+ "data=#{CGI.escape Base64.encode64(JSON.generate(params)).gsub(/\n/,'')}"
67
70
  end
68
-
71
+
69
72
  def request(path, params)
70
- url = @url + path + '?' + params
71
- open(url).read == '1' ? true : false
73
+ url = "#{@url}#{path}?#{params}"
74
+ open(url, 'User-Agent' => KL_USER_AGENT).read == '1'
72
75
  end
73
76
  end
74
77
  end
data/lib/klaviyo.rb CHANGED
@@ -1 +1 @@
1
- require 'klaviyo/client'
1
+ require 'klaviyo/client'
data/lib/rack/klaviyo.rb CHANGED
@@ -55,7 +55,6 @@ module Rack
55
55
  <script text="text/javascript">
56
56
  var _learnq = _learnq || [];
57
57
  _learnq.push(['account', '#{@api_key}']);
58
-
59
58
  (function () {
60
59
  var b = document.createElement('script'); b.type = 'text/javascript'; b.async = true;
61
60
  b.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'a.klaviyo.com/media/js/analytics/analytics.js';
metadata CHANGED
@@ -1,55 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: klaviyo
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Klaviyo Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-06 00:00:00.000000000 Z
11
+ date: 2020-09-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rack
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: escape
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  description: Ruby wrapper for the Klaviyo API
@@ -59,8 +59,8 @@ extensions: []
59
59
  extra_rdoc_files: []
60
60
  files:
61
61
  - klaviyo.gemspec
62
- - lib/klaviyo/client.rb
63
62
  - lib/klaviyo.rb
63
+ - lib/klaviyo/client.rb
64
64
  - lib/rack/klaviyo.rb
65
65
  homepage: https://www.klaviyo.com/
66
66
  licenses: []
@@ -71,17 +71,16 @@ require_paths:
71
71
  - lib
72
72
  required_ruby_version: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - '>='
74
+ - - ">="
75
75
  - !ruby/object:Gem::Version
76
76
  version: '0'
77
77
  required_rubygems_version: !ruby/object:Gem::Requirement
78
78
  requirements:
79
- - - '>='
79
+ - - ">="
80
80
  - !ruby/object:Gem::Version
81
81
  version: '0'
82
82
  requirements: []
83
- rubyforge_project:
84
- rubygems_version: 2.0.14
83
+ rubygems_version: 3.0.3
85
84
  signing_key:
86
85
  specification_version: 4
87
86
  summary: You heard us, a Ruby wrapper for the Klaviyo API