tamber 0.1.12 → 0.2.2

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: ff938263efc3c5aa656aab523beb101c9de80e86
4
- data.tar.gz: d0c573e996b8f58c27d0e9ec47f189d2691d22ec
2
+ SHA256:
3
+ metadata.gz: f6874b17a7d9328f7791b912e6dd01d91c1eb86ce23b65b53ed7b1513ae311e2
4
+ data.tar.gz: 53473bb87d8a459214734df59185a85c4c49fb9ac994ed394c3a6710c11e5c31
5
5
  SHA512:
6
- metadata.gz: babeb332768806e4d7a7d55f6dd79ab74557d75325ca7203298533727fa38680871e5d7a9519e294d433757c467cd01f5998e40b5793cca3032eb24d2ded23a4
7
- data.tar.gz: 69712d840fef4413e9626e65453f9113bf5a6ac166b65aee443da4efdd9dc382dad965b60b19fd0c0844f1c6ae2630541360430f06d52366c2c0132bec1d0244
6
+ metadata.gz: e7bc1dc7e737156ff16bc0db8b79cd838b181a4acb56dee831ea81b05c0ea1343e9b1ed8080c44816986080d38b0ff26df5d0c80e7f76f87079098d177a69d35
7
+ data.tar.gz: 527dfd80c96fb25091298212f5d61baa07e70fa3ca4e395253f41454b583cc9c6798b6b48018cc32f19e72b8345f46f18dde9962fdb86a6881d196dafce09149
@@ -4,8 +4,8 @@ before_install:
4
4
  - gem update bundler # -v 1.7.14 if a specific version is needed
5
5
 
6
6
  rvm:
7
- - 1.9.3
8
7
  - 2.0.0
9
8
  - 2.1
10
9
  - 2.2
10
+ - 2.5
11
11
  - jruby-19mode
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2016 Tamber, Inc.
3
+ Copyright (c) 2019 Tamber, Inc.
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Recommendation engines for developers, easy as π. Build blazing fast, head-scratchingly accurate hosted recommendation engines in minutes.
4
4
 
5
- The Tamber iOS SDK makes it easy to track events (user-item interactions) and get recommendations for your users inside your iOS app.
5
+ The Tamber iOS SDK makes it easy to track events (user-item interactions) and get recommendations for your users in real time.
6
6
 
7
7
  [Get a free api key][homepage] to get started.
8
8
 
@@ -48,7 +48,10 @@ begin
48
48
  user: 'user_rlox8k927z7p',
49
49
  behavior: 'like'
50
50
  item: 'item_wmt4fn6o4zlk',
51
- context: ["homepage", "featured_section"]
51
+ context: {
52
+ "page": "homepage",
53
+ "section": "featured_section"
54
+ }
52
55
  )
53
56
  rescue TamberError => error
54
57
  puts error.message
@@ -64,7 +67,7 @@ The primary methods of discovery in Tamber are the `Discover.next` and `Discover
64
67
 
65
68
  #### Up Next
66
69
 
67
- Don't make an item page a deadend. Keep users engaged by creating paths of discovery as they navigate from item to item, always showing the right mix of items they should check out next. Just add the id of the item that the user is navigating to / looking at.
70
+ Don't make an item page a dead-end. Keep users engaged by creating paths of discovery as they navigate from item to item, always showing the right mix of items they should check out next. Just supply the user and the item that they are navigating to / looking at.
68
71
 
69
72
  ```rb
70
73
  begin
@@ -126,21 +129,21 @@ Help your users keep their fingers on the pulse of your platform by showing them
126
129
 
127
130
  ```rb
128
131
  begin
129
- d = Tamber::Discover.hot() // the hottest (trending) items
132
+ d = Tamber::Discover.hot # the hottest (trending) items
130
133
  d.each { |rec| puts "item: #{rec.item}, score: #{rec.score}"}
131
134
  end
132
135
 
133
136
  begin
134
- d = Tamber::Discover.popular() // the hottest (trending) items
137
+ d = Tamber::Discover.popular # the most popular items
135
138
  end
136
139
 
137
140
  # BETA endpoints
138
141
  begin
139
- d = Tamber::Discover.uac() // the most up-and-coming items
142
+ d = Tamber::Discover.uac # the most up-and-coming items
140
143
  end
141
144
 
142
145
  begin
143
- d = Tamber::Discover.new() // the newest items
146
+ d = Tamber::Discover.new # the newest items
144
147
  end
145
148
  ```
