lib/immoscout/models/actions/real_estate.rb in immoscout-1.3.1 vs lib/immoscout/models/actions/real_estate.rb in immoscout-1.3.2

- old
+ new

@@ -1,8 +1,12 @@ +# frozen_string_literal: true + require 'json' require_relative '../concerns/modelable' +# rubocop:disable Metrics/BlockLength because this is how an ActiveSupport +# concern looks like module Immoscout module Models module Actions module RealEstate extend ActiveSupport::Concern @@ -10,15 +14,17 @@ included do include Immoscout::Models::Concerns::Modelable self.unpack_collection = proc do |hash| hash - .fetch("realestates.realEstates", {}) - .fetch("realEstateList", {}) - .fetch("realEstateElement", nil) + .fetch('realestates.realEstates', {}) + .fetch('realEstateList', {}) + .fetch('realEstateElement', nil) end + # rubocop:disable Metrics/AbcSize because this is the + # bare minimum logic def save response = \ if id api.put("user/#{api.user_name}/realestate/#{id}", as_json) else @@ -27,10 +33,11 @@ handle_response(response) self.id = id_from_response(response) unless id self end + # rubocop:enable Metrics/AbcSize def destroy response = api.delete("user/#{api.user_name}/realestate/#{id}") handle_response(response) self @@ -91,18 +98,20 @@ def find_by(hash) external_id = hash.symbolize_keys.fetch(:external_id) find("ext-#{external_id}") end + # rubocop:disable Metrics/AbcSize because of the mapping logic def all response = api.get("user/#{api.user_name}/realestate") handle_response(response) objects = unpack_collection.call(response.body) objects .map { |object| new(object) } .select { |object| object.type =~ /#{name.demodulize}/i } end + # rubocop:enable Metrics/AbcSize def first all.first end @@ -118,5 +127,6 @@ end end end end end +# rubocop:enable Metrics/BlockLength