darksky_weather-api 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +11 -0
- data/.rspec +3 -0
- data/.travis.yml +7 -0
- data/CHANGELOG.md +3 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +58 -0
- data/LICENSE.txt +21 -0
- data/README.md +114 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/darksky_weather-api.gemspec +39 -0
- data/lib/darksky_weather/api.rb +25 -0
- data/lib/darksky_weather/api/client.rb +22 -0
- data/lib/darksky_weather/api/version.rb +5 -0
- data/lib/darksky_weather/api/weather_data.rb +99 -0
- metadata +131 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 064e45392826a9604aa9b78bf7997b4037a26451bc6c1b0c48703e94f23baf8e
|
4
|
+
data.tar.gz: c2f9800eb63a696bba4111f74eaa8202995a7c6714845cc7bf5530a300ec97c9
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 73b8bb85e37f444420d3a90dd0252894700e4195f2e4c88f1a90bea4edcc8c7688e4fcc0d4d59e43d87c8c7dd4c299ce48f04994d6e11b5c0ce5d3ec93193cc2
|
7
|
+
data.tar.gz: c470a0f750c40f7069f2a3cef9f4f6e00cbb89610c692afc3289cba11b2087d366ea799e990210807c0c5f20f86387d10b74726102421848480bd4b16fb34f89
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
data/CHANGELOG.md
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
darksky_weather-api (0.1.2)
|
5
|
+
activesupport
|
6
|
+
httparty
|
7
|
+
|
8
|
+
GEM
|
9
|
+
remote: https://rubygems.org/
|
10
|
+
specs:
|
11
|
+
activesupport (6.0.0)
|
12
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
13
|
+
i18n (>= 0.7, < 2)
|
14
|
+
minitest (~> 5.1)
|
15
|
+
tzinfo (~> 1.1)
|
16
|
+
zeitwerk (~> 2.1, >= 2.1.8)
|
17
|
+
concurrent-ruby (1.1.5)
|
18
|
+
diff-lcs (1.3)
|
19
|
+
httparty (0.17.1)
|
20
|
+
mime-types (~> 3.0)
|
21
|
+
multi_xml (>= 0.5.2)
|
22
|
+
i18n (1.6.0)
|
23
|
+
concurrent-ruby (~> 1.0)
|
24
|
+
mime-types (3.3)
|
25
|
+
mime-types-data (~> 3.2015)
|
26
|
+
mime-types-data (3.2019.0904)
|
27
|
+
minitest (5.11.3)
|
28
|
+
multi_xml (0.6.0)
|
29
|
+
rake (10.5.0)
|
30
|
+
rspec (3.8.0)
|
31
|
+
rspec-core (~> 3.8.0)
|
32
|
+
rspec-expectations (~> 3.8.0)
|
33
|
+
rspec-mocks (~> 3.8.0)
|
34
|
+
rspec-core (3.8.2)
|
35
|
+
rspec-support (~> 3.8.0)
|
36
|
+
rspec-expectations (3.8.4)
|
37
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
38
|
+
rspec-support (~> 3.8.0)
|
39
|
+
rspec-mocks (3.8.1)
|
40
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
41
|
+
rspec-support (~> 3.8.0)
|
42
|
+
rspec-support (3.8.2)
|
43
|
+
thread_safe (0.3.6)
|
44
|
+
tzinfo (1.2.5)
|
45
|
+
thread_safe (~> 0.1)
|
46
|
+
zeitwerk (2.1.10)
|
47
|
+
|
48
|
+
PLATFORMS
|
49
|
+
ruby
|
50
|
+
|
51
|
+
DEPENDENCIES
|
52
|
+
bundler (~> 1.17)
|
53
|
+
darksky_weather-api!
|
54
|
+
rake (~> 10.0)
|
55
|
+
rspec (~> 3.0)
|
56
|
+
|
57
|
+
BUNDLED WITH
|
58
|
+
1.17.3
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2018 Lojistic
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,114 @@
|
|
1
|
+
# DarkskyWeather::Api
|
2
|
+
|
3
|
+
This gem provides a wrapper around the [Dark Sky API](https://darksky.net/dev) for retrieving and analyzing past and current weather forecasts. In order to use this gem, you'll need to [register for an account](https://darksky.net/dev/register) on Dark Sky so that you can get an API key to make requests with. The account is free, and your first 1,000 calls per day are also free. After that, you'll be billed for each subsequent call. See the [Dark Sky FAQ](https://darksky.net/dev/docs/faq) for more details.
|
4
|
+
|
5
|
+
|
6
|
+
## Installation
|
7
|
+
|
8
|
+
Add this line to your application's Gemfile:
|
9
|
+
|
10
|
+
```ruby
|
11
|
+
gem 'darksky_weather-api'
|
12
|
+
```
|
13
|
+
|
14
|
+
And then execute:
|
15
|
+
|
16
|
+
$ bundle
|
17
|
+
|
18
|
+
Or install it yourself as:
|
19
|
+
|
20
|
+
$ gem install darksky_weather-api
|
21
|
+
|
22
|
+
## Usage
|
23
|
+
|
24
|
+
The main purpose of this gem is to make it easy to retrieve and perform basic analysis on weather data provided by the Dark Sky API. The goal is to offer simple configuration and an easy-to-use interface for working with the information provided. Once you've set up your account, you'll be ready to go with this gem after just a few configuration steps.
|
25
|
+
|
26
|
+
### Configuring a Rails Application
|
27
|
+
|
28
|
+
First create `config/initializers/darksky.rb`. Inside that file, place the following contents:
|
29
|
+
|
30
|
+
```ruby
|
31
|
+
DarkskyWeather::Api.configure{|c| c.api_key = "YourDarkskySecretKeyHere" }
|
32
|
+
```
|
33
|
+
|
34
|
+
The above example not withstanding, it's a better security practice to store your API key outside of version control and to pass it in via configuration or environment variables. There are a number of methods for doing so which are beyond the scope of this documentation. In any case, once you've set up the initializer, you're done with all configuration.
|
35
|
+
|
36
|
+
### Configuring Other Rack Applications
|
37
|
+
|
38
|
+
If you're using an alternative framework like Sinatra or Grape that adheres to the Rack interface, you can place the above configuration line inside your `rackup.ru` file to ensure that it executes before you start using the gem.
|
39
|
+
|
40
|
+
### Configuring Any Other Ruby Application
|
41
|
+
|
42
|
+
If you're using this gem outside of the context of a rack application, just make sure that the configuration line above is called after you've required the gem but before you use it.
|
43
|
+
|
44
|
+
### Fetching The Weather
|
45
|
+
|
46
|
+
The gem makes a [forecast request](https://darksky.net/dev/docs#forecast-request) in order to obtain current weather information from the Dark Sky API.
|
47
|
+
|
48
|
+
To fetch the current weather for a given location, you'll need to know the latitude and longitude of that location. You can obtain this information via a number of methods in a process called "geocoding". Both Google Maps and Bing Maps provide geocoding API's that will transform an address into a latitude, longitude pair. It's beyond the scope of this documentation to discuss their use in detail. Once you have a latitude, longitude pair to work with, retrieving weather is as simple as instantiating a client and calling a single method:
|
49
|
+
|
50
|
+
```ruby
|
51
|
+
client = DarkskyWeather::Api::Client.new
|
52
|
+
lat, lng = [37.8267, -122.4233]
|
53
|
+
client.get_weather(lat: lat, lng: lng)
|
54
|
+
```
|
55
|
+
|
56
|
+
Note the use of kwargs in the method call. Calling the `get_weather` method will return a `WeatherData` object that defines a number of useful methods/attributes:
|
57
|
+
|
58
|
+
Calling the `attributes` method on a `WeatherData` instance will return a Hash of the following information:
|
59
|
+
|
60
|
+
* `current_precipitation`: The amount of liquid rain in inches that has fallen as of the time of the weather report.
|
61
|
+
* `current_accumulation`: The amount of snow accumulation, in inches, that is present as of the time of the weather report.
|
62
|
+
* `current_visibility`: The number of miles of visibility at the time of the weather report.
|
63
|
+
* `current_temperature`: The temperature, in fahrenheit, at the time of the weather report.
|
64
|
+
* `current_wind_speed`: The sustained wind speed, in miles per hour, at the time of the weather report.
|
65
|
+
* `current_wind_gust`: The wind gust speed, in miles per hour, at the time of the weather report.
|
66
|
+
* `max_precipitation`: The largest amount of liquid rain, in inches, expected to fall on the day of the weather report.
|
67
|
+
* `max_accumulation`: The largest amount of snow accumulation, in inches, expected for the day of the report.
|
68
|
+
* `worst_visibility`: The worst visbility, (in terms of miles), expected for the day of the report.
|
69
|
+
* `max_temperature`: The highest temperature, in fahrenheit, expected for the day of the report.
|
70
|
+
* `min_temperature`: The lowest temperature, in fahrenheit, expected for the day of the report.
|
71
|
+
* `max_wind_speed`: The highest sustained wind speed, in miles per hour, expected for the day of the report.
|
72
|
+
* `max_wind_gust`: The highest wind gust speed, in miles per hour, expected for the day of the report.
|
73
|
+
* `report_date`: The date that the report was requested for.
|
74
|
+
|
75
|
+
Each of the data points in the Hash above _also_ corresponds to a method on the `WeatherData` instance. So, if you just want to know what the `max_precipitation` is, this is perfectly valid:
|
76
|
+
|
77
|
+
```ruby
|
78
|
+
client = DarkskyWeather::Api::Client.new
|
79
|
+
lat, lng = [37.8267, -122.4233]
|
80
|
+
weather_data = client.get_weather(lat: lat, lng: lng)
|
81
|
+
|
82
|
+
puts weather_data.max_precipitation
|
83
|
+
|
84
|
+
```
|
85
|
+
These attributes and convenience methods do _not_ represent the entirety of the data returned by the API call. Instead, the gem focuses on trying to present the data that's likely to be most useful for most contexts. That said, it is always possible to get back the entire API response as a Hash:
|
86
|
+
|
87
|
+
```ruby
|
88
|
+
weather_data = client.get_weather(lat: lat, lng: lng)
|
89
|
+
response = weather_data.raw
|
90
|
+
```
|
91
|
+
|
92
|
+
For more information about all of the data that comes back from the request, [see the documentation](https://darksky.net/dev/docs).
|
93
|
+
|
94
|
+
In addition, you can retrieve the URL for your particular API request by calling `source_url` on the `WeatherData` instance.
|
95
|
+
|
96
|
+
### Fetching Historical Weather
|
97
|
+
|
98
|
+
The gem also supports making [Dark Sky Time Machine Requests](https://darksky.net/dev/docs#time-machine-request). These work identically to a normal forecast request, with the exception that all of the data is related to the specified time in the past. You can make a time machine request by simply passing in a Unix timestamp along with the latitude and longitude in the `get_weather` call:
|
99
|
+
|
100
|
+
```ruby
|
101
|
+
client = DarkskyWeather::Api::Client.new
|
102
|
+
lat, lng = [37.8267, -122.4233]
|
103
|
+
weather_data = client.get_weather(lat: lat, lng: lng, timestamp: 30.days.ago.to_i)
|
104
|
+
```
|
105
|
+
|
106
|
+
You'll get back a `WeatherData` object, just as before, with all of the same methods and attributes to work with.
|
107
|
+
|
108
|
+
## Contributing
|
109
|
+
|
110
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/Lojistic/DarkSky-gem. In particular, exposing more weather data through convenience methods and/or adding methods to analyze the data more effectively would be especially appreciated.
|
111
|
+
|
112
|
+
## License
|
113
|
+
|
114
|
+
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "darksky/api"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start(__FILE__)
|
data/bin/setup
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
|
2
|
+
lib = File.expand_path("../lib", __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require "darksky_weather/api/version"
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "darksky_weather-api"
|
8
|
+
spec.version = DarkskyWeather::Api::VERSION
|
9
|
+
spec.authors = ["Lojistic Dev Team"]
|
10
|
+
spec.email = ["dev@lojistic.com"]
|
11
|
+
|
12
|
+
spec.summary = %q{ Simple wrapper around the DarkSky Weather API}
|
13
|
+
spec.license = "MIT"
|
14
|
+
|
15
|
+
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
16
|
+
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
17
|
+
if spec.respond_to?(:metadata)
|
18
|
+
spec.metadata["allowed_push_host"] = "https://rubygems.org"
|
19
|
+
else
|
20
|
+
raise "RubyGems 2.0 or newer is required to protect against " \
|
21
|
+
"public gem pushes."
|
22
|
+
end
|
23
|
+
|
24
|
+
# Specify which files should be added to the gem when it is released.
|
25
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
26
|
+
spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
|
27
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
28
|
+
end
|
29
|
+
spec.bindir = "exe"
|
30
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
31
|
+
spec.require_paths = ["lib"]
|
32
|
+
|
33
|
+
spec.add_dependency "httparty"
|
34
|
+
spec.add_dependency "activesupport"
|
35
|
+
|
36
|
+
spec.add_development_dependency "bundler", "~> 1.17"
|
37
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
38
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
39
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require "darksky_weather/api/version"
|
2
|
+
require "darksky_weather/api/client"
|
3
|
+
require "darksky_weather/api/weather_data"
|
4
|
+
require "active_support/time"
|
5
|
+
|
6
|
+
module DarkskyWeather
|
7
|
+
module Api
|
8
|
+
class Error < StandardError; end
|
9
|
+
|
10
|
+
class << self
|
11
|
+
attr_accessor :configuration
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.configure
|
15
|
+
self.configuration ||= Configuration.new
|
16
|
+
yield configuration
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
class Configuration
|
21
|
+
attr_accessor :api_key
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'httparty'
|
2
|
+
|
3
|
+
module DarkskyWeather
|
4
|
+
module Api
|
5
|
+
class Client
|
6
|
+
include HTTParty
|
7
|
+
base_uri "https://api.darksky.net/forecast/"
|
8
|
+
|
9
|
+
def get_weather(lat:, lng:, timestamp: nil)
|
10
|
+
key = DarkskyWeather::Api.configuration.api_key
|
11
|
+
|
12
|
+
request_path = "/#{key}/#{lat},#{lng}"
|
13
|
+
request_path << ",#{timestamp}" if timestamp
|
14
|
+
|
15
|
+
raw_result = self.class.get(request_path)
|
16
|
+
request_uri = raw_result.request.uri.to_s
|
17
|
+
|
18
|
+
return WeatherData.new(request_uri, raw_result.parsed_response)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,99 @@
|
|
1
|
+
module DarkskyWeather
|
2
|
+
module Api
|
3
|
+
class WeatherData
|
4
|
+
|
5
|
+
attr_reader :latitude, :longitude, :timestamp, :currently, :minutely, :hourly, :daily, :raw, :flags, :source_url
|
6
|
+
|
7
|
+
def initialize(source_url, json_data)
|
8
|
+
@source_url = source_url
|
9
|
+
@raw = json_data
|
10
|
+
@latitude = json_data['latitude']
|
11
|
+
@longitude = json_data['longitude']
|
12
|
+
@timestamp = json_data['currently']['time']
|
13
|
+
|
14
|
+
json_data.each do |k, v|
|
15
|
+
instance_variable_set(:"@#{k}", v) if self.respond_to?(k)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def attributes
|
20
|
+
atts = {}
|
21
|
+
[ :current_precipitation,
|
22
|
+
:current_accumulation,
|
23
|
+
:current_visibility,
|
24
|
+
:current_temperature,
|
25
|
+
:current_wind_speed,
|
26
|
+
:current_wind_gust,
|
27
|
+
:max_precipitation,
|
28
|
+
:max_accumulation,
|
29
|
+
:worst_visibility,
|
30
|
+
:max_temperature,
|
31
|
+
:min_temperature,
|
32
|
+
:max_wind_speed,
|
33
|
+
:max_wind_gust,
|
34
|
+
:report_date ].each do |att_name|
|
35
|
+
atts[att_name] = self.send(att_name)
|
36
|
+
end
|
37
|
+
|
38
|
+
return atts
|
39
|
+
end
|
40
|
+
|
41
|
+
def report_date
|
42
|
+
DateTime.strptime(currently['time'].to_s,'%s').to_date
|
43
|
+
end
|
44
|
+
|
45
|
+
def current_precipitation
|
46
|
+
currently['precipIntensity'] || 0
|
47
|
+
end
|
48
|
+
|
49
|
+
def current_accumulation
|
50
|
+
currently['precipAccumulation'] || 0
|
51
|
+
end
|
52
|
+
|
53
|
+
def current_visibility
|
54
|
+
currently['visibility'].to_f
|
55
|
+
end
|
56
|
+
|
57
|
+
def current_temperature
|
58
|
+
currently['temperature'].to_f
|
59
|
+
end
|
60
|
+
|
61
|
+
def current_wind_speed
|
62
|
+
currently['windSpeed'].to_f
|
63
|
+
end
|
64
|
+
|
65
|
+
def current_wind_gust
|
66
|
+
currently['windGust'].to_f
|
67
|
+
end
|
68
|
+
|
69
|
+
def max_precipitation
|
70
|
+
daily['data'].map{|d| d['precipIntensityMax'].to_f }.max || 0
|
71
|
+
end
|
72
|
+
|
73
|
+
def max_accumulation
|
74
|
+
daily['data'].map{|d| d['precipAccumulation'].to_f }.max || 0
|
75
|
+
end
|
76
|
+
|
77
|
+
def worst_visibility
|
78
|
+
hourly['data'].map{|d| d['visibility'].to_f }.min
|
79
|
+
end
|
80
|
+
|
81
|
+
def max_temperature
|
82
|
+
daily['data'].map{|d| d['temperatureMax'].to_f }.max
|
83
|
+
end
|
84
|
+
|
85
|
+
def min_temperature
|
86
|
+
daily['data'].map{|d| d['temperatureMin'].to_f }.max
|
87
|
+
end
|
88
|
+
|
89
|
+
def max_wind_speed
|
90
|
+
hourly['data'].map{|d| d['windSpeed'].to_f }.max
|
91
|
+
end
|
92
|
+
|
93
|
+
def max_wind_gust
|
94
|
+
hourly['data'].map{|d| d['windGust'].to_f }.max
|
95
|
+
end
|
96
|
+
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
metadata
ADDED
@@ -0,0 +1,131 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: darksky_weather-api
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Lojistic Dev Team
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-09-20 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: httparty
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: activesupport
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.17'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.17'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '10.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '10.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '3.0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3.0'
|
83
|
+
description:
|
84
|
+
email:
|
85
|
+
- dev@lojistic.com
|
86
|
+
executables: []
|
87
|
+
extensions: []
|
88
|
+
extra_rdoc_files: []
|
89
|
+
files:
|
90
|
+
- ".gitignore"
|
91
|
+
- ".rspec"
|
92
|
+
- ".travis.yml"
|
93
|
+
- CHANGELOG.md
|
94
|
+
- Gemfile
|
95
|
+
- Gemfile.lock
|
96
|
+
- LICENSE.txt
|
97
|
+
- README.md
|
98
|
+
- Rakefile
|
99
|
+
- bin/console
|
100
|
+
- bin/setup
|
101
|
+
- darksky_weather-api.gemspec
|
102
|
+
- lib/darksky_weather/api.rb
|
103
|
+
- lib/darksky_weather/api/client.rb
|
104
|
+
- lib/darksky_weather/api/version.rb
|
105
|
+
- lib/darksky_weather/api/weather_data.rb
|
106
|
+
homepage:
|
107
|
+
licenses:
|
108
|
+
- MIT
|
109
|
+
metadata:
|
110
|
+
allowed_push_host: https://rubygems.org
|
111
|
+
post_install_message:
|
112
|
+
rdoc_options: []
|
113
|
+
require_paths:
|
114
|
+
- lib
|
115
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - ">="
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '0'
|
120
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
requirements: []
|
126
|
+
rubyforge_project:
|
127
|
+
rubygems_version: 2.7.6
|
128
|
+
signing_key:
|
129
|
+
specification_version: 4
|
130
|
+
summary: Simple wrapper around the DarkSky Weather API
|
131
|
+
test_files: []
|