/usr/lib/ruby/vendor_ruby/amqp/client.rb is in ruby-amqp 0.9.5-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | # encoding: utf-8
require 'amq/client/settings'
require "amqp/session"
module AMQP
# @private
module Client
# @private
AMQP_PORTS = Hash["amqp" => 5672, "amqps" => 5671].freeze
# @private
AMQPS = "amqps".freeze
# {AMQP.connect} delegates to this method. There is no reason for applications or
# libraries to use this method directly.
#
#
# @note This method is not part of the public API and may be removed in the future without any warning.
# @see AMQP.start
# @see AMQP.connect
# @api plugin
#
# @see http://bit.ly/ks8MXK Connecting to The Broker documentation guide
def self.connect(connection_string_or_options = {}, options = {}, &block)
opts = case connection_string_or_options
when String then
parse_connection_uri(connection_string_or_options)
when Hash then
connection_string_or_options
else
Hash.new
end
connection = if block
AMQP.client.connect(opts.merge(options), &block)
else
AMQP.client.connect(opts.merge(options))
end
connection.on_open do
require "amqp/extensions/rabbitmq" if connection.broker.rabbitmq?
end
connection
end
# Parses AMQP connection URI and returns its components as a hash.
#
# h2. vhost naming schemes
#
# It is convenient to be able to specify the AMQP connection
# parameters as a URI string, and various "amqp" URI schemes
# exist. Unfortunately, there is no standard for these URIs, so
# while the schemes share the basic idea, they differ in some
# details. This implementation aims to encourage URIs that work
# as widely as possible.
#
# The URI scheme should be "amqp", or "amqps" if SSL is required.
#
# The host, port, username and password are represented in the
# authority component of the URI in the same way as in http URIs.
#
# The vhost is obtained from the first segment of the path, with the
# leading slash removed. The path should contain only a single
# segment (i.e, the only slash in it should be the leading one).
# If the vhost is to include slashes or other reserved URI
# characters, these should be percent-escaped.
#
# @example How vhost is parsed
#
# AMQP::Client.parse_connection_uri("amqp://dev.rabbitmq.com") # => vhost is nil, so default (/) will be used
# AMQP::Client.parse_connection_uri("amqp://dev.rabbitmq.com/") # => vhost is an empty string
# AMQP::Client.parse_connection_uri("amqp://dev.rabbitmq.com/%2Fvault") # => vhost is /vault
# AMQP::Client.parse_connection_uri("amqp://dev.rabbitmq.com/production") # => vhost is production
# AMQP::Client.parse_connection_uri("amqp://dev.rabbitmq.com/a.b.c") # => vhost is a.b.c
# AMQP::Client.parse_connection_uri("amqp://dev.rabbitmq.com/foo/bar") # => ArgumentError
#
#
# @param [String] connection_string AMQP connection URI, à la JDBC connection string. For example: amqp://bus.megacorp.internal:5877.
# @return [Hash] Connection parameters (:username, :password, :vhost, :host, :port, :ssl)
#
# @raise [ArgumentError] When connection URI schema is not amqp or amqps, or the path contains multiple segments
#
# @see http://bit.ly/ks8MXK Connecting to The Broker documentation guide
# @api public
def self.parse_connection_uri(connection_string)
AMQ::Client::Settings.parse_amqp_url(connection_string)
end
end # Client
# @private
def self.client
@client_implementation ||= AMQP::Session
end
# @private
def self.client=(value)
@client_implementation = value
end
end # AMQP
|