require 'quick_travel/adapter' module QuickTravel class Product < Adapter attr_reader :error_message self.api_base = '/api/products' # Find product details for a given product # # Options are::tabnew # passenger_types: { => , ...}, # date_range: {start_date: , end_date: } def self.find(id, params = {}) if params[:passenger_type_numbers].blank? fail ArgumentError, 'Product#find requires passenger_type_numbers' end if params[:date_range].blank? fail ArgumentError, 'Product#find requires date_range' end super end def self.bulk_availability(resource_ids, date_from, date_to, units) request_params = { resource_ids: resource_ids, date_from: date_from, date_to: date_to, units: units } get_and_validate('/api/availability/bulk.json', request_params) end def self.unavailable_dates(resource_ids, date_from, date_to) request_params = { resource_ids: resource_ids, date_from: date_from, date_to: date_to } get_and_validate('/api/availability/unavailable_dates.json', request_params) end # Returns minified mega structure: # # products_by_resource_id_and_date # { # => { => , ...}, # ... # } def self.fetch_and_arrange_by_resource_id_and_date(resource_ids, options = {}) request_params = options.clone request_params[:resource_ids] = resource_ids # Returned call mega-structure is: # [ # { # "resource" => {"id" => , "name" => }, # "bookability" => { # => {