Sha256: 5be4414cc429dfe5a3fa5cce356a0936ddda3c136f098df7c772811623083fd7

Contents?: true

Size: 1.42 KB

Versions: 1

Compression:

Stored size: 1.42 KB

Contents

require 'accuweather/version'
require 'accuweather/location/city'
require 'accuweather/location/cache'
require 'accuweather/location/parser'
require 'accuweather/conditions/parser'
require 'accuweather/conditions/units'
require 'accuweather/conditions/local'
require 'accuweather/conditions/planets'
require 'accuweather/conditions/current'
require 'accuweather/conditions/forecast_day'
require 'accuweather/conditions/forecast_weather'

require 'net/http'
require 'nokogiri'

module Accuweather
  class Error < StandardError; end

  def self.city_search(name:)
    @cache ||= Accuweather::Location::Cache.new
    cache_result = @cache.cities(name: name)
    return cache_result unless cache_result == []

    response = Net::HTTP.get('samsungmobile.accu-weather.com',
                             "/widget/samsungmobile/city-find.asp?returnGeoPosition=1&location=#{name}")

    Accuweather::Location::Parser.new(response).cities
  rescue StandardError => e
    raise Accuweather::Error.new("#{e.class}: #{e.message}")
  end

  def self.get_conditions(location_id:, metric: false)
    metric_value = metric ? '1' : '0'
    response = Net::HTTP.get('samsungmobile.accu-weather.com',
                             "/widget/samsungmobile/weather-data.asp?metric=#{metric_value}&location=#{location_id}")

    Accuweather::Conditions::Parser.new(response)
  rescue StandardError => e
    raise Accuweather::Error.new("#{e.class}: #{e.message}")
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
accuweather-0.2.3 lib/accuweather.rb