rcs 1.0.14 → 1.0.15

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.
@@ -0,0 +1,106 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "inbound_location_message_coordinates"
4
+ require_relative "inbound_message_metadata"
5
+ require "ostruct"
6
+ require "json"
7
+
8
+ module Pinnacle
9
+ class InboundLocationMessage
10
+ # @return [String]
11
+ attr_reader :message_type
12
+ # @return [Pinnacle::InboundLocationMessageCoordinates]
13
+ attr_reader :coordinates
14
+ # @return [String]
15
+ attr_reader :from
16
+ # @return [String]
17
+ attr_reader :to
18
+ # @return [Pinnacle::InboundMessageMetadata]
19
+ attr_reader :metadata
20
+ # @return [OpenStruct] Additional properties unmapped to the current class definition
21
+ attr_reader :additional_properties
22
+ # @return [Object]
23
+ attr_reader :_field_set
24
+ protected :_field_set
25
+
26
+ OMIT = Object.new
27
+
28
+ # @param message_type [String]
29
+ # @param coordinates [Pinnacle::InboundLocationMessageCoordinates]
30
+ # @param from [String]
31
+ # @param to [String]
32
+ # @param metadata [Pinnacle::InboundMessageMetadata]
33
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
34
+ # @return [Pinnacle::InboundLocationMessage]
35
+ def initialize(coordinates:, from:, to:, message_type: OMIT, metadata: OMIT, additional_properties: nil)
36
+ @message_type = message_type if message_type != OMIT
37
+ @coordinates = coordinates
38
+ @from = from
39
+ @to = to
40
+ @metadata = metadata if metadata != OMIT
41
+ @additional_properties = additional_properties
42
+ @_field_set = {
43
+ "messageType": message_type,
44
+ "coordinates": coordinates,
45
+ "from": from,
46
+ "to": to,
47
+ "metadata": metadata
48
+ }.reject do |_k, v|
49
+ v == OMIT
50
+ end
51
+ end
52
+
53
+ # Deserialize a JSON object to an instance of InboundLocationMessage
54
+ #
55
+ # @param json_object [String]
56
+ # @return [Pinnacle::InboundLocationMessage]
57
+ def self.from_json(json_object:)
58
+ struct = JSON.parse(json_object, object_class: OpenStruct)
59
+ parsed_json = JSON.parse(json_object)
60
+ message_type = parsed_json["messageType"]
61
+ if parsed_json["coordinates"].nil?
62
+ coordinates = nil
63
+ else
64
+ coordinates = parsed_json["coordinates"].to_json
65
+ coordinates = Pinnacle::InboundLocationMessageCoordinates.from_json(json_object: coordinates)
66
+ end
67
+ from = parsed_json["from"]
68
+ to = parsed_json["to"]
69
+ if parsed_json["metadata"].nil?
70
+ metadata = nil
71
+ else
72
+ metadata = parsed_json["metadata"].to_json
73
+ metadata = Pinnacle::InboundMessageMetadata.from_json(json_object: metadata)
74
+ end
75
+ new(
76
+ message_type: message_type,
77
+ coordinates: coordinates,
78
+ from: from,
79
+ to: to,
80
+ metadata: metadata,
81
+ additional_properties: struct
82
+ )
83
+ end
84
+
85
+ # Serialize an instance of InboundLocationMessage to a JSON object
86
+ #
87
+ # @return [String]
88
+ def to_json(*_args)
89
+ @_field_set&.to_json
90
+ end
91
+
92
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given
93
+ # hash and check each fields type against the current object's property
94
+ # definitions.
95
+ #
96
+ # @param obj [Object]
97
+ # @return [Void]
98
+ def self.validate_raw(obj:)
99
+ obj.message_type&.is_a?(String) != false || raise("Passed value for field obj.message_type is not the expected type, validation failed.")
100
+ Pinnacle::InboundLocationMessageCoordinates.validate_raw(obj: obj.coordinates)
101
+ obj.from.is_a?(String) != false || raise("Passed value for field obj.from is not the expected type, validation failed.")
102
+ obj.to.is_a?(String) != false || raise("Passed value for field obj.to is not the expected type, validation failed.")
103
+ obj.metadata.nil? || Pinnacle::InboundMessageMetadata.validate_raw(obj: obj.metadata)
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "ostruct"
4
+ require "json"
5
+
6
+ module Pinnacle
7
+ class InboundLocationMessageCoordinates
8
+ # @return [Float]
9
+ attr_reader :lat
10
+ # @return [Float]
11
+ attr_reader :lng
12
+ # @return [OpenStruct] Additional properties unmapped to the current class definition
13
+ attr_reader :additional_properties
14
+ # @return [Object]
15
+ attr_reader :_field_set
16
+ protected :_field_set
17
+
18
+ OMIT = Object.new
19
+
20
+ # @param lat [Float]
21
+ # @param lng [Float]
22
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
23
+ # @return [Pinnacle::InboundLocationMessageCoordinates]
24
+ def initialize(lat:, lng:, additional_properties: nil)
25
+ @lat = lat
26
+ @lng = lng
27
+ @additional_properties = additional_properties
28
+ @_field_set = { "lat": lat, "lng": lng }
29
+ end
30
+
31
+ # Deserialize a JSON object to an instance of InboundLocationMessageCoordinates
32
+ #
33
+ # @param json_object [String]
34
+ # @return [Pinnacle::InboundLocationMessageCoordinates]
35
+ def self.from_json(json_object:)
36
+ struct = JSON.parse(json_object, object_class: OpenStruct)
37
+ parsed_json = JSON.parse(json_object)
38
+ lat = parsed_json["lat"]
39
+ lng = parsed_json["lng"]
40
+ new(
41
+ lat: lat,
42
+ lng: lng,
43
+ additional_properties: struct
44
+ )
45
+ end
46
+
47
+ # Serialize an instance of InboundLocationMessageCoordinates to a JSON object
48
+ #
49
+ # @return [String]
50
+ def to_json(*_args)
51
+ @_field_set&.to_json
52
+ end
53
+
54
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given
55
+ # hash and check each fields type against the current object's property
56
+ # definitions.
57
+ #
58
+ # @param obj [Object]
59
+ # @return [Void]
60
+ def self.validate_raw(obj:)
61
+ obj.lat.is_a?(Float) != false || raise("Passed value for field obj.lat is not the expected type, validation failed.")
62
+ obj.lng.is_a?(Float) != false || raise("Passed value for field obj.lng is not the expected type, validation failed.")
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,112 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "media_payload"
4
+ require_relative "inbound_message_metadata"
5
+ require "ostruct"
6
+ require "json"
7
+
8
+ module Pinnacle
9
+ class InboundMediaMessage
10
+ # @return [String]
11
+ attr_reader :message_type
12
+ # @return [String]
13
+ attr_reader :text
14
+ # @return [Array<Pinnacle::MediaPayload>]
15
+ attr_reader :media_urls
16
+ # @return [String]
17
+ attr_reader :from
18
+ # @return [String]
19
+ attr_reader :to
20
+ # @return [Pinnacle::InboundMessageMetadata]
21
+ attr_reader :metadata
22
+ # @return [OpenStruct] Additional properties unmapped to the current class definition
23
+ attr_reader :additional_properties
24
+ # @return [Object]
25
+ attr_reader :_field_set
26
+ protected :_field_set
27
+
28
+ OMIT = Object.new
29
+
30
+ # @param message_type [String]
31
+ # @param text [String]
32
+ # @param media_urls [Array<Pinnacle::MediaPayload>]
33
+ # @param from [String]
34
+ # @param to [String]
35
+ # @param metadata [Pinnacle::InboundMessageMetadata]
36
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
37
+ # @return [Pinnacle::InboundMediaMessage]
38
+ def initialize(media_urls:, from:, to:, message_type: OMIT, text: OMIT, metadata: OMIT, additional_properties: nil)
39
+ @message_type = message_type if message_type != OMIT
40
+ @text = text if text != OMIT
41
+ @media_urls = media_urls
42
+ @from = from
43
+ @to = to
44
+ @metadata = metadata if metadata != OMIT
45
+ @additional_properties = additional_properties
46
+ @_field_set = {
47
+ "messageType": message_type,
48
+ "text": text,
49
+ "mediaUrls": media_urls,
50
+ "from": from,
51
+ "to": to,
52
+ "metadata": metadata
53
+ }.reject do |_k, v|
54
+ v == OMIT
55
+ end
56
+ end
57
+
58
+ # Deserialize a JSON object to an instance of InboundMediaMessage
59
+ #
60
+ # @param json_object [String]
61
+ # @return [Pinnacle::InboundMediaMessage]
62
+ def self.from_json(json_object:)
63
+ struct = JSON.parse(json_object, object_class: OpenStruct)
64
+ parsed_json = JSON.parse(json_object)
65
+ message_type = parsed_json["messageType"]
66
+ text = parsed_json["text"]
67
+ media_urls = parsed_json["mediaUrls"]&.map do |item|
68
+ item = item.to_json
69
+ Pinnacle::MediaPayload.from_json(json_object: item)
70
+ end
71
+ from = parsed_json["from"]
72
+ to = parsed_json["to"]
73
+ if parsed_json["metadata"].nil?
74
+ metadata = nil
75
+ else
76
+ metadata = parsed_json["metadata"].to_json
77
+ metadata = Pinnacle::InboundMessageMetadata.from_json(json_object: metadata)
78
+ end
79
+ new(
80
+ message_type: message_type,
81
+ text: text,
82
+ media_urls: media_urls,
83
+ from: from,
84
+ to: to,
85
+ metadata: metadata,
86
+ additional_properties: struct
87
+ )
88
+ end
89
+
90
+ # Serialize an instance of InboundMediaMessage to a JSON object
91
+ #
92
+ # @return [String]
93
+ def to_json(*_args)
94
+ @_field_set&.to_json
95
+ end
96
+
97
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given
98
+ # hash and check each fields type against the current object's property
99
+ # definitions.
100
+ #
101
+ # @param obj [Object]
102
+ # @return [Void]
103
+ def self.validate_raw(obj:)
104
+ obj.message_type&.is_a?(String) != false || raise("Passed value for field obj.message_type is not the expected type, validation failed.")
105
+ obj.text&.is_a?(String) != false || raise("Passed value for field obj.text is not the expected type, validation failed.")
106
+ obj.media_urls.is_a?(Array) != false || raise("Passed value for field obj.media_urls is not the expected type, validation failed.")
107
+ obj.from.is_a?(String) != false || raise("Passed value for field obj.from is not the expected type, validation failed.")
108
+ obj.to.is_a?(String) != false || raise("Passed value for field obj.to is not the expected type, validation failed.")
109
+ obj.metadata.nil? || Pinnacle::InboundMessageMetadata.validate_raw(obj: obj.metadata)
110
+ end
111
+ end
112
+ end
@@ -0,0 +1,88 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "inbound_message_message_type"
4
+ require_relative "inbound_message_metadata"
5
+ require "ostruct"
6
+ require "json"
7
+
8
+ module Pinnacle
9
+ class InboundMessage
10
+ # @return [String]
11
+ attr_reader :from
12
+ # @return [String]
13
+ attr_reader :to
14
+ # @return [Pinnacle::InboundMessageMessageType]
15
+ attr_reader :message_type
16
+ # @return [Pinnacle::InboundMessageMetadata]
17
+ attr_reader :metadata
18
+ # @return [OpenStruct] Additional properties unmapped to the current class definition
19
+ attr_reader :additional_properties
20
+ # @return [Object]
21
+ attr_reader :_field_set
22
+ protected :_field_set
23
+
24
+ OMIT = Object.new
25
+
26
+ # @param from [String]
27
+ # @param to [String]
28
+ # @param message_type [Pinnacle::InboundMessageMessageType]
29
+ # @param metadata [Pinnacle::InboundMessageMetadata]
30
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
31
+ # @return [Pinnacle::InboundMessage]
32
+ def initialize(from:, to:, message_type:, metadata: OMIT, additional_properties: nil)
33
+ @from = from
34
+ @to = to
35
+ @message_type = message_type
36
+ @metadata = metadata if metadata != OMIT
37
+ @additional_properties = additional_properties
38
+ @_field_set = { "from": from, "to": to, "messageType": message_type, "metadata": metadata }.reject do |_k, v|
39
+ v == OMIT
40
+ end
41
+ end
42
+
43
+ # Deserialize a JSON object to an instance of InboundMessage
44
+ #
45
+ # @param json_object [String]
46
+ # @return [Pinnacle::InboundMessage]
47
+ def self.from_json(json_object:)
48
+ struct = JSON.parse(json_object, object_class: OpenStruct)
49
+ parsed_json = JSON.parse(json_object)
50
+ from = parsed_json["from"]
51
+ to = parsed_json["to"]
52
+ message_type = parsed_json["messageType"]
53
+ if parsed_json["metadata"].nil?
54
+ metadata = nil
55
+ else
56
+ metadata = parsed_json["metadata"].to_json
57
+ metadata = Pinnacle::InboundMessageMetadata.from_json(json_object: metadata)
58
+ end
59
+ new(
60
+ from: from,
61
+ to: to,
62
+ message_type: message_type,
63
+ metadata: metadata,
64
+ additional_properties: struct
65
+ )
66
+ end
67
+
68
+ # Serialize an instance of InboundMessage to a JSON object
69
+ #
70
+ # @return [String]
71
+ def to_json(*_args)
72
+ @_field_set&.to_json
73
+ end
74
+
75
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given
76
+ # hash and check each fields type against the current object's property
77
+ # definitions.
78
+ #
79
+ # @param obj [Object]
80
+ # @return [Void]
81
+ def self.validate_raw(obj:)
82
+ obj.from.is_a?(String) != false || raise("Passed value for field obj.from is not the expected type, validation failed.")
83
+ obj.to.is_a?(String) != false || raise("Passed value for field obj.to is not the expected type, validation failed.")
84
+ obj.message_type.is_a?(Pinnacle::InboundMessageMessageType) != false || raise("Passed value for field obj.message_type is not the expected type, validation failed.")
85
+ obj.metadata.nil? || Pinnacle::InboundMessageMetadata.validate_raw(obj: obj.metadata)
86
+ end
87
+ end
88
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinnacle
4
+ class InboundMessageMessageType
5
+ TEXT = "text"
6
+ MEDIA = "media"
7
+ ACTION = "action"
8
+ LOCATION = "location"
9
+ end
10
+ end
@@ -0,0 +1,79 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "sender_metadata"
4
+ require_relative "message_metadata"
5
+ require "ostruct"
6
+ require "json"
7
+
8
+ module Pinnacle
9
+ class InboundMessageMetadata
10
+ # @return [Pinnacle::SenderMetadata]
11
+ attr_reader :sender
12
+ # @return [Pinnacle::MessageMetadata]
13
+ attr_reader :message
14
+ # @return [OpenStruct] Additional properties unmapped to the current class definition
15
+ attr_reader :additional_properties
16
+ # @return [Object]
17
+ attr_reader :_field_set
18
+ protected :_field_set
19
+
20
+ OMIT = Object.new
21
+
22
+ # @param sender [Pinnacle::SenderMetadata]
23
+ # @param message [Pinnacle::MessageMetadata]
24
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
25
+ # @return [Pinnacle::InboundMessageMetadata]
26
+ def initialize(sender: OMIT, message: OMIT, additional_properties: nil)
27
+ @sender = sender if sender != OMIT
28
+ @message = message if message != OMIT
29
+ @additional_properties = additional_properties
30
+ @_field_set = { "sender": sender, "message": message }.reject do |_k, v|
31
+ v == OMIT
32
+ end
33
+ end
34
+
35
+ # Deserialize a JSON object to an instance of InboundMessageMetadata
36
+ #
37
+ # @param json_object [String]
38
+ # @return [Pinnacle::InboundMessageMetadata]
39
+ def self.from_json(json_object:)
40
+ struct = JSON.parse(json_object, object_class: OpenStruct)
41
+ parsed_json = JSON.parse(json_object)
42
+ if parsed_json["sender"].nil?
43
+ sender = nil
44
+ else
45
+ sender = parsed_json["sender"].to_json
46
+ sender = Pinnacle::SenderMetadata.from_json(json_object: sender)
47
+ end
48
+ if parsed_json["message"].nil?
49
+ message = nil
50
+ else
51
+ message = parsed_json["message"].to_json
52
+ message = Pinnacle::MessageMetadata.from_json(json_object: message)
53
+ end
54
+ new(
55
+ sender: sender,
56
+ message: message,
57
+ additional_properties: struct
58
+ )
59
+ end
60
+
61
+ # Serialize an instance of InboundMessageMetadata to a JSON object
62
+ #
63
+ # @return [String]
64
+ def to_json(*_args)
65
+ @_field_set&.to_json
66
+ end
67
+
68
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given
69
+ # hash and check each fields type against the current object's property
70
+ # definitions.
71
+ #
72
+ # @param obj [Object]
73
+ # @return [Void]
74
+ def self.validate_raw(obj:)
75
+ obj.sender.nil? || Pinnacle::SenderMetadata.validate_raw(obj: obj.sender)
76
+ obj.message.nil? || Pinnacle::MessageMetadata.validate_raw(obj: obj.message)
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,100 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "inbound_message_metadata"
4
+ require "ostruct"
5
+ require "json"
6
+
7
+ module Pinnacle
8
+ class InboundTextMessage
9
+ # @return [String]
10
+ attr_reader :message_type
11
+ # @return [String]
12
+ attr_reader :text
13
+ # @return [String]
14
+ attr_reader :from
15
+ # @return [String]
16
+ attr_reader :to
17
+ # @return [Pinnacle::InboundMessageMetadata]
18
+ attr_reader :metadata
19
+ # @return [OpenStruct] Additional properties unmapped to the current class definition
20
+ attr_reader :additional_properties
21
+ # @return [Object]
22
+ attr_reader :_field_set
23
+ protected :_field_set
24
+
25
+ OMIT = Object.new
26
+
27
+ # @param message_type [String]
28
+ # @param text [String]
29
+ # @param from [String]
30
+ # @param to [String]
31
+ # @param metadata [Pinnacle::InboundMessageMetadata]
32
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
33
+ # @return [Pinnacle::InboundTextMessage]
34
+ def initialize(text:, from:, to:, message_type: OMIT, metadata: OMIT, additional_properties: nil)
35
+ @message_type = message_type if message_type != OMIT
36
+ @text = text
37
+ @from = from
38
+ @to = to
39
+ @metadata = metadata if metadata != OMIT
40
+ @additional_properties = additional_properties
41
+ @_field_set = {
42
+ "messageType": message_type,
43
+ "text": text,
44
+ "from": from,
45
+ "to": to,
46
+ "metadata": metadata
47
+ }.reject do |_k, v|
48
+ v == OMIT
49
+ end
50
+ end
51
+
52
+ # Deserialize a JSON object to an instance of InboundTextMessage
53
+ #
54
+ # @param json_object [String]
55
+ # @return [Pinnacle::InboundTextMessage]
56
+ def self.from_json(json_object:)
57
+ struct = JSON.parse(json_object, object_class: OpenStruct)
58
+ parsed_json = JSON.parse(json_object)
59
+ message_type = parsed_json["messageType"]
60
+ text = parsed_json["text"]
61
+ from = parsed_json["from"]
62
+ to = parsed_json["to"]
63
+ if parsed_json["metadata"].nil?
64
+ metadata = nil
65
+ else
66
+ metadata = parsed_json["metadata"].to_json
67
+ metadata = Pinnacle::InboundMessageMetadata.from_json(json_object: metadata)
68
+ end
69
+ new(
70
+ message_type: message_type,
71
+ text: text,
72
+ from: from,
73
+ to: to,
74
+ metadata: metadata,
75
+ additional_properties: struct
76
+ )
77
+ end
78
+
79
+ # Serialize an instance of InboundTextMessage to a JSON object
80
+ #
81
+ # @return [String]
82
+ def to_json(*_args)
83
+ @_field_set&.to_json
84
+ end
85
+
86
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given
87
+ # hash and check each fields type against the current object's property
88
+ # definitions.
89
+ #
90
+ # @param obj [Object]
91
+ # @return [Void]
92
+ def self.validate_raw(obj:)
93
+ obj.message_type&.is_a?(String) != false || raise("Passed value for field obj.message_type is not the expected type, validation failed.")
94
+ obj.text.is_a?(String) != false || raise("Passed value for field obj.text is not the expected type, validation failed.")
95
+ obj.from.is_a?(String) != false || raise("Passed value for field obj.from is not the expected type, validation failed.")
96
+ obj.to.is_a?(String) != false || raise("Passed value for field obj.to is not the expected type, validation failed.")
97
+ obj.metadata.nil? || Pinnacle::InboundMessageMetadata.validate_raw(obj: obj.metadata)
98
+ end
99
+ end
100
+ end
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "ostruct"
4
+ require "json"
5
+
6
+ module Pinnacle
7
+ class MediaPayload
8
+ # @return [String]
9
+ attr_reader :type
10
+ # @return [String]
11
+ attr_reader :url
12
+ # @return [OpenStruct] Additional properties unmapped to the current class definition
13
+ attr_reader :additional_properties
14
+ # @return [Object]
15
+ attr_reader :_field_set
16
+ protected :_field_set
17
+
18
+ OMIT = Object.new
19
+
20
+ # @param type [String]
21
+ # @param url [String]
22
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
23
+ # @return [Pinnacle::MediaPayload]
24
+ def initialize(type:, url:, additional_properties: nil)
25
+ @type = type
26
+ @url = url
27
+ @additional_properties = additional_properties
28
+ @_field_set = { "type": type, "url": url }
29
+ end
30
+
31
+ # Deserialize a JSON object to an instance of MediaPayload
32
+ #
33
+ # @param json_object [String]
34
+ # @return [Pinnacle::MediaPayload]
35
+ def self.from_json(json_object:)
36
+ struct = JSON.parse(json_object, object_class: OpenStruct)
37
+ parsed_json = JSON.parse(json_object)
38
+ type = parsed_json["type"]
39
+ url = parsed_json["url"]
40
+ new(
41
+ type: type,
42
+ url: url,
43
+ additional_properties: struct
44
+ )
45
+ end
46
+
47
+ # Serialize an instance of MediaPayload to a JSON object
48
+ #
49
+ # @return [String]
50
+ def to_json(*_args)
51
+ @_field_set&.to_json
52
+ end
53
+
54
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given
55
+ # hash and check each fields type against the current object's property
56
+ # definitions.
57
+ #
58
+ # @param obj [Object]
59
+ # @return [Void]
60
+ def self.validate_raw(obj:)
61
+ obj.type.is_a?(String) != false || raise("Passed value for field obj.type is not the expected type, validation failed.")
62
+ obj.url.is_a?(String) != false || raise("Passed value for field obj.url is not the expected type, validation failed.")
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,56 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "date"
4
+ require "ostruct"
5
+ require "json"
6
+
7
+ module Pinnacle
8
+ class MessageMetadata
9
+ # @return [DateTime]
10
+ attr_reader :timestamp
11
+ # @return [OpenStruct] Additional properties unmapped to the current class definition
12
+ attr_reader :additional_properties
13
+ # @return [Object]
14
+ attr_reader :_field_set
15
+ protected :_field_set
16
+
17
+ OMIT = Object.new
18
+
19
+ # @param timestamp [DateTime]
20
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
21
+ # @return [Pinnacle::MessageMetadata]
22
+ def initialize(timestamp:, additional_properties: nil)
23
+ @timestamp = timestamp
24
+ @additional_properties = additional_properties
25
+ @_field_set = { "timestamp": timestamp }
26
+ end
27
+
28
+ # Deserialize a JSON object to an instance of MessageMetadata
29
+ #
30
+ # @param json_object [String]
31
+ # @return [Pinnacle::MessageMetadata]
32
+ def self.from_json(json_object:)
33
+ struct = JSON.parse(json_object, object_class: OpenStruct)
34
+ parsed_json = JSON.parse(json_object)
35
+ timestamp = (DateTime.parse(parsed_json["timestamp"]) unless parsed_json["timestamp"].nil?)
36
+ new(timestamp: timestamp, additional_properties: struct)
37
+ end
38
+
39
+ # Serialize an instance of MessageMetadata to a JSON object
40
+ #
41
+ # @return [String]
42
+ def to_json(*_args)
43
+ @_field_set&.to_json
44
+ end
45
+
46
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given
47
+ # hash and check each fields type against the current object's property
48
+ # definitions.
49
+ #
50
+ # @param obj [Object]
51
+ # @return [Void]
52
+ def self.validate_raw(obj:)
53
+ obj.timestamp.is_a?(DateTime) != false || raise("Passed value for field obj.timestamp is not the expected type, validation failed.")
54
+ end
55
+ end
56
+ end