simple-weather 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/bin/get-weather +7 -0
- data/config/environment.rb +6 -0
- data/lib/simple-weather/cli.rb +94 -0
- data/lib/simple-weather/weather_data.rb +24 -0
- data/lib/simple_weather.rb +8 -0
- metadata +91 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: bb5054d67de068a3182d089f02ef06f2aba2deab
|
4
|
+
data.tar.gz: ac60855cba335f6cf02bc64049a4626ffa7fd8ab
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e7d6981e9384ab6a9fee3be1cb0d2137593d2f49f455f8c9414b258b26e4eb0283f77ed111af9416194e050a1bd014fdea58b8fad4f107ab2fd414d26d8b3b7d
|
7
|
+
data.tar.gz: c8276890a4eb20b26f7156b623f3e8be72abb7c6e18f06291b26a845e0bd38c005d52956a87538cf55f326210556215aa3baea1f22b950ebdca70f63a1108339
|
data/bin/get-weather
ADDED
@@ -0,0 +1,94 @@
|
|
1
|
+
class SimpleWeather
|
2
|
+
|
3
|
+
def initialize
|
4
|
+
@weather_data = nil
|
5
|
+
start
|
6
|
+
end
|
7
|
+
|
8
|
+
def app_header
|
9
|
+
system 'clear'
|
10
|
+
puts "------------------------------ SIMPLE WEATHER APP ------------------------------"
|
11
|
+
puts ""
|
12
|
+
end
|
13
|
+
|
14
|
+
def start
|
15
|
+
city_search
|
16
|
+
current_or_forecast
|
17
|
+
end
|
18
|
+
|
19
|
+
def current_or_forecast
|
20
|
+
|
21
|
+
user_choice = nil
|
22
|
+
|
23
|
+
loop do
|
24
|
+
app_header
|
25
|
+
puts "1. Get current weather"
|
26
|
+
puts "2. Get forecast"
|
27
|
+
user_choice = gets.chomp
|
28
|
+
break if user_choice == "1" || user_choice == "2"
|
29
|
+
puts "Invalid Entry. Please try again."
|
30
|
+
end
|
31
|
+
|
32
|
+
if user_choice == "1"
|
33
|
+
display_current_weather
|
34
|
+
else
|
35
|
+
display_forecast
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
def city_search
|
41
|
+
app_header
|
42
|
+
puts "Which city would you like to get the weather for?"
|
43
|
+
|
44
|
+
user_city = gets.chomp
|
45
|
+
get_weather_data(user_city)
|
46
|
+
end
|
47
|
+
|
48
|
+
def get_weather_data(city)
|
49
|
+
@weather_data = WeatherData.find_by_city(city)
|
50
|
+
end
|
51
|
+
|
52
|
+
def display_current_weather
|
53
|
+
app_header
|
54
|
+
puts "#{ @weather_data.query["results"]["channel"]["item"]["title"]}"
|
55
|
+
puts ""
|
56
|
+
puts "Sky Condition: #{@weather_data.query["results"]["channel"]["item"]["condition"]["text"]}"
|
57
|
+
puts "Temperature: #{@weather_data.query['results']['channel']['item']['condition']['temp']} degrees"
|
58
|
+
puts "Wind: #{@weather_data.query['results']['channel']['wind']['speed']} mph from #{@weather_data.query['results']['channel']['wind']['direction']} degrees"
|
59
|
+
loop_or_quit
|
60
|
+
end
|
61
|
+
|
62
|
+
def display_forecast
|
63
|
+
app_header
|
64
|
+
@weather_data.query['results']['channel']['item']['forecast'].each do |day|
|
65
|
+
sleep 0.5
|
66
|
+
puts ""
|
67
|
+
puts "Forecast for #{day["day"]} #{day["date"]}"
|
68
|
+
puts "-----------------------------------"
|
69
|
+
puts "Sky Condition: #{day["text"]}"
|
70
|
+
puts "High Temp: #{day["high"]}"
|
71
|
+
puts "low Temp: #{day["low"]}"
|
72
|
+
end
|
73
|
+
loop_or_quit
|
74
|
+
end
|
75
|
+
|
76
|
+
def loop_or_quit
|
77
|
+
puts ""
|
78
|
+
puts 'Please type "back", "new search" or "exit".'
|
79
|
+
choice = gets.chomp.downcase
|
80
|
+
|
81
|
+
case choice
|
82
|
+
when 'back'
|
83
|
+
current_or_forecast
|
84
|
+
when 'new search'
|
85
|
+
start
|
86
|
+
when 'exit'
|
87
|
+
puts 'Goodbye'
|
88
|
+
else
|
89
|
+
puts 'Invalid input. Please try again.'
|
90
|
+
loop_or_quit
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'open-uri'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
class WeatherData
|
5
|
+
|
6
|
+
attr_accessor :query
|
7
|
+
|
8
|
+
def initialize(attributes = {})
|
9
|
+
attributes.each do |key, value|
|
10
|
+
send("#{key}=", value)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.find_by_city(city)
|
15
|
+
request = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%20in%20(select%20woeid%20from%20geo.places(1)%20where%20text=%22#{city}%22)&format=json"
|
16
|
+
|
17
|
+
response = open(request).read
|
18
|
+
|
19
|
+
weather_data = JSON.parse(response)
|
20
|
+
|
21
|
+
WeatherData.new(weather_data)
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
metadata
ADDED
@@ -0,0 +1,91 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: simple-weather
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Scotty Runyan
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-12-18 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: pry
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
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: json
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
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: open-uri
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
description: A simple weather app that gets current weather and forecast info by city
|
56
|
+
email: runyans7@gmail.com
|
57
|
+
executables:
|
58
|
+
- get-weather
|
59
|
+
extensions: []
|
60
|
+
extra_rdoc_files: []
|
61
|
+
files:
|
62
|
+
- bin/get-weather
|
63
|
+
- config/environment.rb
|
64
|
+
- lib/simple-weather/cli.rb
|
65
|
+
- lib/simple-weather/weather_data.rb
|
66
|
+
- lib/simple_weather.rb
|
67
|
+
homepage: http://rubygems.org/gems/simple-weather-cli-gem
|
68
|
+
licenses:
|
69
|
+
- MIT
|
70
|
+
metadata: {}
|
71
|
+
post_install_message:
|
72
|
+
rdoc_options: []
|
73
|
+
require_paths:
|
74
|
+
- lib
|
75
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - ">="
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0'
|
80
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0'
|
85
|
+
requirements: []
|
86
|
+
rubyforge_project:
|
87
|
+
rubygems_version: 2.4.5
|
88
|
+
signing_key:
|
89
|
+
specification_version: 4
|
90
|
+
summary: Simple Weather App
|
91
|
+
test_files: []
|