Sha256: cd066604401898c0af2d92947978cbca34fd95644268e88e2436c09fb1c213ad

Contents?: true

Size: 1007 Bytes

Versions: 5

Compression:

Stored size: 1007 Bytes

Contents

require "uri"

module Kafka
  module BrokerUri
    DEFAULT_PORT = 9092
    URI_SCHEMES = ["kafka", "kafka+ssl", "plaintext", "ssl"]

    # Parses a Kafka broker URI string.
    #
    # Examples of valid strings:
    # * `kafka1.something`
    # * `kafka1.something:1234`
    # * `kafka://kafka1.something:1234`
    # * `kafka+ssl://kafka1.something:1234`
    # * `plaintext://kafka1.something:1234`
    #
    # @param str [String] a Kafka broker URI string.
    # @return [URI]
    def self.parse(str)
      # Make sure there's a scheme part if it's missing.
      str = "kafka://" + str unless str.include?("://")

      uri = URI.parse(str)
      uri.port ||= DEFAULT_PORT

      # Map some schemes to others.
      case uri.scheme
      when 'plaintext'
        uri.scheme = 'kafka'
      when 'ssl'
        uri.scheme = 'kafka+ssl'
      end

      unless URI_SCHEMES.include?(uri.scheme)
        raise Kafka::Error, "invalid protocol `#{uri.scheme}` in `#{str}`"
      end

      uri
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
ruby-kafka-0.6.0.beta4 lib/kafka/broker_uri.rb
ruby-kafka-0.6.0.beta3 lib/kafka/broker_uri.rb
ruby-kafka-0.6.0.beta2 lib/kafka/broker_uri.rb
ruby-kafka-0.6.0.beta1 lib/kafka/broker_uri.rb
ruby-kafka-0.5.5 lib/kafka/broker_uri.rb