Sha256: 47e663cc823c0060573e23da007d9f4973afffc30efe4570cf332b945ac08dd2

Contents?: true

Size: 1.24 KB

Versions: 4

Compression:

Stored size: 1.24 KB

Contents

module RemoteResource
  class UrlNamingDetermination

    attr_reader :resource_klass, :connection_options

    def initialize(resource_klass, connection_options = {})
      @resource_klass     = resource_klass
      @connection_options = connection_options
    end

    def base_url(id = nil)
      site         = connection_options.fetch(:site, resource_klass.site)
      version      = connection_options.fetch(:version, resource_klass.version)
      path_prefix  = connection_options.fetch(:path_prefix, resource_klass.path_prefix)
      path_postfix = connection_options.fetch(:path_postfix, resource_klass.path_postfix)

      id           = "/#{id}" if id.present?

      "#{site}#{version.presence}#{path_prefix.presence}/#{url_safe_relative_name}#{id}#{path_postfix.presence}"
    end

    def url_safe_relative_name
      collection = connection_options.fetch(:collection, resource_klass.collection)

      if collection
        relative_name.underscore.downcase.pluralize
      else
        relative_name.underscore.downcase
      end
    end

    def relative_name
      collection_name = connection_options.fetch(:collection_name, resource_klass.collection_name)

      collection_name.to_s.presence || resource_klass.name.to_s.demodulize
    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
ddy_remote_resource-0.4.5 lib/remote_resource/url_naming_determination.rb
ddy_remote_resource-0.4.4 lib/remote_resource/url_naming_determination.rb
ddy_remote_resource-0.4.3 lib/remote_resource/url_naming_determination.rb
ddy_remote_resource-0.4.2 lib/remote_resource/url_naming_determination.rb