@@ -2,7 +2,7 @@ module Intercom
22 class MisconfiguredClientError < StandardError ; end
33 class Client
44 include Options
5- attr_reader :base_url , :rate_limit_details , :username_part , :password_part , :handle_rate_limit , :timeouts
5+ attr_reader :base_url , :rate_limit_details , :username_part , :password_part , :handle_rate_limit , :timeouts , :api_version
66
77 class << self
88 def set_base_url ( base_url )
@@ -25,7 +25,7 @@ def set_timeouts(open_timeout: nil, read_timeout: nil)
2525 end
2626 end
2727
28- def initialize ( app_id : 'my_app_id' , api_key : 'my_api_key' , token : nil , base_url :'https://api.intercom.io' , handle_rate_limit : false )
28+ def initialize ( app_id : 'my_app_id' , api_key : 'my_api_key' , token : nil , base_url :'https://api.intercom.io' , handle_rate_limit : false , api_version : nil )
2929 if token
3030 @username_part = token
3131 @password_part = ""
@@ -35,6 +35,9 @@ def initialize(app_id: 'my_app_id', api_key: 'my_api_key', token: nil, base_url:
3535 end
3636 validate_credentials!
3737
38+ @api_version = api_version
39+ validate_api_version!
40+
3841 @base_url = base_url
3942 @rate_limit_details = { }
4043 @handle_rate_limit = handle_rate_limit
@@ -123,9 +126,14 @@ def validate_credentials!
123126 fail error if @username_part . nil?
124127 end
125128
129+ def validate_api_version!
130+ error = MisconfiguredClientError . new ( "api_version must be either nil or a valid API version" )
131+ fail error if ( @api_version && Gem ::Version . new ( @api_version ) < Gem ::Version . new ( '1.0' ) )
132+ end
133+
126134 def execute_request ( request )
127135 request . handle_rate_limit = handle_rate_limit
128- request . execute ( @base_url , username : @username_part , secret : @password_part , **timeouts )
136+ request . execute ( @base_url , username : @username_part , secret : @password_part , api_version : @api_version , **timeouts )
129137 ensure
130138 @rate_limit_details = request . rate_limit_details
131139 end
0 commit comments