Module: MeiliSearch::Utils
- Defined in:
- lib/meilisearch/utils.rb
Constant Summary collapse
- SNAKE_CASE =
/[^a-zA-Z0-9]+(.)/.freeze
Class Method Summary collapse
- .filter(original_options, allowed_params = []) ⇒ Object
- .parse_query(original_options, allowed_params = []) ⇒ Object
- .transform_attributes(body) ⇒ Object
- .version_error_handler(method_name) ⇒ Object
- .warn_on_non_conforming_attribute_names(body) ⇒ Object
Class Method Details
.filter(original_options, allowed_params = []) ⇒ Object
27 28 29 |
# File 'lib/meilisearch/utils.rb', line 27 def self.filter(, allowed_params = []) .transform_keys(&:to_sym).slice(*allowed_params) end |
.parse_query(original_options, allowed_params = []) ⇒ Object
31 32 33 34 35 36 37 38 39 |
# File 'lib/meilisearch/utils.rb', line 31 def self.parse_query(, allowed_params = []) only_allowed_params = filter(, allowed_params) Utils.transform_attributes(only_allowed_params).then do |body| body.transform_values do |v| v.respond_to?(:join) ? v.join(',') : v.to_s end end end |
.transform_attributes(body) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/meilisearch/utils.rb', line 7 def self.transform_attributes(body) case body when Array body.map { |item| transform_attributes(item) } when Hash warn_on_non_conforming_attribute_names(body) parse(body) else body end end |
.version_error_handler(method_name) ⇒ Object
46 47 48 49 50 51 52 53 54 |
# File 'lib/meilisearch/utils.rb', line 46 def self.version_error_handler(method_name) yield if block_given? rescue MeiliSearch::ApiError => e = (e., method_name) raise MeiliSearch::ApiError.new(e.http_code, , e.http_body) rescue StandardError => e raise e.class, (e., method_name) end |
.warn_on_non_conforming_attribute_names(body) ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/meilisearch/utils.rb', line 56 def self.warn_on_non_conforming_attribute_names(body) return if body.nil? non_snake_case = body.keys.grep_v(/^[a-z0-9_]+$/) return if non_snake_case.empty? = <<~MSG Attributes will be expected to be snake_case in future versions of Meilisearch Ruby. Non-conforming attributes: #{non_snake_case.join(', ')} MSG warn() end |