microsoft_kiota_faraday 0.20.0 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d66e6661948d72d58aeca0946f7a13ceb6cf2b898a94f0107528051c7c553219
4
- data.tar.gz: 10a6e7e80d0880ba2c3d9e96f9d02bc708647a1bb9b5d763b7aa1ca269cd86b8
3
+ metadata.gz: da9b4001f18252450bece3bdd2402460aa13dfcaa480220610fec1756170f8f5
4
+ data.tar.gz: 813405b22fe8212b4660cd9daabc6cd504f26ab0d723e167e0eebebb8a71c74f
5
5
  SHA512:
6
- metadata.gz: 41faf6ce2ca04efaa34f3c55e21aeb757bbdcd208d258844e2e3197c910cf77c147c61ca713eab484279a5b9b9ad75b29141eac7313a8536a6839309d1ce6cbd
7
- data.tar.gz: 827f155a602be4c9a55f33bc9b990f9f1a00b89e10a3dfc75d979e13dc5cce607506c08d0f32b2fca00a2d72e2aef874c254d17a68cef0fde5c53b21f0f62038
6
+ metadata.gz: 21b89a9527fbcece787d3c90ad4f64bfe4be8ae57774367025be7bfec531ca23ccb96163a9bd4279655a7366b1a3c3e6ffdb8831194b90cbf557f72e35f6da26
7
+ data.tar.gz: 8a0e5a5c0c7ccaefbf1fa0d7eb638c73ae2894cdc422098ee59f64e868167155d8e793b910633729a825dcc0ebc00e02c39a0c35892b2da90fc8e4049aadc8fe
@@ -3,6 +3,7 @@
3
3
  require 'microsoft_kiota_abstractions'
4
4
  require 'faraday'
5
5
  require 'net/http'
6
+ require 'stringio'
6
7
  require_relative 'kiota_client_factory'
7
8
  require_relative 'middleware/response_handler_option'
8
9
 
@@ -44,10 +45,63 @@ module MicrosoftKiotaFaraday
44
45
  @serialization_writer_factory
45
46
  end
46
47
 
48
+ PRIMITIVE_READERS = {
49
+ 'String' => :get_string_value,
50
+ 'Float' => :get_float_value,
51
+ 'Integer' => :get_number_value,
52
+ 'Date' => :get_date_value,
53
+ 'DateTime' => :get_date_time_value,
54
+ 'Time' => :get_time_value,
55
+ 'MicrosoftKiotaAbstractions::ISODuration' => :get_duration_value,
56
+ 'UUIDTools::UUID' => :get_guid_value,
57
+ 'boolean' => :get_boolean_value,
58
+ 'Boolean' => :get_boolean_value
59
+ }.freeze
60
+
47
61
  def send_async(request_info, factory, errors_mapping)
48
- raise StandardError, 'request_info cannot be null' unless request_info
49
62
  raise StandardError, 'factory cannot be null' unless factory
50
63
 
64
+ execute_async(request_info, errors_mapping) do |response|
65
+ get_root_parse_node(response)&.get_object_value(factory)
66
+ end
67
+ end
68
+
69
+ def send_collection_async(request_info, factory, errors_mapping)
70
+ raise StandardError, 'factory cannot be null' unless factory
71
+
72
+ execute_async(request_info, errors_mapping) do |response|
73
+ get_root_parse_node(response)&.get_collection_of_object_values(factory)
74
+ end
75
+ end
76
+
77
+ def send_collection_of_primitive_async(request_info, type, errors_mapping)
78
+ execute_async(request_info, errors_mapping) do |response|
79
+ root_node = get_root_parse_node(response)
80
+ next root_node&.get_collection_of_enum_values(type) if type.is_a?(Hash)
81
+
82
+ root_node&.get_collection_of_primitive_values(type)
83
+ end
84
+ end
85
+
86
+ def send_primitive_async(request_info, type, errors_mapping)
87
+ execute_async(request_info, errors_mapping) do |response|
88
+ next StringIO.new(response.body.to_s) if type == StringIO
89
+ next get_root_parse_node(response)&.get_enum_value(type) if type.is_a?(Hash)
90
+
91
+ reader = PRIMITIVE_READERS[type.to_s]
92
+ raise StandardError, "unexpected primitive response type #{type}" if reader.nil?
93
+
94
+ get_root_parse_node(response)&.public_send(reader)
95
+ end
96
+ end
97
+
98
+ def send_no_response_content_async(request_info, errors_mapping)
99
+ execute_async(request_info, errors_mapping) { nil }
100
+ end
101
+
102
+ def execute_async(request_info, errors_mapping)
103
+ raise StandardError, 'request_info cannot be null' unless request_info
104
+
51
105
  Fiber.new do
52
106
  set_base_url_for_request_information(request_info)
53
107
  @authentication_provider.authenticate_request(request_info).resume
@@ -57,8 +111,7 @@ module MicrosoftKiotaFaraday
57
111
  response_handler = get_response_handler(request_info)
58
112
  response_handler&.call(response)&.resume
59
113
  throw_if_failed_reponse(response, errors_mapping)
60
- root_node = get_root_parse_node(response)
61
- root_node.get_object_value(factory)
114
+ yield response
62
115
  end
63
116
  end
64
117
 
@@ -72,9 +125,10 @@ module MicrosoftKiotaFaraday
72
125
  def get_root_parse_node(response)
73
126
  raise StandardError, 'response cannot be null' unless response
74
127
 
128
+ return if response.body.nil? || response.body.empty?
129
+
75
130
  response_content_type = get_response_content_type(response)
76
131
  raise StandardError, 'no response content type found for deserialization' unless response_content_type
77
- return if response.body.nil? || response.body.empty?
78
132
 
79
133
  @parse_node_factory.get_parse_node(response_content_type, response.body)
80
134
  end
@@ -85,7 +139,7 @@ module MicrosoftKiotaFaraday
85
139
  status_code = response.status
86
140
  return if status_code < 400
87
141
 
88
- error_factory = errors_mapping[status_code] unless errors_mapping.nil?
142
+ error_factory = errors_mapping[status_code.to_s] unless errors_mapping.nil?
89
143
  error_factory = errors_mapping['4XX'] unless !error_factory.nil? || errors_mapping.nil? || status_code > 500
90
144
  unless !error_factory.nil? || errors_mapping.nil? || status_code < 500 || status_code > 600
91
145
  error_factory = errors_mapping['5XX']
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MicrosoftKiotaFaraday
4
- VERSION = '0.20.0' # x-release-please-version
4
+ VERSION = '0.22.0' # x-release-please-version
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: microsoft_kiota_faraday
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.20.0
4
+ version: 0.22.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Microsoft Corporation
@@ -35,14 +35,14 @@ dependencies:
35
35
  requirements:
36
36
  - - '='
37
37
  - !ruby/object:Gem::Version
38
- version: 0.20.0
38
+ version: 0.22.0
39
39
  type: :runtime
40
40
  prerelease: false
41
41
  version_requirements: !ruby/object:Gem::Requirement
42
42
  requirements:
43
43
  - - '='
44
44
  - !ruby/object:Gem::Version
45
- version: 0.20.0
45
+ version: 0.22.0
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: rake
48
48
  requirement: !ruby/object:Gem::Requirement