Module: Lapsoss::Adapters::Concerns::EnvelopeBuilder
- Extended by:
- ActiveSupport::Concern
- Included in:
- OtlpAdapter, RollbarAdapter, SentryAdapter
- Defined in:
- lib/lapsoss/adapters/concerns/envelope_builder.rb
Constant Summary collapse
- GZIP_THRESHOLD =
30.kilobytes
Instance Method Summary collapse
-
#build_envelope_wrapper(event) ⇒ Object
Build envelope with common structure.
-
#format_breadcrumbs(breadcrumbs) ⇒ Object
Format breadcrumbs consistently.
-
#format_timestamp(time) ⇒ Object
Format timestamp using AS helpers.
-
#sdk_info ⇒ Object
SDK info for all adapters.
-
#serialize_payload(data, compress: :auto) ⇒ Object
Serialize and optionally compress.
Instance Method Details
#build_envelope_wrapper(event) ⇒ Object
Build envelope with common structure
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/lapsoss/adapters/concerns/envelope_builder.rb', line 24 def build_envelope_wrapper(event) envelope = { id: event.fingerprint.presence || SecureRandom.uuid, timestamp: (event.), environment: event.environment.presence || "production", level: map_level(event.level), platform: "ruby", sdk: sdk_info } # Add event-specific data envelope.merge!(build_event_data(event)) # Add context data envelope.merge!( tags: event..presence, user: event.user_context.presence, extra: event.extra.presence, breadcrumbs: (event.) ).compact_blank end |
#format_breadcrumbs(breadcrumbs) ⇒ Object
Format breadcrumbs consistently
53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/lapsoss/adapters/concerns/envelope_builder.rb', line 53 def () return nil if .blank? .map do |crumb| { timestamp: (crumb[:timestamp]), type: crumb[:type].presence || "default", message: crumb[:message], data: crumb.except(:timestamp, :type, :message).presence }.compact_blank end end |
#format_timestamp(time) ⇒ Object
Format timestamp using AS helpers
47 48 49 50 |
# File 'lib/lapsoss/adapters/concerns/envelope_builder.rb', line 47 def (time) time = Time.current if time.blank? time.in_time_zone("UTC").iso8601 end |
#sdk_info ⇒ Object
SDK info for all adapters
67 68 69 70 71 72 73 74 75 76 |
# File 'lib/lapsoss/adapters/concerns/envelope_builder.rb', line 67 def sdk_info { name: "lapsoss", version: Lapsoss::VERSION, packages: [ { name: "lapsoss-ruby", version: Lapsoss::VERSION } ] } end |
#serialize_payload(data, compress: :auto) ⇒ Object
Serialize and optionally compress
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/lapsoss/adapters/concerns/envelope_builder.rb', line 79 def serialize_payload(data, compress: :auto) json = ActiveSupport::JSON.encode(data) should_compress = case compress when :auto then json.bytesize >= compress_threshold when true then true else false end if should_compress [ ActiveSupport::Gzip.compress(json), true ] else [ json, false ] end end |