class ElasticAPM::Span::Context::Destination

@api private

Public Class Methods

from_uri(uri_or_str, type: nil, **attrs) click to toggle source
# File lib/elastic_apm/span/context/destination.rb, line 55
def self.from_uri(uri_or_str, type: nil, **attrs)
  uri = normalize(uri_or_str)

  service =
    case type
    when 'http' then http_service(uri)
    else nil
    end

  new(
    address: uri.hostname,
    port: uri.port,
    service: service,
    **attrs
  )
end
new(service: nil, cloud: nil, **attrs) click to toggle source
Calls superclass method
# File lib/elastic_apm/span/context/destination.rb, line 48
def initialize(service: nil, cloud: nil, **attrs)
  super(**attrs)

  self.service = build_service(service)
  self.cloud = build_cloud(cloud)
end

Private Class Methods

http_service(uri) click to toggle source
# File lib/elastic_apm/span/context/destination.rb, line 80
def http_service(uri)
  Service.new(resource: "#{uri.host}:#{uri.port}")
end
normalize(uri_or_str) click to toggle source
# File lib/elastic_apm/span/context/destination.rb, line 75
def normalize(uri_or_str)
  return uri_or_str.dup if uri_or_str.is_a?(URI)
  URI(uri_or_str)
end

Private Instance Methods

build_cloud(cloud = nil) click to toggle source
# File lib/elastic_apm/span/context/destination.rb, line 87
def build_cloud(cloud = nil)
  return Cloud.new unless cloud
  return cloud if cloud.is_a?(Cloud)

  Cloud.new(**cloud)
end
build_service(service = nil) click to toggle source
# File lib/elastic_apm/span/context/destination.rb, line 94
def build_service(service = nil)
  return Service.new unless service
  return service if service.is_a?(Service)

  Service.new(**service)
end