Sha256: f6eb6169ca15d86c609ed0c2741a12acc23b7460fe3137a8f3d816445fe65056

Contents?: true

Size: 1.1 KB

Versions: 12

Compression:

Stored size: 1.1 KB

Contents

# frozen_string_literal: true
module BloomRemitClient
  module Requests
    class UrlBuilder
      require 'addressable/uri'
      include Virtus.model
      include ActiveModel::Validations

      attribute :scheme, String, default: 'https'
      attribute :subdomain, String
      attribute :userinfo, String
      attribute :path, Coercers::Path
      attribute :host, String
      attribute :port, Integer
      attribute :query, String
      attribute :query_params, Hash, default: {}
      attribute :fragment, String

      validates :path, :host, :scheme, presence: true
      validates :scheme, inclusion: ['https', 'http']

      def call
        builder.build(to_h).to_s
      end

      def host
        return super unless subdomain.present?
        "#{subdomain}.#{super}"
      end

      def query
        super || build_query
      end

      private

      def builder
        case scheme
        when 'http'
          URI::HTTP
        when 'https'
          URI::HTTPS
        end
      end

      def build_query
        Addressable::URI.new(query_values: query_params).query
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
bloom_remit_client-0.15.0 lib/bloom_remit_client/requests/url_builder.rb
bloom_remit_client-0.14.0 lib/bloom_remit_client/requests/url_builder.rb
bloom_remit_client-0.13.0 lib/bloom_remit_client/requests/url_builder.rb
bloom_remit_client-0.12.0 lib/bloom_remit_client/requests/url_builder.rb
bloom_remit_client-0.11.0 lib/bloom_remit_client/requests/url_builder.rb
bloom_remit_client-0.10.0 lib/bloom_remit_client/requests/url_builder.rb
bloom_remit_client-0.9.0 lib/bloom_remit_client/requests/url_builder.rb
bloom_remit_client-0.8.0 lib/bloom_remit_client/requests/url_builder.rb
bloom_remit_client-0.7.1 lib/bloom_remit_client/requests/url_builder.rb
bloom_remit_client-0.7.0 lib/bloom_remit_client/requests/url_builder.rb
bloom_remit_client-0.6.0 lib/bloom_remit_client/requests/url_builder.rb
bloom_remit_client-0.5.0 lib/bloom_remit_client/requests/url_builder.rb