31 lines
861 B
Ruby
31 lines
861 B
Ruby
# frozen_string_literal: true
|
|
|
|
module ErrorTracking
|
|
module Collector
|
|
class SentryRequestParser
|
|
def self.parse(request)
|
|
body = request.body.read
|
|
|
|
# Request body contains 3 json objects merged together in one StringIO.
|
|
# We need to separate and parse them into array of hash objects.
|
|
json_objects = []
|
|
parser = Yajl::Parser.new
|
|
|
|
parser.parse(body) do |json_object|
|
|
json_objects << json_object
|
|
end
|
|
|
|
# The request contains 3 objects: sentry metadata, type data and event data.
|
|
# We need only last two. Type to decide what to do with the request.
|
|
# And event data as it contains all information about the exception.
|
|
_, type, event = json_objects
|
|
|
|
{
|
|
request_type: type['type'],
|
|
event: event
|
|
}
|
|
end
|
|
end
|
|
end
|
|
end
|