simple-weather 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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,7 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # Loads environment
4
+ require_relative '../config/environment'
5
+
6
+ # Starts program
7
+ SimpleWeather.new
@@ -0,0 +1,6 @@
1
+ require 'pry'
2
+ require 'json'
3
+ require 'open-uri'
4
+
5
+ require_relative '../lib/simple-weather/weather_data'
6
+ require_relative '../lib/simple-weather/cli'
@@ -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
@@ -0,0 +1,8 @@
1
+ require 'json'
2
+ require 'open-uri'
3
+ require 'pry'
4
+
5
+ require '../config/enviroment.rb'
6
+
7
+ module SimpleWeather
8
+ 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: []