Description
Describe the bug
When trying to retrieve the calendars (or any calendar response) a deserialisation error occurs:
[NoMethodError: undefined method `create_from_discriminator_value' for an instance of Hash](http://localhost:3000/calendars#)
This occurs whilst trying to execute this line, parsing the allowedOnlineMeetingProviders
field:
https://github.com/microsoftgraph/msgraph-sdk-ruby/blob/main/lib/models/calendar.rb#L235
Expected behavior
It should parse the API response correctly, and not raise an error.
How to reproduce
- Create an authenticated ruby
client
, with access to presumably a minimum ofCalendars.Read
. - Execute this:
@calendars = client.me.calendars.get.resume
SDK Version
0.22.2
Latest version known to work for scenario above?
No response
Known Workarounds
I've monkey patched this method to just comment out the offending line for now. It's not an acceptable workaround.
Debug output
Click to expand log
20:50:30 web.1 | NoMethodError (Error during deserialization)
20:50:30 web.1 | Caused by: NoMethodError (Error during deserialization)
20:50:30 web.1 | Caused by: NoMethodError (Error during deserialization)
20:50:30 web.1 | Caused by: NoMethodError (undefined method `create_from_discriminator_value' for an instance of Hash)
20:50:30 web.1 |
20:50:30 web.1 | Information for: NoMethodError (Error during deserialization):
20:50:30 web.1 |
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:99:in `rescue in get_object_value'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:93:in `get_object_value'
20:50:30 web.1 | microsoft_kiota_faraday (0.14.0) lib/microsoft_kiota_faraday/faraday_request_adapter.rb:61:in `block in send_async'
20:50:30 web.1 |
20:50:30 web.1 | Information for cause: NoMethodError (Error during deserialization):
20:50:30 web.1 |
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:99:in `rescue in get_object_value'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:93:in `get_object_value'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:89:in `block in get_collection_of_object_values'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:85:in `map'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:85:in `get_collection_of_object_values'
20:50:30 web.1 | microsoft_graph (0.22.2) lib/models/calendar_collection_response.rb:34:in `block in get_field_deserializers'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:109:in `block in assign_field_values'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:104:in `each'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:104:in `assign_field_values'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:96:in `get_object_value'
20:50:30 web.1 | microsoft_kiota_faraday (0.14.0) lib/microsoft_kiota_faraday/faraday_request_adapter.rb:61:in `block in send_async'
20:50:30 web.1 |
20:50:30 web.1 | Information for cause: NoMethodError (Error during deserialization):
20:50:30 web.1 |
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:99:in `rescue in get_object_value'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:93:in `get_object_value'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:89:in `block in get_collection_of_object_values'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:85:in `map'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:85:in `get_collection_of_object_values'
20:50:30 web.1 | microsoft_graph (0.22.2) lib/models/calendar.rb:235:in `block in get_field_deserializers'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:109:in `block in assign_field_values'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:104:in `each'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:104:in `assign_field_values'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:96:in `get_object_value'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:89:in `block in get_collection_of_object_values'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:85:in `map'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:85:in `get_collection_of_object_values'
20:50:30 web.1 | microsoft_graph (0.22.2) lib/models/calendar_collection_response.rb:34:in `block in get_field_deserializers'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:109:in `block in assign_field_values'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:104:in `each'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:104:in `assign_field_values'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:96:in `get_object_value'
20:50:30 web.1 | microsoft_kiota_faraday (0.14.0) lib/microsoft_kiota_faraday/faraday_request_adapter.rb:61:in `block in send_async'
20:50:30 web.1 | Information for cause: NoMethodError (undefined method `create_from_discriminator_value' for an instance of Hash):
20:50:30 web.1 |
20:50:30 web.1 | microsoft_graph (0.22.2) lib/models/calendar.rb:235:in `block (2 levels) in get_field_deserializers'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:95:in `get_object_value'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:89:in `block in get_collection_of_object_values'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:85:in `map'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:85:in `get_collection_of_object_values'
20:50:30 web.1 | microsoft_graph (0.22.2) lib/models/calendar.rb:235:in `block in get_field_deserializers'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:109:in `block in assign_field_values'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:104:in `each'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:104:in `assign_field_values'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:96:in `get_object_value'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:89:in `block in get_collection_of_object_values'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:85:in `map'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:85:in `get_collection_of_object_values'
20:50:30 web.1 | microsoft_graph (0.22.2) lib/models/calendar_collection_response.rb:34:in `block in get_field_deserializers'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:109:in `block in assign_field_values'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:104:in `each'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:104:in `assign_field_values'
20:50:30 web.1 | microsoft_kiota_serialization_json (0.9.1) lib/microsoft_kiota_serialization_json/json_parse_node.rb:96:in `get_object_value'
20:50:30 web.1 | microsoft_kiota_faraday (0.14.0) lib/microsoft_kiota_faraday/faraday_request_adapter.rb:61:in `block in send_async'
Configuration
No response
Other information
I'm reasonably confident that this is occurring because this line:
https://github.com/microsoftgraph/msgraph-sdk-ruby/blob/main/lib/models/calendar.rb#L235
"allowedOnlineMeetingProviders" => lambda {|n| @allowed_online_meeting_providers = n.get_collection_of_object_values(lambda {|pn| MicrosoftGraph::Models::OnlineMeetingProviderType.create_from_discriminator_value(pn) }) },
Is expecting MicrosoftGraph::Models::OnlineMeetingProviderType
to be something like a MicrosoftGraph::Models::Entity
, but actually, it's just a Hash
:
OnlineMeetingProviderType = {
Unknown: :Unknown,
SkypeForBusiness: :SkypeForBusiness,
SkypeForConsumer: :SkypeForConsumer,
TeamsForBusiness: :TeamsForBusiness,
}
I'm not entirely sure what to do about this, partially because I assume this should actually be a just returning some sort of array of symbols, but more importantly, I believe this gem is auto-generated by Kiota somehow?
I'm happy to put a PR in, but could do with some direction!
Or maybe I'm completely wrong—lemme know!