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