class AppleStoreInventoryChecker::ResultsList
Attributes
max_distance[RW]
product_id[RW]
results[RW]
zip[RW]
Public Class Methods
new(product_id, zip:, max_distance: 15.0)
click to toggle source
# File lib/apple_store_inventory_checker/results_list.rb, line 10 def initialize(product_id, zip:, max_distance: 15.0) @product_id = product_id @zip = zip @max_distance = max_distance end
Public Instance Methods
each() { |result| ... }
click to toggle source
# File lib/apple_store_inventory_checker/results_list.rb, line 23 def each results.each do |result| yield(result) end end
refresh()
click to toggle source
# File lib/apple_store_inventory_checker/results_list.rb, line 16 def refresh response = request(:get, query: { "parts.0" => @product_id, location: @zip }) raw_results = response.dig(:body, :stores) self.results = refresh_list_objects(raw_results, max_distance: @max_distance) self end
Private Instance Methods
refresh_list_objects(raw_results, max_distance:)
click to toggle source
# File lib/apple_store_inventory_checker/results_list.rb, line 31 def refresh_list_objects(raw_results, max_distance:) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength objects = raw_results.map do |raw_result| result = Result.new(product_id: product_id) result.product = raw_result.dig(:partsAvailability, product_id.to_sym, :storePickupProductTitle) result.in_stock = stock_status(raw_result.dig(:partsAvailability, product_id.to_sym, :storePickupQuote)) result.distance = raw_result.dig(:storedistance).to_f result.store = raw_result.dig(:storeName) result.city = raw_result.dig(:city) result.state = raw_result.dig(:state) result.phone = raw_result.dig(:phoneNumber) result.url = raw_result.dig(:directionsUrl) result end objects.select { |result| result&.distance && (result.distance < max_distance) } end
stock_status(store_pickup)
click to toggle source
# File lib/apple_store_inventory_checker/results_list.rb, line 47 def stock_status(store_pickup) store_pickup.match?("Today|Tomorrow") end