Class: ClientApiBuilder::QueryParams
- Inherits:
- 
      Object
      
        - Object
- ClientApiBuilder::QueryParams
 
- Defined in:
- lib/client_api_builder/query_params.rb
Instance Attribute Summary collapse
- 
  
    
      #custom_escape_proc  ⇒ Object 
    
    
  
  
  
  
    
    
  
  
  
  
  
  
    Returns the value of attribute custom_escape_proc. 
- 
  
    
      #name_value_separator  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    Returns the value of attribute name_value_separator. 
- 
  
    
      #param_separator  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    Returns the value of attribute param_separator. 
Instance Method Summary collapse
- #escape(str) ⇒ Object
- 
  
    
      #initialize(name_value_separator: '=', param_separator: '&', custom_escape_proc: nil)  ⇒ QueryParams 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    A new instance of QueryParams. 
- #to_query(data, namespace = nil) ⇒ Object
- #to_query_from_array(array, namespace) ⇒ Object
- #to_query_from_hash(hsh, namespace) ⇒ Object
Constructor Details
#initialize(name_value_separator: '=', param_separator: '&', custom_escape_proc: nil) ⇒ QueryParams
Returns a new instance of QueryParams.
| 11 12 13 14 15 | # File 'lib/client_api_builder/query_params.rb', line 11 def initialize(name_value_separator: '=', param_separator: '&', custom_escape_proc: nil) @name_value_separator = name_value_separator @param_separator = param_separator @custom_escape_proc = custom_escape_proc end | 
Instance Attribute Details
#custom_escape_proc ⇒ Object
Returns the value of attribute custom_escape_proc.
| 9 10 11 | # File 'lib/client_api_builder/query_params.rb', line 9 def custom_escape_proc @custom_escape_proc end | 
#name_value_separator ⇒ Object (readonly)
Returns the value of attribute name_value_separator.
| 6 7 8 | # File 'lib/client_api_builder/query_params.rb', line 6 def name_value_separator @name_value_separator end | 
#param_separator ⇒ Object (readonly)
Returns the value of attribute param_separator.
| 6 7 8 | # File 'lib/client_api_builder/query_params.rb', line 6 def param_separator @param_separator end | 
Instance Method Details
#escape(str) ⇒ Object
| 69 70 71 | # File 'lib/client_api_builder/query_params.rb', line 69 def escape(str) custom_escape_proc ? custom_escape_proc.call(str) : CGI.escape(str) end | 
#to_query(data, namespace = nil) ⇒ Object
| 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | # File 'lib/client_api_builder/query_params.rb', line 17 def to_query(data, namespace = nil) case data when Hash to_query_from_hash(data, (namespace ? escape(namespace) : nil)).join(param_separator) when Array to_query_from_array(data, (namespace ? "#{escape(namespace)}[]" : '[]')).join(param_separator) else if namespace "#{escape(namespace)}#{name_value_separator}#{escape(data.to_s)}" else escape(data.to_s) end end end | 
#to_query_from_array(array, namespace) ⇒ Object
| 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | # File 'lib/client_api_builder/query_params.rb', line 52 def to_query_from_array(array, namespace) query_params = [] array.each do |value| case value when Hash query_params += to_query_from_hash(value, namespace) when Array query_params += to_query_from_array(value, "#{namespace}[]") else query_params << "#{namespace}#{name_value_separator}#{escape(value.to_s)}" end end query_params end | 
#to_query_from_hash(hsh, namespace) ⇒ Object
| 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | # File 'lib/client_api_builder/query_params.rb', line 32 def to_query_from_hash(hsh, namespace) query_params = [] hsh.each do |key, value| case value when Array array_namespace = namespace ? "#{namespace}[#{escape(key.to_s)}][]" : "#{escape(key.to_s)}[]" query_params += to_query_from_array(value, array_namespace) when Hash hash_namespace = namespace ? "#{namespace}[#{escape(key.to_s)}]" : "#{escape(key.to_s)}" query_params += to_query_from_hash(value, hash_namespace) else query_name = namespace ? "#{namespace}[#{escape(key.to_s)}]" : "#{escape(key.to_s)}" query_params << "#{query_name}#{name_value_separator}#{escape(value.to_s)}" end end query_params end |