Sha256: 998e6166c08e78191badcab8416544a7668a22515f2cecd9bcbba3950f674514

Contents?: true

Size: 908 Bytes

Versions: 7

Compression:

Stored size: 908 Bytes

Contents

require 'net/http'

# All ugly providers who parse even uglier html code and rip off data
module WeatherFetcher
  class HtmlBasedProvider < Provider

    TYPE = :html_based

    # Get processed weather for one definition
    def fetch_and_process_single(p)
      return nil unless can_fetch?(p)

      @pre_download = Time.now
      body = fetch_url(url(p))
      @pre_process = Time.now
      processed = process(body)
      @post_process = Time.now
      store_time_costs(processed)

      return processed
    end

    # Download url
    def fetch_url(url)
      return Net::HTTP.get(URI.parse(url))
    end

    # Url for current provider
    def url(p)
      provider_params(p)[:url]
    end

    def can_fetch?(p)
      begin
        url(p).nil? == false
      rescue
        false
      end
    end

    # How often weather is updated
    def self.weather_updated_every
      4*HOUR
    end

  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
weather_fetcher-0.0.12 lib/weather_fetcher/providers/html_based_provider.rb
weather_fetcher-0.0.11 lib/weather_fetcher/providers/html_based_provider.rb
weather_fetcher-0.0.10 lib/weather_fetcher/providers/html_based_provider.rb
weather_fetcher-0.0.9 lib/weather_fetcher/providers/html_based_provider.rb
weather_fetcher-0.0.8 lib/weather_fetcher/providers/html_based_provider.rb
weather_fetcher-0.0.7 lib/weather_fetcher/providers/html_based_provider.rb
weather_fetcher-0.0.6 lib/weather_fetcher/providers/html_based_provider.rb