146
149
 
@@ -150,19 +153,19 @@ Tamber allows you to use lower-level methods to get lists of recommended items,
150
153
 
151
154
  ```rb
152
155
  begin
153
- Tamber::Discover.basicRecommended(user: 'user_rlox8k927z7p').each { |rec| puts "item: #{rec.item}, score: #{rec.score}"}
156
+ Tamber::Discover::Basic.recommended(user: 'user_rlox8k927z7p').each { |rec| puts "item: #{rec.item}, score: #{rec.score}"}
154
157
  rescue TamberError => error
155
158
  puts error.message
156
159
  end
157
160
 
158
161
  begin
159
- Tamber::Discover.basicSimilar(item: 'item_wmt4fn6o4zlk').each { |rec| puts "item: #{rec.item}, score: #{rec.score}"}
162
+ Tamber::Discover::Basic.Similar(item: 'item_wmt4fn6o4zlk').each { |rec| puts "item: #{rec.item}, score: #{rec.score}"}
160
163
  rescue TamberError => error
161
164
  puts error.message
162
165
  end
163
166
 
164
167
  begin
165
- Tamber::Discover.basicRecommendedSimilar(
168
+ Tamber::Discover::Basic.RecommendedSimilar(
166
169
  user: 'user_rlox8k927z7p',
167
170
  item: 'item_wmt4fn6o4zlk'
168
171
  ).each { |rec| puts "item: #{rec.item}, score: #{rec.score}"}
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.12
1
+ 0.2.2
@@ -13,6 +13,7 @@ require 'json'
13
13
  require 'tamber/version'
14
14
 
15
15
  require 'tamber/api_operations/create'
16
+ require 'tamber/api_operations/save'
16
17
  require 'tamber/api_operations/update'
17
18
  require 'tamber/api_operations/remove'
18
19
  require 'tamber/api_operations/retrieve'
@@ -3,7 +3,7 @@ module Tamber
3
3
  module Remove
4
4
  def remove(params={})
5
5
  response = request(:get, url+"/remove", params)
6
- # initialize_from(response, opts)
6
+ Util.convert_to_tamber_object(response)
7
7
  end
8
8
  end
9
9
  end
@@ -0,0 +1,10 @@
1
+ module Tamber
2
+ module APIOperations
3
+ module Save
4
+ def save(params={})
5
+ response = request(:post, url+"/save", params)
6
+ Util.convert_to_tamber_object(response)
7
+ end
8
+ end
9
+ end
10
+ end
@@ -10,8 +10,11 @@ module Tamber
10
10
  if self == APIResource
11
11
  raise TamberError.new('APIResource is an abstract class. You should perform actions on its subclasses (Event, Discover, etc.)')
12
12
  end
13
+
13
14
  if class_name.downcase == "basic"
14
15
  "/discover/#{CGI.escape(class_name.downcase)}"
16
+ elsif class_name.downcase == "usertrend"
17
+ "/discover/user_trend"
15
18
  else
16
19
  "/#{CGI.escape(class_name.downcase)}"
17
20
  end
@@ -45,7 +45,10 @@ module Tamber
45
45
  Util.convert_to_tamber_object(response)
46
46
  end
47
47
 
48
-
48
+ def self.uac(params={})
49
+ response = request(:get, self.uac_url, params)
50
+ Util.convert_to_tamber_object(response)
51
+ end
49
52
 
50
53
  def self.recommended_url
51
54
  url + '/recommended'
@@ -83,18 +86,51 @@ module Tamber
83
86
  url + '/new'
84
87
  end
85
88
 
89
+ class UserTrend < APIResource
90
+ def self.popular(params={})
91
+ response = request(:get, self.popular_url, params)
92
+ Util.convert_to_tamber_object(response)
93
+ end
94
+
95
+ def self.hot(params={})
96
+ response = request(:get, self.hot_url, params)
97
+ Util.convert_to_tamber_object(response)
98
+ end
99
+
100
+ def self.uac(params={})
101
+ response = request(:get, self.uac_url, params)
102
+ Util.convert_to_tamber_object(response)
103
+ end
104
+
105
+ def self.popular_url
106
+ url + '/popular'
107
+ end
108
+
109
+ def self.hot_url
110
+ url + '/hot'
111
+ end
112
+
113
+ def self.uac_url
114
+ url + '/uac'
115
+ end
116
+ end
117
+
118
+ # deprecated
86
119
  class Basic < APIResource
87
120
  def self.recommended(params={})
121
+ warn "[DEPRECATION] `Discover.Basic.recommended` is deprecated. Please use `Discover.recommended` instead."
88
122
  response = request(:get, self.recommended_url, params)
89
123
  Util.convert_to_tamber_object(response)
90
124
  end
91
125
 
92
126
  def self.similar(params={})
127
+ warn "[DEPRECATION] `Discover.Basic.similar` is deprecated. Please use `Discover.next` instead."
93
128
  response = request(:get, self.similar_url, params)
94
129
  Util.convert_to_tamber_object(response)
95
130
  end
96
131
 
97
132
  def self.recommendedSimilar(params={})
133
+ warn "[DEPRECATION] `Discover.Basic.recommendedSimilar` is deprecated. Please use `Discover.next` instead."
98
134
  response = request(:get, self.recommendedSimilar_url, params)
99
135
  Util.convert_to_tamber_object(response)
100
136
  end
@@ -1,10 +1,17 @@
1
1
  module Tamber
2
2
  class Item < APIResource
3
3
  extend Tamber::APIOperations::Create
4
+ extend Tamber::APIOperations::Save
4
5
  extend Tamber::APIOperations::Update
5
6
  extend Tamber::APIOperations::Retrieve
6
7
  extend Tamber::APIOperations::List
7
8
 
9
+ # hide an item from all Discover results
10
+ def self.batch(params={})
11
+ response = request(:post, self.batch_url, params)
12
+ Util.convert_to_tamber_object(response)
13
+ end
14
+
8
15
  # hide an item from all Discover results
9
16
  def self.hide(params={})
10
17
  response = request(:post, self.hide_url, params)
@@ -23,6 +30,10 @@ module Tamber
23
30
  Util.convert_to_tamber_object(response)
24
31
  end
25
32
 
33
+ def self.batch_url
34
+ url + '/batch'
35
+ end
36
+
26
37
  def self.hide_url
27
38
  url + '/hide'
28
39
  end
@@ -1,12 +1,19 @@
1
1
  module Tamber
2
2
  class User < APIResource
3
3
  extend Tamber::APIOperations::Create
4
- extend Tamber::APIOperations::Update
4
+ extend Tamber::APIOperations::Save
5
5
  extend Tamber::APIOperations::Retrieve
6
6
  extend Tamber::APIOperations::List
7
7
 
8
+ def self.update(params={})
9
+ warn "[DEPRECATION] `User.update` is deprecated. Please use `User.save` instead."
10
+ response = request(:post, url + '/update', params)
11
+ Util.convert_to_tamber_object(response)
12
+ end
13
+
8
14
  def self.search(params={})
9
- response = request(:post, url + '/search', params)
15
+ warn "[DEPRECATION] `User.search` is deprecated. Please use `User.list` instead."
16
+ response = request(:post, url + '/list', params)
10
17
  Util.convert_to_tamber_object(response)
11
18
  end
12
19
 
@@ -14,6 +21,18 @@ module Tamber
14
21
  response = request(:post, url + '/merge', params)
15
22
  Util.convert_to_tamber_object(response)
16
23
  end
24
+
25
+ # Deprecated in api version 2020-6-11
26
+ def self.update(params={})
27
+ warn "[DEPRECATION] `User.update` is deprecated. Please use `User.save` instead."
28
+ response = request(:post, url + '/save', params)
29
+ Util.convert_to_tamber_object(response)
30
+ end
31
+
32
+ def self.tests(params={})
33
+ response = request(:get, url + '/tests', params)
34
+ Util.convert_to_tamber_object(response)
35
+ end
17
36
 
18
37
  end
19
38
  end
@@ -1,3 +1,3 @@
1
1
  module Tamber
2
- VERSION = '0.1.12'
2
+ VERSION = '0.2.2'
3
3
  end
@@ -13,8 +13,8 @@ spec = Gem::Specification.new do |s|
13
13
  s.authors = ['Alexi Robbins', 'Mark Canning']
14
14
  s.email = ['alexi@tamber.com', 'argusdusty@tamber.com']
15
15
 
16
- s.add_dependency('rest-client', '~> 1.4')
17
- s.add_dependency('json', '~> 1.8.1')
16
+ s.add_dependency('rest-client', '~> 2.0')
17
+ s.add_dependency('json', '>= 1.8.1')
18
18
  s.add_dependency('activesupport', '>= 4.2.4')
19
19
 
20
20
  s.add_development_dependency('mocha', '~> 0.13.2')
@@ -29,6 +29,13 @@ module Tamber
29
29
  # d.each { |rec| puts "item: #{rec.item}, score: #{rec.score}"}
30
30
  # end
31
31
  # end
32
+
33
+ # should "return new" do
34
+ # begin
35
+ # d = Tamber::Discover.new()
36
+ # d.each { |rec| puts "item: #{rec.item}, score: #{rec.score}"}
37
+ # end
38
+ # end
32
39
 
33
40
  should "return hot" do
34
41
  begin
@@ -51,13 +58,6 @@ module Tamber
51
58
  end
52
59
  end
53
60
 
54
- should "return new" do
55
- begin
56
- d = Tamber::Discover.new()
57
- d.each { |rec| puts "item: #{rec.item}, score: #{rec.score}"}
58
- end
59
- end
60
-
61
61
  should "return recommendations" do
62
62
  begin
63
63
  d = Tamber::Discover.recommended(
@@ -93,5 +93,14 @@ module Tamber
93
93
  end
94
94
  end
95
95
 
96
+ should "return user hot" do
97
+ begin
98
+ d = Tamber::Discover::UserTrend.hot(
99
+ :user => 'user_jctzgisbru'
100
+ )
101
+ d.each { |rec| puts "item: #{rec.item}, score: #{rec.score}"}
102
+ end
103
+ end
104
+
96
105
  end
97
106
  end
@@ -9,8 +9,7 @@ module Tamber
9
9
  :item => 'item_i5gq90scc1',
10
10
  :behavior => 'mention',
11
11
  :hit => true,
12
- :context => ['recommended', 'detail-view'],
13
- :get_recs => {}
12
+ :context => {'page'=>'recommended'}
14
13
  )
15
14
  puts e
16
15
  end
@@ -9,6 +9,7 @@ class Test::Unit::TestCase
9
9
 
10
10
  setup do
11
11
  Tamber.project_key = "Mu6DUPXdDYe98cv5JIfX"
12
+ Tamber.api_version = "2020-6-11"
12
13
  Tamber.open_timeout = 3
13
14
  Tamber.read_timeout = 2
14
15
  end
@@ -59,19 +59,19 @@ module Tamber
59
59
  end
60
60
  end
61
61
 
62
- should "search user" do
63
- begin
64
- users = Tamber::User.search(
65
- :filter => {
66
- 'city' => 'Mountain View, CA'
67
- }
68
- )
69
- puts users.inspect
70
- # assert users.length >= 1
71
- rescue TamberError => error
72
- puts error.message
73
- end
74
- end
62
+ # should "search user" do
63
+ # begin
64
+ # users = Tamber::User.search(
65
+ # :filter => {
66
+ # 'city' => 'Mountain View, CA'
67
+ # }
68
+ # )
69
+ # puts users.inspect
70
+ # # assert users.length >= 1
71
+ # rescue TamberError => error
72
+ # puts error.message
73
+ # end
74
+ # end
75
75
 
76
76
  # Breaks production test
77
77
  # should "merge user" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tamber
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.12
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexi Robbins
@@ -9,104 +9,104 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-04-21 00:00:00.000000000 Z
12
+ date: 2020-07-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rest-client
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ~>
18
+ - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '1.4'
20
+ version: '2.0'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ~>
25
+ - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: '1.4'
27
+ version: '2.0'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: json
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ~>
32
+ - - ">="
33
33
  - !ruby/object:Gem::Version
34
34
  version: 1.8.1
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - ~>
39
+ - - ">="
40
40
  - !ruby/object:Gem::Version
41
41
  version: 1.8.1
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: activesupport
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - '>='
46
+ - - ">="
47
47
  - !ruby/object:Gem::Version
48
48
  version: 4.2.4
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - '>='
53
+ - - ">="
54
54
  - !ruby/object:Gem::Version
55
55
  version: 4.2.4
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: mocha
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - ~>
60
+ - - "~>"
61
61
  - !ruby/object:Gem::Version
62
62
  version: 0.13.2
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - ~>
67
+ - - "~>"
68
68
  - !ruby/object:Gem::Version
69
69
  version: 0.13.2
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: shoulda
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - ~>
74
+ - - "~>"
75
75
  - !ruby/object:Gem::Version
76
76
  version: 3.4.0
77
77
  type: :development
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - ~>
81
+ - - "~>"
82
82
  - !ruby/object:Gem::Version
83
83
  version: 3.4.0
84
84
  - !ruby/object:Gem::Dependency
85
85
  name: test-unit
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - '>='
88
+ - - ">="
89
89
  - !ruby/object:Gem::Version
90
90
  version: '0'
91
91
  type: :development
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - '>='
95
+ - - ">="
96
96
  - !ruby/object:Gem::Version
97
97
  version: '0'
98
98
  - !ruby/object:Gem::Dependency
99
99
  name: rake
100
100
  requirement: !ruby/object:Gem::Requirement
101
101
  requirements:
102
- - - '>='
102
+ - - ">="
103
103
  - !ruby/object:Gem::Version
104
104
  version: '0'
105
105
  type: :development
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
108
108
  requirements:
109
- - - '>='
109
+ - - ">="
110
110
  - !ruby/object:Gem::Version
111
111
  version: '0'
112
112
  description: Tamber is the easiest way to put head-scratchingly accurate, real time
@@ -118,8 +118,8 @@ executables: []
118
118
  extensions: []
119
119
  extra_rdoc_files: []
120
120
  files:
121
- - .gitignore
122
- - .travis.yml
121
+ - ".gitignore"
122
+ - ".travis.yml"
123
123
  - Gemfile
124
124
  - LICENSE
125
125
  - README.md
@@ -133,6 +133,7 @@ files:
133
133
  - lib/tamber/api_operations/remove.rb
134
134
  - lib/tamber/api_operations/request.rb
135
135
  - lib/tamber/api_operations/retrieve.rb
136
+ - lib/tamber/api_operations/save.rb
136
137
  - lib/tamber/api_operations/update.rb
137
138
  - lib/tamber/api_resource.rb
138
139
  - lib/tamber/behavior.rb
@@ -161,17 +162,17 @@ require_paths:
161
162
  - lib
162
163
  required_ruby_version: !ruby/object:Gem::Requirement
163
164
  requirements:
164
- - - '>='
165
+ - - ">="
165
166
  - !ruby/object:Gem::Version
166
167
  version: 1.9.3
167
168
  required_rubygems_version: !ruby/object:Gem::Requirement
168
169
  requirements:
169
- - - '>='
170
+ - - ">="
170
171
  - !ruby/object:Gem::Version
171
172
  version: '0'
172
173
  requirements: []
173
174
  rubyforge_project:
174
- rubygems_version: 2.0.3
175
+ rubygems_version: 2.7.3
175
176
  signing_key:
176
177
  specification_version: 4
177
178
  summary: Ruby bindings for the Tamber API