Sha256: bb86af698ece1feae89e6b4dffada6b3acf7eaa142ae74566c9176a662da4c5f

Contents?: true

Size: 1.17 KB

Versions: 28

Compression:

Stored size: 1.17 KB

Contents

# encoding: utf-8

require "gorgon_amq/settings"

require "cgi"
require "uri"

module GorgonAMQ
  class URI
    # @private
    AMQP_PORTS = {"amqp" => 5672, "amqps" => 5671}.freeze


    def self.parse(connection_string)
      uri = ::URI.parse(connection_string)
      raise ArgumentError.new("Connection URI must use amqp or amqps schema (example: amqp://bus.megacorp.internal:5766), learn more at http://bit.ly/ks8MXK") unless %w{amqp amqps}.include?(uri.scheme)

      opts = {}

      opts[:scheme] = uri.scheme
      opts[:user]   = ::URI.unescape(uri.user) if uri.user
      opts[:pass]   = ::URI.unescape(uri.password) if uri.password
      opts[:host]   = uri.host if uri.host
      opts[:port]   = uri.port || AMQP_PORTS[uri.scheme]
      opts[:ssl]    = uri.scheme.to_s.downcase =~ /amqps/i
      if uri.path =~ %r{^/(.*)}
        raise ArgumentError.new("#{uri} has multiple-segment path; please percent-encode any slashes in the vhost name (e.g. /production => %2Fproduction). Learn more at http://bit.ly/amqp-gem-and-connection-uris") if $1.index('/')
        opts[:vhost] = ::URI.unescape($1)
      end

      opts
    end
    def self.parse_amqp_url(s)
      parse(s)
    end
  end
end

Version data entries

28 entries across 28 versions & 1 rubygems

Version Path
gorgon-0.11.1 lib/gorgon_amq-protocol/lib/gorgon_amq/uri.rb
gorgon-0.11.0 lib/gorgon_amq-protocol/lib/gorgon_amq/uri.rb
gorgon-0.10.5 lib/gorgon_amq-protocol/lib/gorgon_amq/uri.rb
gorgon-0.10.4 lib/gorgon_amq-protocol/lib/gorgon_amq/uri.rb
gorgon-0.10.3 lib/gorgon_amq-protocol/lib/gorgon_amq/uri.rb
gorgon-0.10.2 lib/gorgon_amq-protocol/lib/gorgon_amq/uri.rb
gorgon-0.10.1 lib/gorgon_amq-protocol/lib/gorgon_amq/uri.rb
gorgon-0.10.0 lib/gorgon_amq-protocol/lib/gorgon_amq/uri.rb
gorgon-0.9.0 lib/gorgon_amq-protocol/lib/gorgon_amq/uri.rb
gorgon-0.8.4 lib/gorgon_amq-protocol/lib/gorgon_amq/uri.rb
gorgon-0.8.3 lib/gorgon_amq-protocol/lib/gorgon_amq/uri.rb
gorgon-0.8.2 lib/gorgon_amq-protocol/lib/gorgon_amq/uri.rb
gorgon-0.8.1 lib/gorgon_amq-protocol/lib/gorgon_amq/uri.rb
gorgon-0.8.0 lib/gorgon_amq-protocol/lib/gorgon_amq/uri.rb
gorgon-0.7.1 lib/gorgon_amq-protocol/lib/gorgon_amq/uri.rb
gorgon-0.7.0 lib/gorgon_amq-protocol/lib/gorgon_amq/uri.rb
gorgon-0.7.0.rc4 lib/gorgon_amq-protocol/lib/gorgon_amq/uri.rb
gorgon-0.7.0.rc3 lib/gorgon_amq-protocol/lib/gorgon_amq/uri.rb
gorgon-0.7.0.rc2 lib/gorgon_amq-protocol/lib/gorgon_amq/uri.rb
gorgon-0.7.0.rc1 lib/gorgon_amq-protocol/lib/gorgon_amq/uri.rb