class SunnyDay::Client

Attributes

config[RW]

Public Class Methods

new(options = {}) click to toggle source
# File lib/sunnyday/client.rb, line 8
def initialize(options = {})
  @config = SunnyDay::Configuration.new(options)
end

Public Instance Methods

configure() { |config| ... } click to toggle source
# File lib/sunnyday/client.rb, line 12
def configure
  yield(@config) if block_given?
end
current_weather(options = {}) click to toggle source
# File lib/sunnyday/client.rb, line 16
def current_weather(options = {})
  call('weather', options)
end
daily_forecast(options = {}) click to toggle source
# File lib/sunnyday/client.rb, line 24
def daily_forecast(options = {})
  call('forecast/daily', options)
end
find(options = {}) click to toggle source
# File lib/sunnyday/client.rb, line 28
def find(options = {})
  call('find', options)
end
forecast(options = {}) click to toggle source
# File lib/sunnyday/client.rb, line 20
def forecast(options = {})
  call('forecast', options)
end

Private Instance Methods

call(path, options = {}) click to toggle source
# File lib/sunnyday/client.rb, line 34
def call(path, options = {})
  options.delete(:mode) if options.has_key?(:mode)
  uri = "/data/#{@config.api_version}/#{full_path(path, options)}language=#{@config.language}"
  uri.concat("&units=#{@config.units}") unless @config.units.nil?
  uri.concat("&APPID=#{@config.app_id}") unless @config.app_id.nil?
  response = Net::HTTP.get_response(BASE_URL, uri)
  JSON.parse(response.body, symbolize_names: true)
end
full_path(path, options) click to toggle source
# File lib/sunnyday/client.rb, line 43
def full_path(path, options)
  string = ''
  options.each_key do |key|
    string << "#{key}=#{options[key]}&"
  end
  "#{path}?#{string}"
end