| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| |
| |
| module Qpid::Proton |
| |
| # @deprecated use {URI} or {String} |
| class URL |
| include Util::Deprecation |
| |
| attr_reader :scheme |
| attr_reader :username |
| alias user username |
| attr_reader :password |
| attr_reader :host |
| attr_reader :path |
| |
| # Parse a string, return a new URL |
| # @param url [#to_s] the URL string |
| def initialize(url = nil) |
| deprecated self.class, 'URI or String' |
| if url |
| @url = Cproton.pn_url_parse(url.to_s) |
| if @url.nil? |
| raise ::ArgumentError.new("invalid url: #{url}") |
| end |
| else |
| @url = Cproton.pn_url |
| end |
| @scheme = Cproton.pn_url_get_scheme(@url) |
| @username = Cproton.pn_url_get_username(@url) |
| @password = Cproton.pn_url_get_password(@url) |
| @host = Cproton.pn_url_get_host(@url) |
| @port = Cproton.pn_url_get_port(@url) |
| @path = Cproton.pn_url_get_path(@url) |
| defaults |
| end |
| |
| def port=(port) |
| if port.nil? |
| Cproton.pn_url_set_port(@url, nil) |
| else |
| Cproton.pn_url_set_port(@url, port) |
| end |
| end |
| |
| def port |
| Cproton.pn_url_get_port(@url).to_i |
| end |
| |
| # @return [String] Convert to string |
| def to_s |
| "#{@scheme}://#{@username.nil? ? '' : @username}#{@password.nil? ? '' : '@' + @password + ':'}#{@host}:#{@port}/#{@path}" |
| end |
| |
| # @return [String] Allow implicit conversion by {String#try_convert} |
| alias to_str to_s |
| |
| private |
| |
| def defaults |
| @scheme = @scheme || "amqp" |
| @host = @host || "0.0.0.0" |
| @port = @port || 5672 |
| end |
| end |
| end |