10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/logbrew/span_events.rb', line 10
def validate(events)
return nil if events.nil?
raise SdkError.new("validation_error", "span events must be an array") unless events.is_a?(Array)
raise SdkError.new("validation_error", "span events must contain at most #{LIMIT} entries") if events.length > LIMIT
return nil if events.empty?
events.map.with_index do |event, index|
raise SdkError.new("validation_error", "span event #{index} must be an object") unless event.is_a?(Hash)
event_name = Validation.read(event, "name")
Validation.require_non_empty("span event name", event_name)
event_timestamp = Validation.read(event, "timestamp")
Validation.require_timestamp(event_timestamp) unless event_timestamp.nil?
event_metadata = Validation.require_metadata(Validation.read(event, "metadata"))
{
"name" => event_name
}.tap do |payload|
payload["timestamp"] = event_timestamp unless event_timestamp.nil?
payload["metadata"] = event_metadata unless event_metadata.nil?
end
end
end
|