class Sentry::Attachment

def infer_filename(path)

def infer_filename(path)
  if path
    File.basename(path)
  else
    raise ArgumentError, "filename or path is required"
  end
end

def initialize(bytes: nil, filename: nil, content_type: nil, path: nil)

def initialize(bytes: nil, filename: nil, content_type: nil, path: nil)
  @bytes = bytes
  @filename = filename || infer_filename(path)
  @path = path
  @content_type = content_type
end

def payload

def payload
  @payload ||= if bytes
    bytes
  else
    File.binread(path)
  end
rescue Errno::ENOENT
  raise PathNotFoundError, "Failed to read attachment file, file not found: #{path}"
end

def to_envelope_headers

def to_envelope_headers
  { type: "attachment", filename: filename, content_type: content_type, length: payload.bytesize }
end