simple-weather 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|