module Stormglass
Constants
- RESULT_DICT
- VERSION
Attributes
settings[RW]
Public Class Methods
api_key()
click to toggle source
API key for stormglass. key is sourced:
-
if set via enviroment variable
-
if set in configuration block
-
if defined in Rails secrets
-
when passed directly to parameters
# File lib/stormglass.rb, line 88 def self.api_key key = Stormglass.settings.api_key key ||= Rails.application.credentials[:stormglass_api_key] if Gem.loaded_specs.has_key?('rails') key end
configure() { |settings| ... }
click to toggle source
# File lib/stormglass.rb, line 28 def configure self.settings ||= Configuration.new yield(settings) end
for_address(address_string, params={})
click to toggle source
lookup an address (such as city + zip) and get the coordinates for the first match
# File lib/stormglass.rb, line 39 def self.for_address(address_string, params={}) if results = Geocoder.search(address_string) lat,lng = results.first.coordinates self.for_lat_lng(lat: lat, lng: lng, params: params) else raise Error, 'Could not find address' end end
for_lat_lng(lat:, lng:, params: {})
click to toggle source
query StormGlass given lat/lng. params:
:lat - dateTime (default Now) :lng - Datetime (default 12 hours from :start) :params - additional params available to self.reqest
# File lib/stormglass.rb, line 53 def self.for_lat_lng(lat:, lng:, params: {}) self.request(params: {lat: lat, lng: lng}.merge(params)) end
hours_offset(start_time, hours=12)
click to toggle source
# File lib/stormglass.rb, line 94 def self.hours_offset(start_time, hours=12) (start_time + (Rational(1,24) * hours)) end
query_time_string(datetime)
click to toggle source
# File lib/stormglass.rb, line 98 def self.query_time_string(datetime) datetime.new_offset(0).iso8601 end
request(endpoint: 'point', params: {})
click to toggle source
Primary interface to StormGlass. params:
:start - dateTime (default Now) :end - Datetime (default 12 hours from :start) :hours - number of hours to determine end (default 12) :key - API key (default to api_key method )
# File lib/stormglass.rb, line 63 def self.request(endpoint: 'point', params: {}) hours = (params.delete(:hours) || 11) - 1 params[:key] ||= api_key params[:start] ||= DateTime.now params[:end] ||= hours_offset(params[:start], hours) params[:start] = query_time_string(params[:start]) params[:end] = query_time_string(params[:end]) key = params.delete(:key) begin body = RestClient.get("https://api.stormglass.io/#{endpoint}", {params: params, 'Authorization' => key}).body rescue SocketError => msg puts msg raise ConnectionError, 'error connecting to stormglass' rescue RestClient::PaymentRequired => msg puts msg raise ExceededLimitError, 'exceeded limit. payment required for additional daily requests' end Stormglass::Response.new(body) end
set_settings()
click to toggle source
# File lib/stormglass.rb, line 33 def set_settings self.settings = Configuration.new end