Skip to content

Commit 9e73e97

Browse files
authored
fix(ruby): add helper to add segment to user agent (#3972)
1 parent 38f7563 commit 9e73e97

File tree

5 files changed

+35
-4
lines changed

5 files changed

+35
-4
lines changed

clients/algoliasearch-client-ruby/lib/algolia/configuration.rb

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,17 @@ def initialize(app_id, api_key, hosts, client_name, opts = {})
3333

3434
@user_agent = UserAgent.new.add(client_name, VERSION)
3535

36+
if opts[:user_agent_segments]
37+
opts[:user_agent_segments].each do |segment|
38+
@user_agent.add(segment)
39+
end
40+
end
41+
3642
@header_params = {
3743
"X-Algolia-Application-Id" => app_id,
3844
"X-Algolia-API-Key" => api_key,
3945
"Content-Type" => "application/json",
40-
"User-Agent" => @user_agent
46+
"User-Agent" => @user_agent.value
4147
}
4248
@header_params.transform_keys!(&:downcase)
4349

@@ -47,11 +53,20 @@ def initialize(app_id, api_key, hosts, client_name, opts = {})
4753
def set_client_api_key(api_key)
4854
@api_key = api_key
4955
@header_params["X-Algolia-API-Key"] = api_key
56+
57+
self
5058
end
5159

5260
# The default Configuration object.
5361
def self.default
5462
@@default ||= Configuration.new
5563
end
64+
65+
def add_user_agent_segment(segment, version = nil)
66+
@user_agent.add(segment, version)
67+
@header_params["user-agent"] = @user_agent.value
68+
69+
self
70+
end
5671
end
5772
end

clients/algoliasearch-client-ruby/lib/algolia/user_agent.rb

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,14 @@ def initialize
88

99
# Adds a segment to the UserAgent
1010
#
11-
def add(segment, version)
12-
@value += format("; %<segment>s (%<version>s)", segment: segment, version: version)
11+
def add(segment, version = nil)
12+
if version.nil?
13+
@value += format("; %<segment>s", segment: segment)
14+
else
15+
@value += format("; %<segment>s (%<version>s)", segment: segment, version: version)
16+
end
17+
18+
self
1319
end
1420
end
1521
end

playground/ruby/Gemfile.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
PATH
22
remote: ../../clients/algoliasearch-client-ruby
33
specs:
4-
algolia (3.3.1)
4+
algolia (3.5.1)
55
base64 (>= 0.2.0, < 1)
66
faraday (>= 1.0.1, < 3.0)
77
faraday-net_http_persistent (>= 0.15, < 3)

playground/ruby/search.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
Dotenv.load('../.env')
55

66
client = Algolia::SearchClient.create(ENV['ALGOLIA_APPLICATION_ID'], ENV['ALGOLIA_ADMIN_KEY'])
7+
# set a custom user agent
8+
client.add_user_agent_segment('Algolia for rails', "test")
79
res = client.search_single_index('contacts', Algolia::Search::SearchParamsObject.new(query: 'Jimmie'))
810
puts res
911

templates/ruby/api.mustache

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,14 @@ module {{moduleName}}
6565
# @return [void]
6666
def set_client_api_key(api_key)
6767
@api_client.set_client_api_key(api_key)
68+
69+
self
70+
end
71+
72+
def add_user_agent_segment(segment, version = nil)
73+
@api_client.config.add_user_agent_segment(segment, version)
74+
75+
self
6876
end
6977

7078
{{#operation}}

0 commit comments

Comments
 (0)