Skip to content

Commit 752793d

Browse files
committed
Adding HashNormalizer that converts Ruby style Hash keys such as snake_case and symbols type to Recombee's Camel style of String type.
1 parent 3586ac3 commit 752793d

21 files changed

+42
-0
lines changed

lib/recombee_api_client/api/add_bookmark.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ class AddBookmark < ApiRequest
2626
def initialize(user_id, item_id, optional = {})
2727
@user_id = user_id
2828
@item_id = item_id
29+
optional = normalize_optional(optional)
2930
@timestamp = optional['timestamp']
3031
@cascade_create = optional['cascadeCreate']
3132
@optional = optional

lib/recombee_api_client/api/add_cart_addition.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ class AddCartAddition < ApiRequest
2828
def initialize(user_id, item_id, optional = {})
2929
@user_id = user_id
3030
@item_id = item_id
31+
optional = normalize_optional(optional)
3132
@timestamp = optional['timestamp']
3233
@cascade_create = optional['cascadeCreate']
3334
@amount = optional['amount']

lib/recombee_api_client/api/add_detail_view.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ class AddDetailView < ApiRequest
2727
def initialize(user_id, item_id, optional = {})
2828
@user_id = user_id
2929
@item_id = item_id
30+
optional = normalize_optional(optional)
3031
@timestamp = optional['timestamp']
3132
@duration = optional['duration']
3233
@cascade_create = optional['cascadeCreate']

lib/recombee_api_client/api/add_purchase.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ class AddPurchase < ApiRequest
2929
def initialize(user_id, item_id, optional = {})
3030
@user_id = user_id
3131
@item_id = item_id
32+
optional = normalize_optional(optional)
3233
@timestamp = optional['timestamp']
3334
@cascade_create = optional['cascadeCreate']
3435
@amount = optional['amount']

lib/recombee_api_client/api/add_rating.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ def initialize(user_id, item_id, rating, optional = {})
2828
@user_id = user_id
2929
@item_id = item_id
3030
@rating = rating
31+
optional = normalize_optional(optional)
3132
@timestamp = optional['timestamp']
3233
@cascade_create = optional['cascadeCreate']
3334
@optional = optional

lib/recombee_api_client/api/batch.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ class Batch < ApiRequest
1616
#
1717
def initialize(requests, optional = {})
1818
@requests = requests
19+
optional = normalize_optional(optional)
1920
@optional = optional
2021
@body_parameters = requests_to_batch_hash
2122
@timeout = requests.map{|r| r.timeout}.reduce(:+)

lib/recombee_api_client/api/delete_view_portion.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ class DeleteViewPortion < ApiRequest
2727
def initialize(user_id, item_id, optional = {})
2828
@user_id = user_id
2929
@item_id = item_id
30+
optional = normalize_optional(optional)
3031
@session_id = optional['sessionId']
3132
@optional = optional
3233
@timeout = 1000
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
module RecombeeApiClient
2+
##
3+
# Module to convert Ruby conventions to Recombee's API namings
4+
#
5+
module HashNormalizer
6+
def normalize_optional opts
7+
opts_new = {}
8+
opts.each do |k,v|
9+
case k
10+
when String then opts_new[camelize(k)] = opts.delete(k)
11+
when Symbol then opts_new[camelize(k.to_s)] = opts.delete(k)
12+
end
13+
end
14+
opts_new
15+
end
16+
17+
def camelize str
18+
str.gsub(/_(.)/) {|e| $1.upcase}
19+
end
20+
end
21+
end

lib/recombee_api_client/api/insert_to_group.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ def initialize(group_id, item_type, item_id, optional = {})
2727
@group_id = group_id
2828
@item_type = item_type
2929
@item_id = item_id
30+
optional = normalize_optional(optional)
3031
@cascade_create = optional['cascadeCreate']
3132
@optional = optional
3233
@timeout = 1000

lib/recombee_api_client/api/insert_to_series.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ def initialize(series_id, item_type, item_id, time, optional = {})
2929
@item_type = item_type
3030
@item_id = item_id
3131
@time = time
32+
optional = normalize_optional(optional)
3233
@cascade_create = optional['cascadeCreate']
3334
@optional = optional
3435
@timeout = 1000

0 commit comments

Comments
 (0)