class SearchYJ::UriManager

Manage the URI instance

@author [indeep-xyz]

Constants

IndexError
PageSizeError
QUERY_DEFAULT
SearchTermError
URI_BASE

Public Class Methods

new(query = {}) click to toggle source
# File lib/searchyj/uri_manager.rb, line 30
def initialize(query = {})
  @query = QUERY_DEFAULT.merge(query)
end

Public Instance Methods

base() click to toggle source
# File lib/searchyj/uri_manager.rb, line 42
def base
  URI_BASE
end
index() click to toggle source
# File lib/searchyj/uri_manager.rb, line 38
def index
  (@query[:b] < 1) ? 1 : @query[:b]
end
index=(index) click to toggle source
# File lib/searchyj/uri_manager.rb, line 52
def index=(index)
  fail IndexError unless index.is_a?(Integer)
  fail IndexError if index < 1

  @query[:b] = index
end
move_index(distance) click to toggle source
# File lib/searchyj/uri_manager.rb, line 65
def move_index(distance)
  @query[:b] += distance
  @query[:b]  = 1 if @query[:b] < 1
end
search_term() click to toggle source
# File lib/searchyj/uri_manager.rb, line 34
def search_term
  @query[:p]
end
search_term=(search_term) click to toggle source
# File lib/searchyj/uri_manager.rb, line 46
def search_term=(search_term)
  fail SearchTermError unless search_term.is_a?(String)

  @query[:p] = search_term
end
to_s() click to toggle source
# File lib/searchyj/uri_manager.rb, line 59
def to_s
  uri = URI(URI_BASE)
  uri.query = create_query_string
  uri.to_s
end

Private Instance Methods

available_value?(v) click to toggle source
# File lib/searchyj/uri_manager.rb, line 100
def available_value?(v)
  (v.is_a?(Hash) || v.is_a?(Array)) && v.empty?
end
create_query_string() click to toggle source
# File lib/searchyj/uri_manager.rb, line 85
def create_query_string
  query = optimize_query
  stock = []

  query.each do |k, v|
    next if available_value?(v)

    k = k.to_s unless k.is_a?(String)
    v = v.to_s unless v.is_a?(String)
    stock << "#{CGI.escape(k)}=#{CGI.escape(v)}"
  end

  stock.compact * '&'
end
optimize_query() click to toggle source
# File lib/searchyj/uri_manager.rb, line 72
def optimize_query
  query = @query.dup

  query[:b] = query[:b].to_i

  if query[:b].nil? || query[:b] < 2
    query.delete(:b)
    query.delete(:pstart)
  end

  query
end