Class: URI::QueryParams

Inherits:
Object
  • Object
show all
Includes:
Condition, Filter
Defined in:
lib/query_params.rb

Constant Summary

Constants included from Condition

Condition::OPERATORS

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Condition

#set_conditions, #set_query

Methods included from Filter

#between, #bt, #eq, #equal, #full_text_search, #ge, #greater_and_equal, #in, #le, #less_and_equal, #q

Constructor Details

#initialize(base_uri = "") ⇒ QueryParams

Returns a new instance of QueryParams.



11
12
13
14
15
16
# File 'lib/query_params.rb', line 11

def initialize(base_uri = "")
  @base_uri = base_uri.nil? ? "" : base_uri
  @params = []
  @query = ""
  @filter_param_name = "filters"
end

Class Method Details

.build_uri(options = {}) ⇒ Object



36
37
38
39
40
41
42
# File 'lib/query_params.rb', line 36

def self.build_uri(options = {})
  queryParams = QueryParams.new(options[:base_uri])
  queryParams.set_conditions(options[:filters]) if options[:filters]
  queryParams.full_text_search(options[:q]) if options[:q]
  queryParams.filter_param_name(options[:filter_param_name]) if options[:filter_param_name]
  queryParams.build_uri()
end

.filters(filters) ⇒ Object



44
45
46
47
48
49
50
# File 'lib/query_params.rb', line 44

def self.filters(filters)
  return "" if filters.nil? || filters.empty?

  queryParams = QueryParams.new()
  queryParams.set_conditions(filters)
  queryParams.build_filters()
end

Instance Method Details

#build_filtersObject



52
53
54
# File 'lib/query_params.rb', line 52

def build_filters()
  @params.join("|")
end

#build_uriObject



22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/query_params.rb', line 22

def build_uri()
  uri = ""
  unless @base_uri.empty?
    uri += uri.include?('?') ? "&" : "?"
  end
  unless @query.empty?
    uri += "#{@query}" 
    uri += "&" unless @params.empty?
  end
  uri += "#{@filter_param_name}=#{build_filters()}" unless @params.empty?
  uri = "" if uri.length == 1
  "#{@base_uri}#{uri}"
end

#set_filter_param_name(name = @filter_param_name) ⇒ Object



18
19
20
# File 'lib/query_params.rb', line 18

def set_filter_param_name(name = @filter_param_name)
  @filter_param_name = name
end