require_relative 'apis/noaa_station' require 'nokogiri' module Barometer module Query module Service class NoaaStation def self.fetch(query) converted_query = query.get_conversion(:coordinates) return unless converted_query api = NoaaStation::Api.new(converted_query) _parse_content(api.get) end def self._parse_content(content) doc = Nokogiri::HTML.parse(content) if doc extra_links = doc.search(".current-conditions-extra a") if sid_link = extra_links.detect{|link| link.attr('href').match(/sid=(.*)&/)} sid_link.attr('href').match(/sid=(.*?)&/)[1] elsif three_day_link = extra_links.detect{|link| link.text.match(/3 Day History/)} three_day_link.attr('href').match(/\/([A-Za-z]*?)\.html/)[1] end end rescue nil end end end end end