class Tacokit::Transform
Public Instance Methods
deserialize(body)
click to toggle source
# File lib/tacokit/transform.rb, line 13 def deserialize(body) deserialize_body(body) end
serialize(body)
click to toggle source
# File lib/tacokit/transform.rb, line 9 def serialize(body) serialize_body(body) end
serialize_params(params)
click to toggle source
# File lib/tacokit/transform.rb, line 5 def serialize_params(params) normalize_request_params(params) end
Private Instance Methods
camelize_key(key)
click to toggle source
# File lib/tacokit/transform.rb, line 53 def camelize_key(key) k = key.to_s k = k.gsub(%r{([a-zA-Z_]+?)_id(s\b|\b)?$}, "id_\\1\\2") k = k.gsub(%r{(#{camelize_special_cases.keys.join("|")})}) { |m| camelize_special_cases.fetch(m) } camelize(k, :lower) end
camelize_keys(body)
click to toggle source
# File lib/tacokit/transform.rb, line 49 def camelize_keys(body) deep_transform_keys(body) { |key| camelize_key(key) } end
camelize_special_cases()
click to toggle source
# File lib/tacokit/transform.rb, line 110 def camelize_special_cases { "callback_url" => "callbackURL", "checklist_source_id" => "idChecklistSource" } end
deserialize_array(body)
click to toggle source
# File lib/tacokit/transform.rb, line 89 def deserialize_array(body) body.map { |data| deserialize_body(data) } end
deserialize_body(body)
click to toggle source
# File lib/tacokit/transform.rb, line 78 def deserialize_body(body) case body when Hash deserialize_hash(body) when Array deserialize_array(body) else body end end
deserialize_hash(body)
click to toggle source
# File lib/tacokit/transform.rb, line 93 def deserialize_hash(body) deep_transform_keys(body) do |key| underscore_key(key) end end
flatten_nested_keys(body)
click to toggle source
Converts “prefs” => { “voting” => “members” } to “prefs/voting” => “members
# File lib/tacokit/transform.rb, line 65 def flatten_nested_keys(body) options = {} body.each do |key, value| next unless value.is_a?(Hash) value = flatten_nested_keys(value.dup) value.each do |nested_key, nested_value| options["#{key}/#{nested_key}"] = nested_value end body.delete(key) end body.merge(options) end
normalize_param_value(value)
click to toggle source
# File lib/tacokit/transform.rb, line 25 def normalize_param_value(value) case value when Array value.map { |v| camel_path(v) }.join(",") when /\,/ normalize_param_value(value.split(",")) else camel_path(value) end end
normalize_request_params(params)
click to toggle source
# File lib/tacokit/transform.rb, line 19 def normalize_request_params(params) (params || {}).reject { |_k, v| v.nil? }.each_with_object({}) do |(key, value), norm| norm[key] = normalize_param_value(value) end end
pluralize_special_cases()
click to toggle source
# File lib/tacokit/transform.rb, line 106 def pluralize_special_cases %w[ idBoardsPinned idPremOrgsAdmin ] end
serialize_body(body)
click to toggle source
# File lib/tacokit/transform.rb, line 36 def serialize_body(body) case body when Hash serialize_hash(body) else body end end
serialize_hash(body)
click to toggle source
# File lib/tacokit/transform.rb, line 45 def serialize_hash(body) flatten_nested_keys(camelize_keys(body)) end
underscore_key(key)
click to toggle source
# File lib/tacokit/transform.rb, line 99 def underscore_key(key) k = key.to_s k = k.gsub(%r{(#{pluralize_special_cases.join("|")})}, "\\1s") k = underscore(k) k.gsub(%r{^id_([a-zA-Z_]+?)(s\b|\b)$}, "\\1_id\\2") end