module Ethon::Easy::Queryable
def self.included(base)
def self.included(base) base.send(:attr_accessor, :escape) end
def build_query_pairs(hash)
-
(Array)- The array of query pairs.
Parameters:
-
hash(Hash) -- The hash to go through.
Other tags:
- Example: Build query pairs. -
def build_query_pairs(hash) return [hash] if hash.is_a?(String) pairs = [] recursively_generate_pairs(hash, nil, pairs) pairs end
def empty?
-
(Boolean)- True if params is empty, else false.
Other tags:
- Example: Return if params is empty. -
def empty? @params.empty? end
def file_info(file)
-
(Array)- Array of informations.
Parameters:
-
file(File) -- The file to handle.
Other tags:
- Example: Return file info. -
def file_info(file) filename = File.basename(file.path) types = MIME::Types.type_for(filename) [ filename, types.empty? ? 'application/octet-stream' : types[0].to_s, File.expand_path(file.path) ] end
def pairs_for(v, key, pairs)
def pairs_for(v, key, pairs) case v when Hash, Array recursively_generate_pairs(v, key, pairs) when File, Tempfile pairs << [key, file_info(v)] else pairs << [key, v] end end
def query_pairs
-
(Array)- The query pairs.
Other tags:
- Example: Return the query pairs. -
def query_pairs @query_pairs ||= build_query_pairs(@params) end
def recursively_generate_pairs(h, prefix, pairs)
def recursively_generate_pairs(h, prefix, pairs) case h when Hash h.each_pair do |k,v| key = prefix.nil? ? k : "#{prefix}[#{k}]" pairs_for(v, key, pairs) end when Array h.each_with_index do |v, i| key = "#{prefix}[#{i}]" pairs_for(v, key, pairs) end end end
def to_s
-
(String)- The string representation.
Other tags:
- Example: Return string representation. -
def to_s @to_s ||= query_pairs.map{ |pair| return pair if pair.is_a?(String) if escape && @easy pair.map{ |e| @easy.escape(e.to_s) }.join("=") else pair.join("=") end }.join('&') end