Module: Rester::Utils
- Defined in:
- lib/rester/utils.rb,
lib/rester/utils/rspec.rb,
lib/rester/utils/stub_file.rb,
lib/rester/utils/logger_wrapper.rb,
lib/rester/utils/circuit_breaker.rb
Defined Under Namespace
Modules: RSpec Classes: CircuitBreaker, LoggerWrapper, StubFile
Class Method Summary collapse
- .classify(str) ⇒ Object
- .decode_www_data(data) ⇒ Object
- .deep_freeze(value) ⇒ Object
-
.encode_www_data(value, prefix = nil) ⇒ Object
Copied from Rack::Utils.build_nested_query (version 1.6.0).
- .escape(value) ⇒ Object
-
.extract_method_verb(meth) ⇒ Object
Determines the HTTP method/verb based on the method name.
- .join_paths(*paths) ⇒ Object
-
.stringify(hash = {}) ⇒ Object
Converts all keys and values to strings.
- .symbolize_keys(hash) ⇒ Object
- .underscore(str) ⇒ Object
- .walk(object, context = nil, &block) ⇒ Object
Class Method Details
.classify(str) ⇒ Object
93 94 95 |
# File 'lib/rester/utils.rb', line 93 def classify(str) str.to_s.split("_").map(&:capitalize).join end |
.decode_www_data(data) ⇒ Object
49 50 51 |
# File 'lib/rester/utils.rb', line 49 def decode_www_data(data) Rack::Utils.parse_nested_query(data) end |
.deep_freeze(value) ⇒ Object
101 102 103 104 105 106 107 108 109 110 |
# File 'lib/rester/utils.rb', line 101 def deep_freeze(value) value.freeze case value when Hash value.values.each { |v| deep_freeze(v) } when Array value.each { |v| deep_freeze(v) } end end |
.encode_www_data(value, prefix = nil) ⇒ Object
Copied from Rack::Utils.build_nested_query (version 1.6.0)
We want to be able to support Rack >= 1.5.2, but this method is broken in that version.
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/rester/utils.rb', line 30 def encode_www_data(value, prefix = nil) # Rack::Utils.build_nested_query(value) case value when Array value.map { |v| encode_www_data(v, "#{prefix}[]") }.join("&") when Hash value.map { |k, v| encode_www_data(v, prefix ? "#{prefix}[#{escape(k)}]" : escape(k)) }.reject(&:empty?).join('&') when nil prefix else raise ArgumentError, "value must be a Hash" if prefix.nil? "#{prefix}=#{escape(value)}" end end |
.escape(value) ⇒ Object
53 54 55 |
# File 'lib/rester/utils.rb', line 53 def escape(value) URI.encode_www_form_component(value) end |
.extract_method_verb(meth) ⇒ Object
Determines the HTTP method/verb based on the method name. Defaults to GET but if the method ends with “!” it uses POST.
15 16 17 18 19 20 21 22 23 |
# File 'lib/rester/utils.rb', line 15 def extract_method_verb(meth) meth = meth.to_s if meth[-1] == '!' [:post, meth[0..-2]] else [:get, meth] end end |
.join_paths(*paths) ⇒ Object
57 58 59 60 |
# File 'lib/rester/utils.rb', line 57 def join_paths(*paths) paths.map(&:to_s).reject { |p| p.nil? || p.empty? } .join('/').gsub(/\/+/, '/') end |
.stringify(hash = {}) ⇒ Object
Converts all keys and values to strings.
89 90 91 |
# File 'lib/rester/utils.rb', line 89 def stringify(hash={}) decode_www_data(encode_www_data(hash)) end |
.symbolize_keys(hash) ⇒ Object
83 84 85 |
# File 'lib/rester/utils.rb', line 83 def symbolize_keys(hash) hash.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo} end |
.underscore(str) ⇒ Object
97 98 99 |
# File 'lib/rester/utils.rb', line 97 def underscore(str) str.scan(/[A-Z][a-z]*/).map(&:downcase).join('_') end |
.walk(object, context = nil, &block) ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/rester/utils.rb', line 62 def walk(object, context=nil, &block) case object when Hash Hash[ object.map { |key, val| [walk(key, :hash_key, &block), walk(val, :hash_value, &block)] } ] when Array object.map { |obj| walk(obj, :array_elem, &block) } when Range Range.new( walk(object.begin, :range_begin, &block), walk(object.end, :range_end, &block), object.exclude_end? ) else yield object, context end end |