File tree Expand file tree Collapse file tree 7 files changed +100
-2
lines changed
Expand file tree Collapse file tree 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
1111
1212### Changed
1313
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+
1420## [ 0.9.0] - 2022-12-30
1521
1622### Added
Original file line number Diff line number Diff line change 44require_relative 'microsoft_kiota_faraday/middleware/response_handler_option'
55require_relative 'microsoft_kiota_faraday/middleware/parameters_name_decoding_option'
66require_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'
79require_relative 'microsoft_kiota_faraday/kiota_client_factory'
810require_relative 'microsoft_kiota_faraday/faraday_request_adapter'
911
Original file line number Diff line number Diff line change 11require 'net/https'
22require 'faraday'
33require_relative 'middleware/parameters_name_decoding_handler'
4+ require_relative 'middleware/user_agent_handler'
45module MicrosoftKiotaFaraday
56 class KiotaClientFactory
67 def self . get_default_middleware ( )
78 return [
8- MicrosoftKiotaFaraday ::Middleware ::ParametersNameDecodingHandler
9+ MicrosoftKiotaFaraday ::Middleware ::ParametersNameDecodingHandler ,
10+ MicrosoftKiotaFaraday ::Middleware ::UserAgentHandler
911 ]
1012 end
1113
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 11# frozen_string_literal: true
22
33module MicrosoftKiotaFaraday
4- VERSION = '0.9 .0'
4+ VERSION = '0.10 .0'
55end
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