microsoft_kiota_abstractions 0.12.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.
Files changed (42) hide show
  1. checksums.yaml +7 -0
  2. data/.github/CODEOWNERS +1 -0
  3. data/.github/dependabot.yml +12 -0
  4. data/.github/workflows/code-ql.yml +76 -0
  5. data/.github/workflows/conflicting-pr-label.yml +34 -0
  6. data/.github/workflows/projectsbot.yml +81 -0
  7. data/.github/workflows/release.yml +45 -0
  8. data/.github/workflows/ruby.yml +34 -0
  9. data/.gitignore +58 -0
  10. data/CHANGELOG.md +18 -0
  11. data/CODE_OF_CONDUCT.md +9 -0
  12. data/Gemfile +6 -0
  13. data/LICENSE +21 -0
  14. data/README.md +51 -0
  15. data/Rakefile +8 -0
  16. data/SECURITY.md +41 -0
  17. data/SUPPORT.md +25 -0
  18. data/lib/microsoft_kiota_abstractions/api_client_builder.rb +19 -0
  19. data/lib/microsoft_kiota_abstractions/api_error.rb +23 -0
  20. data/lib/microsoft_kiota_abstractions/authentication/access_token_provider.rb +20 -0
  21. data/lib/microsoft_kiota_abstractions/authentication/allowed_hosts_validator.rb +39 -0
  22. data/lib/microsoft_kiota_abstractions/authentication/anonymous_authentication_provider.rb +7 -0
  23. data/lib/microsoft_kiota_abstractions/authentication/authentication_provider.rb +7 -0
  24. data/lib/microsoft_kiota_abstractions/authentication/base_bearer_token_authentication_provider.rb +26 -0
  25. data/lib/microsoft_kiota_abstractions/http_method.rb +17 -0
  26. data/lib/microsoft_kiota_abstractions/request_adapter.rb +25 -0
  27. data/lib/microsoft_kiota_abstractions/request_headers.rb +44 -0
  28. data/lib/microsoft_kiota_abstractions/request_information.rb +130 -0
  29. data/lib/microsoft_kiota_abstractions/request_option.rb +7 -0
  30. data/lib/microsoft_kiota_abstractions/serialization/additional_data_holder.rb +7 -0
  31. data/lib/microsoft_kiota_abstractions/serialization/iso_duration.rb +209 -0
  32. data/lib/microsoft_kiota_abstractions/serialization/parsable.rb +11 -0
  33. data/lib/microsoft_kiota_abstractions/serialization/parse_node.rb +61 -0
  34. data/lib/microsoft_kiota_abstractions/serialization/parse_node_factory.rb +7 -0
  35. data/lib/microsoft_kiota_abstractions/serialization/parse_node_factory_registry.rb +42 -0
  36. data/lib/microsoft_kiota_abstractions/serialization/serialization_writer.rb +69 -0
  37. data/lib/microsoft_kiota_abstractions/serialization/serialization_writer_factory.rb +9 -0
  38. data/lib/microsoft_kiota_abstractions/serialization/serialization_writer_factory_registry.rb +40 -0
  39. data/lib/microsoft_kiota_abstractions/version.rb +5 -0
  40. data/lib/microsoft_kiota_abstractions.rb +25 -0
  41. data/microsoft_kiota_abstractions.gemspec +36 -0
  42. metadata +165 -0
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative './authentication_provider'
4
+ require_relative './access_token_provider'
5
+
6
+ module MicrosoftKiotaAbstractions
7
+ # Provides a base class for implementing AuthenticationProvider for Bearer token scheme
8
+ class BaseBearerTokenAuthenticationProvider
9
+ include MicrosoftKiotaAbstractions::AuthenticationProvider
10
+ def initialize(access_token_provider)
11
+ raise StandardError, 'access_token_provider parameter cannot be nil' if access_token_provider.nil?
12
+
13
+ @access_token_provider = access_token_provider
14
+ end
15
+
16
+ AUTHORIZATION_HEADER_KEY = 'Authorization'
17
+ def authenticate_request(request, additional_properties = {})
18
+ raise StandardError, 'Request cannot be null' if request.nil?
19
+
20
+ Fiber.new do
21
+ token = @access_token_provider.get_authorization_token(request.uri, additional_properties).resume
22
+ request.headers.add(AUTHORIZATION_HEADER_KEY, "Bearer #{token}") unless token.nil? || token.empty?
23
+ end unless request.headers.get_all.key?(AUTHORIZATION_HEADER_KEY)
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,17 @@
1
+ module MicrosoftKiotaAbstractions
2
+ module HttpMethod
3
+
4
+ HTTP_METHOD = {
5
+ GET: :GET,
6
+ POST: :POST,
7
+ PATCH: :PATCH,
8
+ DELETE: :DELETE,
9
+ OPTIONS: :OPTIONS,
10
+ CONNECT: :CONNECT,
11
+ PUT: :PUT,
12
+ TRACE: :TRACE,
13
+ HEAD: :HEAD
14
+ }
15
+
16
+ end
17
+ end
@@ -0,0 +1,25 @@
1
+ require_relative 'request_information'
2
+
3
+ module MicrosoftKiotaAbstractions
4
+ module RequestAdapter
5
+
6
+ def send_async(request_info, factory, errors_mapping)
7
+ raise NotImplementedError.new
8
+ end
9
+
10
+ # TODO we're most likley missing something for enums and collections or at least at the implemenation level
11
+
12
+ def get_serialization_writer_factory()
13
+ raise NotImplementedError.new
14
+ end
15
+
16
+ def set_base_url(base_url)
17
+ raise NotImplementedError.new
18
+ end
19
+
20
+ def get_base_url()
21
+ raise NotImplementedError.new
22
+ end
23
+
24
+ end
25
+ end
@@ -0,0 +1,44 @@
1
+ module MicrosoftKiotaAbstractions
2
+ class RequestHeaders
3
+ def initialize()
4
+ @headers = Hash.new
5
+ end
6
+ def add(key, value)
7
+ if key.nil? || key.empty? || value.nil? || value.empty? then
8
+ raise ArgumentError, 'key and value cannot be nil or empty'
9
+ end
10
+ existing_value = @headers[key]
11
+ if existing_value.nil? then
12
+ if value.kind_of?(Array) then
13
+ @headers[key] = value
14
+ else
15
+ @headers[key] = Array[value.to_s]
16
+ end
17
+ else
18
+ if value.kind_of?(Array) then
19
+ @headers[key] = existing_value | value
20
+ else
21
+ existing_value << value.to_s
22
+ end
23
+ end
24
+ end
25
+ def get(key)
26
+ if key.nil? || key.empty? then
27
+ raise ArgumentError, 'key cannot be nil or empty'
28
+ end
29
+ return @headers[key]
30
+ end
31
+ def remove(key)
32
+ if key.nil? || key.empty? then
33
+ raise ArgumentError, 'key cannot be nil or empty'
34
+ end
35
+ @headers.delete(key)
36
+ end
37
+ def clear()
38
+ @headers.clear()
39
+ end
40
+ def get_all()
41
+ return @headers
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,130 @@
1
+ require 'uri'
2
+ require 'addressable/template'
3
+ require_relative 'http_method'
4
+ require_relative 'request_headers'
5
+
6
+ module MicrosoftKiotaAbstractions
7
+ class RequestInformation
8
+ attr_reader :content, :http_method, :headers
9
+ attr_accessor :url_template, :path_parameters, :query_parameters
10
+ @@binary_content_type = 'application/octet-stream'
11
+ @@content_type_header = 'Content-Type'
12
+ @@raw_url_key = 'request-raw-url'
13
+
14
+ def initialize()
15
+ @headers = RequestHeaders.new
16
+ @query_parameters = Hash.new
17
+ @path_parameters = Hash.new
18
+ end
19
+
20
+ def uri=(arg)
21
+ if arg.nil? || arg.empty?
22
+ raise ArgumentError, 'arg cannot be nil or empty'
23
+ end
24
+ self.path_parameters.clear()
25
+ self.query_parameters.clear()
26
+ @uri = URI(arg)
27
+ end
28
+
29
+ def uri
30
+ if @uri != nil
31
+ return @uri
32
+ else
33
+ if self.path_parameters[@@raw_url_key] != nil
34
+ self.uri = self.path_parameters[@@raw_url_key]
35
+ return @uri
36
+ else
37
+ template = Addressable::Template.new(@url_template)
38
+ return URI(template.expand(self.path_parameters.merge(self.query_parameters)).to_s)
39
+ end
40
+ end
41
+ end
42
+
43
+ def add_request_options(request_options_to_add)
44
+ unless request_options_to_add.nil? then
45
+ @request_options ||= Hash.new
46
+ unless request_options_to_add.kind_of?(Array) then
47
+ request_options_to_add = [request_options_to_add]
48
+ end
49
+ request_options_to_add.each do |request_option|
50
+ key = request_option.get_key
51
+ @request_options[key] = request_option
52
+ end
53
+ end
54
+ end
55
+
56
+ def get_request_options()
57
+ if @request_options.nil? then
58
+ return []
59
+ else
60
+ return @request_options.values
61
+ end
62
+ end
63
+
64
+ def get_request_option(key)
65
+ if @request_options.nil? || key.nil? || key.empty? then
66
+ return nil
67
+ else
68
+ return @request_options[key]
69
+ end
70
+ end
71
+
72
+ def remove_request_options(keys)
73
+ unless keys.nil? || @request_options.nil? then
74
+ unless keys.kind_of?(Array) then
75
+ keys = [keys]
76
+ end
77
+ keys.each do |key|
78
+ @request_options.delete(key)
79
+ end
80
+ end
81
+ end
82
+
83
+ def http_method=(method)
84
+ @http_method = HttpMethod::HTTP_METHOD[method]
85
+ end
86
+
87
+ def set_stream_content(value = $stdin)
88
+ @content = value
89
+ @headers.add(@@content_type_header, @@binary_content_type)
90
+ end
91
+
92
+ def set_content_from_parsable(request_adapter, content_type, values)
93
+ begin
94
+ writer = request_adapter.get_serialization_writer_factory().get_serialization_writer(content_type)
95
+ @headers.add(@@content_type_header, content_type)
96
+ if values != nil && values.kind_of?(Array)
97
+ writer.write_collection_of_object_values(nil, values)
98
+ else
99
+ writer.write_object_value(nil, values);
100
+ end
101
+ this.content = writer.get_serialized_content();
102
+ rescue => exception
103
+ raise Exception.new "could not serialize payload"
104
+ end
105
+ end
106
+
107
+ def add_headers_from_raw_object(h)
108
+ h.select{|x,y| @headers.add(x.to_s, y)} unless !h
109
+ end
110
+
111
+ def set_query_string_parameters_from_raw_object(q)
112
+ if !q || q.is_a?(Hash) || q.is_a?(Array)
113
+ return
114
+ end
115
+ q.class.instance_methods(false).select{|x|
116
+ method_name = x.to_s
117
+ unless method_name == "compare_by_identity" || method_name == "get_query_parameter" || method_name.end_with?("=") || method_name.end_with?("?") || method_name.end_with?("!") then
118
+ begin
119
+ key = q.get_query_parameter(method_name)
120
+ rescue => exception
121
+ key = method_name
122
+ end
123
+ value = eval("q.#{method_name}")
124
+ self.query_parameters[key] = value unless value.nil?
125
+ end
126
+ }
127
+ end
128
+
129
+ end
130
+ end
@@ -0,0 +1,7 @@
1
+ module MicrosoftKiotaAbstractions
2
+ module RequestOption
3
+ def get_key()
4
+ raise NotImplementedError.new
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module MicrosoftKiotaAbstractions
2
+ module AdditionalDataHolder
3
+ def additional_data
4
+ @additional_data ||= Hash.new
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,209 @@
1
+ # frozen_string_literal: true
2
+ require 'iso8601'
3
+
4
+ module MicrosoftKiotaAbstractions
5
+ # Wrapper Class for ISO8601::Duration
6
+ # Integer support for :years, :months, :weeks, :days, :hours, :minutes, :seconds
7
+ # Initialize with a hash of symbols to integers eg { :years => 3, :days => 4, seconds: => 2}
8
+ # or with an ISO8601 formated string eg "PT3H12M5S".
9
+ class ISODuration
10
+ attr_reader :years, :months, :weeks, :days, :hours, :minutes, :seconds
11
+
12
+ UNITS = { :years => 'Y',
13
+ :months => 'M',
14
+ :weeks => 'W',
15
+ :days => 'D',
16
+ :hours => 'H',
17
+ :minutes => 'M',
18
+ :seconds => 'S'}
19
+
20
+ CONVERSIONS = {
21
+ :ms_to_s => 1000,
22
+ :s_to_m => 60,
23
+ :m_to_h => 60,
24
+ :h_to_d => 24,
25
+ :d_to_w => 7,
26
+ :m_to_y => 12
27
+ }
28
+ def initialize(input)
29
+ if input.is_a? String
30
+ @duration_obj = ISO8601::Duration.new(input)
31
+ elsif input.is_a? Hash
32
+ @duration_obj = parse_hash(input)
33
+ else
34
+ raise StandardError, 'Must provide initialize ISODuration by providing a hash or an ISO8601-formatted string.'
35
+ end
36
+ update_member_variables
37
+ normalize
38
+ end
39
+
40
+ def string
41
+ input = { :seconds => @seconds, :minutes => @minutes, :hours => @hours,
42
+ :days => @days, :weeks => @weeks, :months => @months,
43
+ :years => @years }
44
+ iso_str = 'P'
45
+ UNITS.each do |unit, abrev|
46
+ iso_str += input[unit].to_s + abrev unless input[unit].zero?
47
+ iso_str += 'T' if unit == :days
48
+ end
49
+ iso_str = iso_str.strip
50
+ iso_str = iso_str.chomp('T') if (iso_str[-1]).eql? 'T'
51
+ iso_str
52
+ end
53
+
54
+ def normalize
55
+ if @seconds >= CONVERSIONS[:s_to_m]
56
+ @minutes += (@seconds / CONVERSIONS[:s_to_m]).floor
57
+ @seconds %= CONVERSIONS[:s_to_m]
58
+ end
59
+ if @minutes >= CONVERSIONS[:m_to_h]
60
+ @hours += (@minutes / CONVERSIONS[:m_to_h]).floor
61
+ @minutes %= CONVERSIONS[:m_to_h]
62
+ end
63
+ if @hours >= CONVERSIONS[:h_to_d]
64
+ @days += (@hours / CONVERSIONS[:h_to_d]).floor
65
+ @hours %= CONVERSIONS[:h_to_d]
66
+ end
67
+ if @days >= CONVERSIONS[:d_to_w] && @months == 0 && @years == 0
68
+ @weeks += (@days / CONVERSIONS[:d_to_w]).floor
69
+ @days %= CONVERSIONS[:d_to_w]
70
+ end
71
+ if @months > CONVERSIONS[:m_to_y]
72
+ @years += (@months / CONVERSIONS[:m_to_y]).floor
73
+ @months %= CONVERSIONS[:m_to_y]
74
+ end
75
+ end
76
+
77
+ def seconds=(value)
78
+ input = { :seconds => value, :minutes => @minutes, :hours => @hours,
79
+ :days => @days, :weeks => @weeks, :months => @months,
80
+ :years => @years }
81
+ @duration_obj = parse_hash(input)
82
+ @seconds = value
83
+ normalize
84
+ end
85
+
86
+ def minutes=(value)
87
+ input = { :seconds => @seconds, :minutes => value, :hours => @hours,
88
+ :days => @days, :weeks => @weeks, :months => @months,
89
+ :years => @years }
90
+ @duration_obj = parse_hash(input)
91
+ @minutes = value
92
+ normalize
93
+ end
94
+
95
+ def hours=(value)
96
+ input = { :seconds => @seconds, :minutes => @minutes, :hours => value,
97
+ :days => @days, :weeks => @weeks, :months => @months,
98
+ :years => @years }
99
+ @duration_obj = parse_hash(input)
100
+ @hours = value
101
+ normalize
102
+ end
103
+
104
+ def days=(value)
105
+ input = { :seconds => @seconds, :minutes => @minutes, :hours => @hours,
106
+ :days => value, :weeks => @weeks, :months => @months,
107
+ :years => @years }
108
+ @duration_obj = parse_hash(input)
109
+ @days = value
110
+ normalize
111
+ end
112
+
113
+ def weeks=(value)
114
+ input = { :seconds => @seconds, :minutes => @minutes, :hours => @hours,
115
+ :days => @days, :weeks => value, :months => @months,
116
+ :years => @years }
117
+ @duration_obj = parse_hash(input)
118
+ @weeks = value
119
+ normalize
120
+ end
121
+
122
+ def months=(value)
123
+ input = { :seconds => @seconds, :minutes => @minutes, :hours => @hours,
124
+ :days => @days, :weeks => @weeks, :months => value,
125
+ :years => @years }
126
+ @duration_obj = parse_hash(input)
127
+ @months = value
128
+ normalize
129
+ end
130
+
131
+ def years=(value)
132
+ input = { :seconds => @seconds, :minutes => @minutes, :hours => @hours,
133
+ :days => @days, :weeks => @weeks, :months => @months,
134
+ :years => value }
135
+ @duration_obj = parse_hash(input)
136
+ @years = value
137
+ normalize
138
+ end
139
+
140
+ def abs
141
+ @duration_obj = @duration_obj.abs
142
+ update_member_variables
143
+ return self
144
+ end
145
+
146
+ def +(other)
147
+ new_obj = self.duration_obj + other.duration_obj
148
+ MicrosoftKiotaAbstractions::ISODuration.new(dur_obj_to_hash(new_obj))
149
+ end
150
+
151
+ def -(other)
152
+ new_obj = self.duration_obj - other.duration_obj
153
+ MicrosoftKiotaAbstractions::ISODuration.new(dur_obj_to_hash(new_obj))
154
+ end
155
+
156
+ def ==(other)
157
+ @duration_obj == other.duration_obj
158
+ end
159
+
160
+ def -@
161
+ @duration_obj = -@duration_obj
162
+ update_member_variables
163
+ end
164
+
165
+ def eql?(other)
166
+ @duration_obj == other.duration_obj
167
+ end
168
+
169
+ protected
170
+
171
+ attr_accessor :duration_obj
172
+
173
+ def parse_hash(input)
174
+ iso_str = 'P'
175
+ input.each do |keys, values|
176
+ raise StandardError, "The key #{keys} is not recognized" unless UNITS.key?(keys)
177
+ end
178
+ UNITS.each do |unit, abrev|
179
+ iso_str += input[unit].to_s + abrev if input.key?(unit) && !input[unit].zero?
180
+ iso_str += 'T' if unit == :days
181
+ end
182
+ iso_str = iso_str.strip
183
+ iso_str = iso_str.chomp('T') if (iso_str[-1]).eql? 'T'
184
+ ISO8601::Duration.new(iso_str)
185
+ end
186
+
187
+ def update_member_variables
188
+ @seconds = @duration_obj.seconds.nil? ? 0 : ((@duration_obj.seconds.to_s).split('S')[0]).to_i
189
+ @minutes = @duration_obj.minutes.nil? ? 0 : ((@duration_obj.minutes.to_s).split('H')[0]).to_i
190
+ @hours = @duration_obj.hours.nil? ? 0 : ((@duration_obj.hours.to_s).split('H')[0]).to_i
191
+ @days = @duration_obj.days.nil? ? 0 : ((@duration_obj.days.to_s).split('D')[0]).to_i
192
+ @weeks = @duration_obj.weeks.nil? ? 0 : ((@duration_obj.weeks.to_s).split('W')[0]).to_i
193
+ @months = @duration_obj.months.nil? ? 0 : ((@duration_obj.months.to_s).split('M')[0]).to_i
194
+ @years = @duration_obj.years.nil? ? 0 : ((@duration_obj.years.to_s).split('Y')[0]).to_i
195
+ end
196
+
197
+ def dur_obj_to_hash(dur_obj)
198
+ result_hash = {}
199
+ result_hash[:seconds] = dur_obj.seconds.nil? ? 0 : ((dur_obj.seconds.to_s).split('S')[0]).to_i
200
+ result_hash[:minutes] = dur_obj.minutes.nil? ? 0 : ((dur_obj.minutes.to_s).split('H')[0]).to_i
201
+ result_hash[:hours] = dur_obj.hours.nil? ? 0 : ((dur_obj.hours.to_s).split('H')[0]).to_i
202
+ result_hash[:days] = dur_obj.days.nil? ? 0 : ((dur_obj.days.to_s).split('D')[0]).to_i
203
+ result_hash[:weeks] = dur_obj.weeks.nil? ? 0 : ((dur_obj.weeks.to_s).split('W')[0]).to_i
204
+ result_hash[:months] = dur_obj.months.nil? ? 0 : ((dur_obj.months.to_s).split('M')[0]).to_i
205
+ result_hash[:years] = dur_obj.years.nil? ? 0 : ((dur_obj.years.to_s).split('Y')[0]).to_i
206
+ result_hash
207
+ end
208
+ end
209
+ end
@@ -0,0 +1,11 @@
1
+ module MicrosoftKiotaAbstractions
2
+ module Parsable
3
+ def get_field_deserializers
4
+ raise NotImplementedError.new
5
+ end
6
+
7
+ def serialize(writer)
8
+ raise NotImplementedError.new
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,61 @@
1
+ module MicrosoftKiotaAbstractions
2
+ module ParseNode
3
+
4
+ def get_string_value()
5
+ raise NotImplementedError.new
6
+ end
7
+
8
+ def get_boolean_value()
9
+ raise NotImplementedError.new
10
+ end
11
+
12
+ def get_number_value()
13
+ raise NotImplementedError.new
14
+ end
15
+
16
+ def get_guid_value()
17
+ raise NotImplementedError.new
18
+ end
19
+
20
+ def get_date_value()
21
+ raise NotImplementedError.new
22
+ end
23
+
24
+ def get_time_value()
25
+ raise NotImplementedError.new
26
+ end
27
+
28
+ def get_date_time_value()
29
+ raise NotImplementedError.new
30
+ end
31
+
32
+ def get_duration_value()
33
+ raise NotImplementedError.new
34
+ end
35
+
36
+ def get_collection_of_primitive_values()
37
+ raise NotImplementedError.new
38
+ end
39
+
40
+ def get_collection_of_object_values(factory)
41
+ raise NotImplementedError.new
42
+ end
43
+
44
+ def get_object_value(factory)
45
+ raise NotImplementedError.new
46
+ end
47
+
48
+ def assign_field_values(item)
49
+ raise NotImplementedError.new
50
+ end
51
+
52
+ def get_enum_value(type)
53
+ raise NotImplementedError.new
54
+ end
55
+
56
+ def get_child_node(name)
57
+ raise NotImplementedError.new
58
+ end
59
+
60
+ end
61
+ end
@@ -0,0 +1,7 @@
1
+ module MicrosoftKiotaAbstractions
2
+ module ParseNodeFactory
3
+ def ParseNodeFactory.get_parse_node(content_type, content)
4
+ raise NotImplementedError.new
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,42 @@
1
+ require_relative 'parse_node_factory'
2
+
3
+ module MicrosoftKiotaAbstractions
4
+ class ParseNodeFactoryRegistry
5
+ include ParseNodeFactory
6
+
7
+ class << self
8
+ attr_accessor :default_instance
9
+ def default_instance; @default_instance ||= ParseNodeFactoryRegistry.new; end
10
+ end
11
+
12
+ def default_instance
13
+ self.class.default_instance
14
+ end
15
+
16
+ def content_type_associated_factories
17
+ @content_type_associated_factories ||= Hash.new
18
+ end
19
+
20
+ def get_parse_node(content_type, content)
21
+ if !content_type
22
+ raise Exception.new 'content type cannot be undefined or empty'
23
+ end
24
+ if !content
25
+ raise Exception.new 'content cannot be undefined or empty'
26
+ end
27
+ vendor_specific_content_type = content_type.split(';').first
28
+ factory = @content_type_associated_factories[vendor_specific_content_type]
29
+ if factory
30
+ return factory.get_parse_node(vendor_specific_content_type, content)
31
+ end
32
+
33
+ clean_content_type = vendor_specific_content_type.gsub(/[^\/]+\+/i, '')
34
+ factory = @content_type_associated_factories[clean_content_type]
35
+ if factory
36
+ return factory.get_parse_node(clean_content_type, content)
37
+ end
38
+ raise Exception.new "Content type #{contentType} does not have a factory to be parsed"
39
+ end
40
+
41
+ end
42
+ end
@@ -0,0 +1,69 @@
1
+ module MicrosoftKiotaAbstractions
2
+ module SerializationWriter
3
+
4
+ def write_string_value(key, value)
5
+ raise NotImplementedError.new
6
+ end
7
+
8
+ def write_boolean_value(key, value)
9
+ raise NotImplementedError.new
10
+ end
11
+
12
+ def write_number_value(key, value)
13
+ raise NotImplementedError.new
14
+ end
15
+
16
+ def write_float_value(key, value)
17
+ raise NotImplementedError.new
18
+ end
19
+
20
+ def get_date_value(key, value)
21
+ raise NotImplementedError.new
22
+ end
23
+
24
+ def write_guid_value(key, value)
25
+ raise NotImplementedError.new
26
+ end
27
+
28
+ def write_date_value(key, value)
29
+ raise NotImplementedError.new
30
+ end
31
+
32
+ def write_time_value(key, value)
33
+ raise NotImplementedError.new
34
+ end
35
+
36
+ def write_date_time_value(key, value)
37
+ raise NotImplementedError.new
38
+ end
39
+
40
+ def write_duration_value(key, value)
41
+ raise NotImplementedError.new
42
+ end
43
+
44
+ def write_collection_of_primitive_values(key, value)
45
+ raise NotImplementedError.new
46
+ end
47
+
48
+ def write_collection_of_object_values(key, value)
49
+ raise NotImplementedError.new
50
+ end
51
+
52
+ def write_enum_value(key, value)
53
+ raise NotImplementedError.new
54
+ end
55
+
56
+ def get_serialized_content()
57
+ raise NotImplementedError.new
58
+ end
59
+
60
+ def write_additional_data(type)
61
+ raise NotImplementedError.new
62
+ end
63
+
64
+ def write_any_value(key, value)
65
+ raise NotImplementedError.new
66
+ end
67
+
68
+ end
69
+ end
@@ -0,0 +1,9 @@
1
+ module MicrosoftKiotaAbstractions
2
+ module SerializationWriterFactory
3
+
4
+ def get_serialization_writer(content_type)
5
+ raise NotImplementedError.new
6
+ end
7
+
8
+ end
9
+ end