lib/dato/repo.rb in dato-0.6.9 vs lib/dato/repo.rb in dato-0.6.10

- old
+ new

@@ -1,6 +1,7 @@ # frozen_string_literal: true + require 'dato/json_api_serializer' require 'dato/json_api_deserializer' require 'dato/paginator' module Dato @@ -8,72 +9,70 @@ attr_reader :client, :type, :schema IDENTITY_REGEXP = /\{\(.*?definitions%2F(.*?)%2Fdefinitions%2Fidentity\)}/ METHOD_NAMES = { - "instances" => :all, - "self" => :find, - } + 'instances' => :all, + 'self' => :find + }.freeze def initialize(client, type, schema) @client = client @type = type @schema = schema schema.links.each do |link| method_name = METHOD_NAMES.fetch(link.rel, link.rel) - self.define_singleton_method(method_name) do |*args| + define_singleton_method(method_name) do |*args| min_arguments_count = [ link.href.scan(IDENTITY_REGEXP).size, link.schema && link.method != :get ? 1 : 0 ].reduce(0, :+) - args.size >= min_arguments_count or - raise ArgumentError.new( - "wrong number of arguments (given #{args.size}, expected #{min_arguments_count})" - ) + (args.size >= min_arguments_count) or + raise ArgumentError, "wrong number of arguments (given #{args.size}, expected #{min_arguments_count})" placeholders = [] - url = link["href"].gsub(IDENTITY_REGEXP) do |_stuff| + url = link['href'].gsub(IDENTITY_REGEXP) do |_stuff| placeholder = args.shift.to_s placeholders << placeholder placeholder end - response = if %i(post put).include?(link.method) - body = if link.schema - unserialized_body = args.shift + response = if %i[post put].include?(link.method) + body = if link.schema + unserialized_body = args.shift - JsonApiSerializer.new(type, link).serialize( - unserialized_body, - link.method == :post ? nil : placeholders.last - ) - else - {} - end + JsonApiSerializer.new(type, link).serialize( + unserialized_body, + link.method == :post ? nil : placeholders.last + ) + else + {} + end - client.request(link.method, url, body) + client.request(link.method, url, body) - elsif link.method == :delete - client.request(:delete, url) + elsif link.method == :delete + client.request(:delete, url) - elsif link.method == :get - query_string = args.shift + elsif link.method == :get + query_string = args.shift - all_pages = (args[0] || {}). - symbolize_keys. - fetch(:all_pages, false) + all_pages = (args[0] || {}) + .symbolize_keys + .fetch(:all_pages, false) - is_paginated_endpoint = link.schema && - link.schema.properties.has_key?("page[limit]") + is_paginated_endpoint = link.schema && + link.schema.properties.key?('page[limit]') - if is_paginated_endpoint && all_pages - Paginator.new(client, url, query_string).response - else - client.request(:get, url, query_string) - end + if is_paginated_endpoint && all_pages + Paginator.new(client, url, query_string).response + else + client.request(:get, url, query_string) + end end options = if args.any? args.shift.symbolize_keys else