klaviyo 1.0.0 → 1.2.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
- 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