class VacationRentalsIcalAdapters::Adapters::XmlArkianeAdapter

Constants

ARKIANE_XML_HOST

Public Instance Methods

applicable?(body:, source:) click to toggle source
# File lib/vacation_rentals_ical_adapters/adapters/xml_arkiane_adapter.rb, line 9
def applicable?(body:, source:)
  URI(source.to_s).host == ARKIANE_XML_HOST
end
to_ical(body) click to toggle source
# File lib/vacation_rentals_ical_adapters/adapters/xml_arkiane_adapter.rb, line 13
def to_ical(body)
  events = parse_events(body)
  VacationRentalsIcalAdapters::IcalConverter.to_ical(events)
end

Private Instance Methods

extract_availabilities(body) click to toggle source
# File lib/vacation_rentals_ical_adapters/adapters/xml_arkiane_adapter.rb, line 29
def extract_availabilities(body)
  Hash.from_xml(body)
    .to_a
    .flatten
    .last.to_h["LINE"]
    .to_a.flat_map { |el| el["Planning"] }
end
parse_events(body) click to toggle source
# File lib/vacation_rentals_ical_adapters/adapters/xml_arkiane_adapter.rb, line 20
def parse_events(body)
  extract_availabilities(body).map do |availability|
    VacationRentalsIcalAdapters::Event.new(
      start_date: availability.fetch("o_debut"),
      end_date: availability.fetch("o_fin")
    )
  end
end