Class: Trevl::Renderer::DataFetcher
- Inherits:
-
Object
- Object
- Trevl::Renderer::DataFetcher
- Defined in:
- lib/trevl/renderer/data_fetcher.rb
Overview
Normalizes API responses and resolves API parameters.
fetcher = DataFetcher.new
fetcher.coerce_payload([{x: 1}])
# => {"data" => [{"x" => 1}], "meta" => {}}
Instance Method Summary collapse
Instance Method Details
#coerce_payload(result) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/trevl/renderer/data_fetcher.rb', line 12 def coerce_payload(result) case result when Array {"data" => result, "meta" => {}} when Hash data = result["data"] || result[:data] = result["meta"] || result[:meta] || {} = {} unless .is_a?(Hash) if data.is_a?(Array) {"data" => data, "meta" => CoreExt::Hash.deep_stringify_keys()} else {"data" => [], "meta" => CoreExt::Hash.deep_stringify_keys()} end else {"data" => [], "meta" => {}} end end |
#merge_api_params(component, query_params) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/trevl/renderer/data_fetcher.rb', line 30 def merge_api_params(component, query_params) api_params = component["api_parameters"] || component["api-parameters"] || {} api_params = CoreExt::Hash.deep_stringify_keys(api_params) if api_params.is_a?(Hash) api_params = resolve_placeholders(api_params, query_params) overrides = query_params["param_override"] || query_params[:param_override] if overrides.is_a?(Hash) overrides = CoreExt::Hash.deep_stringify_keys(overrides) api_params = CoreExt::Hash.deep_merge(api_params, overrides) end api_params end |