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 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: []