Module: DeskApi::Resource::QueryParams

Included in:
DeskApi::Resource
Defined in:
lib/desk_api/resource/query_params.rb

Overview

QueryParams specifies all the url query param modifiers.

Examples:

set the per page param DeskApi::Resource

first_page = DeskApi.cases.per_page(100)

Author:

Instance Method Summary collapse

Instance Method Details

#embed(*embedds) ⇒ Desk::Resource

Allows you to embed/sideload resources

Examples:

embed customers with their cases

my_cases = client.cases.embed(:customers)

embed assigned_user and assigned_group

my_cases = client.cases.embed(:assigned_user, :assigned_group)

Parameters:

  • embedds (Symbol/String)

    whatever you want to embed

Returns:

  • (Desk::Resource)

    self



50
51
52
53
54
# File 'lib/desk_api/resource/query_params.rb', line 50

def embed(*embedds)
  # make sure we don't try to embed anything that's not defined
  # add it to the query
  self.tap{ |res| res.query_params = { embed: embedds.join(',') } }
end

#methodInteger/DeskApi::Resource

Get/set the page and per_page query params

Parameters:

  • value (Integer/Nil)

    the value to use

Returns:



60
61
62
63
64
65
66
67
68
69
70
# File 'lib/desk_api/resource/query_params.rb', line 60

%w(page per_page).each do |method|
  class_eval "    def \#{method}(value = nil)\n      unless value\n        exec! if query_params_include?('\#{method}') == nil\n        return query_params_include?('\#{method}').to_i\n      end\n      tap{ |res| res.query_params = Hash['\#{method}', value.to_s] }\n    end\n  RUBY\nend\n", __FILE__, __LINE__ + 1

#query_paramsHash

Converts the current self href query params to a hash

Returns:

  • (Hash)

    current self href query params



75
76
77
# File 'lib/desk_api/resource/query_params.rb', line 75

def query_params
  Addressable::URI.parse(href).query_values || {}
end

#query_params=(params = {}) ⇒ String

Sets the query params based on the provided hash

Parameters:

  • params (Hash) (defaults to: {})

    the query params

Returns:

  • (String)

    the generated href



91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/desk_api/resource/query_params.rb', line 91

def query_params=(params = {})
  return href if params.empty?

  params.keys.each{ |key| params[key] = params[key].join(',') if params[key].is_a?(Array) }

  uri = Addressable::URI.parse(href)
  params = (uri.query_values || {}).merge(params)

  @_loaded = false unless params == uri.query_values

  uri.query_values = params
  self.href = uri.to_s
end

#query_params_include?(param) ⇒ Boolean

Checks if the specified param is included

Parameters:

  • param (String)

    the param to check for

Returns:

  • (Boolean)


83
84
85
# File 'lib/desk_api/resource/query_params.rb', line 83

def query_params_include?(param)
  query_params.include?(param) ? query_params[param] : nil
end