Sha256: 47809f5737c0dfbf0128560ffc4fb21997b861f745017ddf6577a557f6564932

Contents?: true

Size: 1.57 KB

Versions: 17

Compression:

Stored size: 1.57 KB

Contents

# frozen_string_literal: true
require 'addressable/uri'

# ProxyRb
module ProxyRb
  # A ProxyURL
  class ProxyUrl
    #  Build a URL from hash
    #
    #  @param [Hash] hash
    #    An Hash representing the url parts
    #
    # @return [ProxyUrl]
    #   The built url
    def self.build(hash)
      new(Addressable::URI.new(hash))
    end

    # Create URL from string
    #
    # @param [String] string
    #   The url
    #
    # @return [ProxyUrl]
    #   The parsed url
    def self.parse(string)
      string = string.to_s
      string = if string.empty?
                 string
               elsif string.start_with?('http://')
                 string
               else
                 'http://' + string
               end

      new(Addressable::URI.heuristic_parse(string))
    end

    protected

    attr_reader :url

    public

    def initialize(url)
      @url = url
    end

    %i(host user password port).each do |m|
      define_method m do
        return nil if empty?

        url.public_send m
      end
    end

    def to_s
      return '' if empty?

      url.to_s
    end

    # Check if url is empty
    def empty?
      url.nil? || url.empty?
    end

    # Return URL without user name and password
    #
    # @return [ProxyUrl]
    #   The cleaned url
    def without_user_name_and_password
      return self.class.new(nil) if empty?

      h = url.to_hash
      h.delete :user
      h.delete :password

      self.class.build(h)
    end

    # Return url as hash
    #
    # @return [Hash]
    #   the converted url
    def to_hash
      url.to_hash
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
proxy_rb-0.10.4 lib/proxy_rb/proxy_url.rb
proxy_rb-0.10.3 lib/proxy_rb/proxy_url.rb
proxy_rb-0.10.2 lib/proxy_rb/proxy_url.rb
proxy_rb-0.10.1 lib/proxy_rb/proxy_url.rb
proxy_rb-0.10.0 lib/proxy_rb/proxy_url.rb
proxy_rb-0.9.3 lib/proxy_rb/proxy_url.rb
proxy_rb-0.9.2 lib/proxy_rb/proxy_url.rb
proxy_rb-0.9.1 lib/proxy_rb/proxy_url.rb
proxy_rb-0.9.0 lib/proxy_rb/proxy_url.rb
proxy_rb-0.8.3 lib/proxy_rb/proxy_url.rb
proxy_rb-0.8.2 lib/proxy_rb/proxy_url.rb
proxy_rb-0.8.1 lib/proxy_rb/proxy_url.rb
proxy_rb-0.8.0 lib/proxy_rb/proxy_url.rb
proxy_rb-0.7.1 lib/proxy_rb/proxy_url.rb
proxy_rb-0.7.0 lib/proxy_rb/proxy_url.rb
proxy_rb-0.6.0 lib/proxy_rb/proxy_url.rb
proxy_rb-0.5.0 lib/proxy_rb/proxy_url.rb