File tree 7 files changed +100
-2
lines changed
7 files changed +100
-2
lines changed Original file line number Diff line number Diff line change @@ -11,6 +11,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
11
11
12
12
### Changed
13
13
14
+ ## [ 0.10.0] - 2023-01-06
15
+
16
+ ### Added
17
+
18
+ - Added a user agent handler to add the product to the request header.
19
+
14
20
## [ 0.9.0] - 2022-12-30
15
21
16
22
### Added
Original file line number Diff line number Diff line change 4
4
require_relative 'microsoft_kiota_faraday/middleware/response_handler_option'
5
5
require_relative 'microsoft_kiota_faraday/middleware/parameters_name_decoding_option'
6
6
require_relative 'microsoft_kiota_faraday/middleware/parameters_name_decoding_handler'
7
+ require_relative 'microsoft_kiota_faraday/middleware/user_agent_option'
8
+ require_relative 'microsoft_kiota_faraday/middleware/user_agent_handler'
7
9
require_relative 'microsoft_kiota_faraday/kiota_client_factory'
8
10
require_relative 'microsoft_kiota_faraday/faraday_request_adapter'
9
11
Original file line number Diff line number Diff line change 1
1
require 'net/https'
2
2
require 'faraday'
3
3
require_relative 'middleware/parameters_name_decoding_handler'
4
+ require_relative 'middleware/user_agent_handler'
4
5
module MicrosoftKiotaFaraday
5
6
class KiotaClientFactory
6
7
def self . get_default_middleware ( )
7
8
return [
8
- MicrosoftKiotaFaraday ::Middleware ::ParametersNameDecodingHandler
9
+ MicrosoftKiotaFaraday ::Middleware ::ParametersNameDecodingHandler ,
10
+ MicrosoftKiotaFaraday ::Middleware ::UserAgentHandler
9
11
]
10
12
end
11
13
Original file line number Diff line number Diff line change
1
+ require 'faraday'
2
+ require_relative 'user_agent_option'
3
+ module MicrosoftKiotaFaraday
4
+ module Middleware
5
+ class UserAgentHandler < Faraday ::Middleware
6
+ @@default_option = UserAgentOption . new
7
+ @@user_agent_key = "User-Agent"
8
+ def call ( request_env )
9
+ request_option = request_env [ :request ] [ :context ] [ @@default_option . get_key ] unless request_env [ :request ] . nil? || request_env [ :request ] [ :context ] . nil?
10
+ request_option = @@default_option if request_option . nil?
11
+ unless request_env [ :request_headers ] . nil? || !request_option . enabled || request_option . product_name . nil? || request_option . product_name . empty? || request_option . product_version . nil? || request_option . product_version . empty? then
12
+ existing_value = request_env [ :request_headers ] [ @@user_agent_key ]
13
+ additional_value = "#{ request_option . product_name } /#{ request_option . product_version } "
14
+ if !existing_value || existing_value . empty? then
15
+ request_env [ :request_headers ] [ @@user_agent_key ] = additional_value
16
+ elsif !existing_value . include? additional_value then
17
+ request_env [ :request_headers ] [ @@user_agent_key ] = "#{ existing_value } #{ additional_value } "
18
+ end
19
+ end
20
+ @app . call ( request_env ) unless @app . nil?
21
+ end
22
+ end
23
+ end
24
+ end
Original file line number Diff line number Diff line change
1
+ # frozen_string_literal: true
2
+ require 'microsoft_kiota_abstractions'
3
+ require_relative '../version.rb'
4
+ module MicrosoftKiotaFaraday
5
+ module Middleware
6
+ class UserAgentOption
7
+ include MicrosoftKiotaAbstractions ::RequestOption
8
+ attr_accessor :enabled , :product_name , :product_version
9
+ def initialize ( )
10
+ @enabled = true
11
+ @product_name = "kiota-ruby"
12
+ @product_version = MicrosoftKiotaFaraday ::VERSION
13
+ end
14
+
15
+ def get_key ( )
16
+ "userAgent"
17
+ end
18
+ end
19
+ end
20
+ end
Original file line number Diff line number Diff line change 1
1
# frozen_string_literal: true
2
2
3
3
module MicrosoftKiotaFaraday
4
- VERSION = '0.9 .0'
4
+ VERSION = '0.10 .0'
5
5
end
Original file line number Diff line number Diff line change
1
+ require 'faraday'
2
+
3
+ # frozen_string_literal: true
4
+ RSpec . describe MicrosoftKiotaFaraday do
5
+ user_agent_key = "User-Agent"
6
+ url = "https://graph.microsoft.com/v1.0/users"
7
+ it "adds the user agent product" do
8
+ handler = MicrosoftKiotaFaraday ::Middleware ::UserAgentHandler . new ( )
9
+ env = {
10
+ url : URI . parse ( url ) ,
11
+ request_headers : { }
12
+ }
13
+ handler . call ( env )
14
+ expect ( env [ :request_headers ] [ user_agent_key ] . split ( "/" ) [ 0 ] ) . to eq ( "kiota-ruby" )
15
+ end
16
+
17
+ it "adds the user agent product once" do
18
+ handler = MicrosoftKiotaFaraday ::Middleware ::UserAgentHandler . new ( )
19
+ env = {
20
+ url : URI . parse ( url ) ,
21
+ request_headers : { }
22
+ }
23
+ handler . call ( env )
24
+ handler . call ( env )
25
+ expect ( env [ :request_headers ] [ user_agent_key ] . split ( "kiota-ruby" ) . length ) . to eq ( 2 )
26
+ end
27
+ it "doesnt add the header when disabled" do
28
+ handler = MicrosoftKiotaFaraday ::Middleware ::UserAgentHandler . new ( )
29
+ opt = MicrosoftKiotaFaraday ::Middleware ::UserAgentOption . new ( )
30
+ opt . enabled = false
31
+ env = {
32
+ url : URI . parse ( url ) ,
33
+ request_headers : { } ,
34
+ request : {
35
+ context : {
36
+ opt . get_key => opt
37
+ }
38
+ }
39
+ }
40
+ handler . call ( env )
41
+ handler . call ( env )
42
+ expect ( env [ :request_headers ] [ user_agent_key ] ) . to be_nil
43
+ end
44
+ end
You can’t perform that action at this time.
0 commit comments