lita-onewheel-forecast-io 1.5.3 → 1.5.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: be9b9715b8fce490e1ddb77a560c7b5637d67489
4
- data.tar.gz: 90bee01f4c26a3bf41fbcb0080305393ca6f775c
3
+ metadata.gz: f5de999ecf7eab4972f6ffac59cfd84ebc75b9f2
4
+ data.tar.gz: 953b14b5cc7f6f555642fa4294d819d9f637684b
5
5
  SHA512:
6
- metadata.gz: 03652e501d24848bf557277bf9917fa943419a148288b31a31df49b602a9cf567942e296b742f18e684a75a6cf3f750925e5a9b0fae4bd7e8943248d91b5c8cd
7
- data.tar.gz: 8166bf7b03f938fb856671cbc056835ed689b74527db595938cdf1562a3c4a0417ee212d2a1849d192ec8d191cba8d639f8ae8775a1009b35a33a558378ebbb1
6
+ metadata.gz: fb666d69b07b7c87a2fcc4ed324d641f1833384326763ca532e50b68a18d272b0bd640bb0779bd89856f12cbb4ca72ac58ee771827189a9925330afe6eaae835
7
+ data.tar.gz: f6c27dd79b87aeb0cabf3743a263833d7c216d128949c7cd25ca79789f70ac4dd93842e9f73c504b3a17831dfb57c363aa7d093c82e6461ab3df40745b7aa286
@@ -520,5 +520,60 @@ module ForecastIo
520
520
  output += "The high today will be #{get_temperature high_temp}."
521
521
  end
522
522
  end
523
+
524
+ def do_the_windows_data_thing(forecast)
525
+ time_to_close_the_windows = nil
526
+ time_to_open_the_windows = nil
527
+ window_close_temp = 0
528
+ high_temp = 0
529
+ last_temp = 0
530
+
531
+ forecast['hourly']['data'].each_with_index do |hour, index|
532
+ if hour['temperature'] > high_temp
533
+ high_temp = hour['temperature'].to_i
534
+ end
535
+
536
+ if !time_to_close_the_windows and hour['temperature'].to_i >= 71
537
+ if index == 0
538
+ time_to_close_the_windows = 'now'
539
+ else
540
+ time_to_close_the_windows = hour['time']
541
+ end
542
+ window_close_temp = hour['temperature']
543
+ end
544
+
545
+ if !time_to_open_the_windows and time_to_close_the_windows and hour['temperature'] < last_temp and hour['temperature'].to_i <= 75
546
+ time_to_open_the_windows = hour['time']
547
+ end
548
+
549
+ last_temp = hour['temperature']
550
+ break if index > 18
551
+ end
552
+
553
+ # Return some meta here and let the caller decide the text.
554
+ if time_to_close_the_windows.nil?
555
+ "Leave 'em open, no excess heat today(#{get_temperature high_temp})."
556
+ else
557
+ # Todo: base timezone on requested location.
558
+ timezone = TZInfo::Timezone.get('America/Los_Angeles')
559
+ if time_to_close_the_windows == 'now'
560
+ output = "Close the windows now! It is #{get_temperature window_close_temp}. "
561
+ else
562
+ time_at = Time.at(time_to_close_the_windows).to_datetime
563
+ local_time = timezone.utc_to_local(time_at)
564
+ output = "Close the windows at #{local_time.strftime('%k:%M')}, it will be #{get_temperature window_close_temp}. "
565
+ end
566
+ if time_to_open_the_windows
567
+ open_time = timezone.utc_to_local(Time.at(time_to_open_the_windows).to_datetime)
568
+ output += "Open them back up at #{open_time.strftime('%k:%M')}. "
569
+ end
570
+ output += "The high today will be #{get_temperature high_temp}."
571
+ datas = { 'timeToClose': local_time,
572
+ 'timeToOpen': open_time,
573
+ 'tempMax': high_temp,
574
+ 'temp': window_close_temp
575
+ }
576
+ end
577
+ end
523
578
  end
524
579
  end
@@ -214,7 +214,7 @@ module ForecastIo
214
214
 
215
215
  def handle_irc_today(response)
216
216
  location = geo_lookup(response.user, response.match_data[1])
217
- forecast = get_forecast_io_results(response.user, location)
217
+ forecast = get_forecast_io_results(response.user, location, Date.today.to_s + 'T00:00:00-0700')
218
218
  yesterday_weather = get_forecast_io_results(response.user, location, Date.today.prev_day.to_s + 'T00:00:00-0700')
219
219
  today_will_be = do_the_today_thing(forecast, yesterday_weather)
220
220
  response.reply "Today will be #{today_will_be} yesterday."
@@ -226,5 +226,12 @@ module ForecastIo
226
226
  windows_time = do_the_windows_thing(forecast)
227
227
  response.reply "#{windows_time}"
228
228
  end
229
+
230
+ def handle_http_windows(response)
231
+ location = geo_lookup(response.user, '97232')
232
+ forecast = get_forecast_io_results(response.user, location)
233
+ windows_data = do_the_windows_thing(forecast)
234
+ response.reply windows_data.to_json
235
+ end
229
236
  end
230
237
  end
@@ -75,7 +75,8 @@ module Lita
75
75
  help: { '!tomorrow' => 'Give me tomorrow\'s forecast as it relates to today.'})
76
76
  route(/^today/i, :handle_irc_today, command: true,
77
77
  help: { '!today' => 'Give me today\'s forecast as it relates to yesterday.'})
78
- route(/^Good morning./, :handle_irc_windows) # Easter egg alert. Thank you, zrobo and donpdonp.
78
+ # route(/^Good morning./, :handle_irc_windows) # Easter egg alert. Thank you, zrobo and donpdonp.
79
+ # Disabled for winter.
79
80
  route(/^windows/i, :handle_irc_windows, command: true)
80
81
  route(/^windows\s+(.+)/i, :handle_irc_windows, command: true,
81
82
  help: { '!windows' => 'Tell me when to close my windows as it\'s warmer outside than in.'})
@@ -180,6 +181,7 @@ module Lita
180
181
  route(/^dailybarometer\s+(.+)/i, :handle_irc_daily_pressure, command: true,
181
182
  help: { '!dailybarometer [location]' => 'Alias for !dailypressure.'})
182
183
 
184
+ http.get '/windows', :handle_http_windows
183
185
  end
184
186
 
185
187
  Lita.register_handler(OnewheelForecastIo)
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = 'lita-onewheel-forecast-io'
3
- spec.version = '1.5.3'
3
+ spec.version = '1.5.4'
4
4
  spec.authors = ['Andrew Kreps']
5
5
  spec.email = ['andrew.kreps@gmail.com']
6
6
  spec.description = <<-EOS
@@ -529,21 +529,21 @@ describe Lita::Handlers::OnewheelForecastIo, lita_handler: true do
529
529
  expect(replies.last).to eq("Portland, OR, USA 48 hr rains |\u000302▁_▁\u000306▃▃▃\u000310▅\u000302▁_▁▁\u000306▃\u000302▁\u000310▃\u000306▃\u000310▅\u000306▃\u000302▁▁▁▁▁▁__________________________\u0003| max 28%")
530
530
  end
531
531
 
532
- it 'will return windows for good morning' do
533
- mock_up 'windows'
534
- send_message 'Good morning.'
535
- expect(replies.last).to eq('Close the windows at 16:00, it will be 72°F. Open them back up at 17:00. The high today will be 72°F.')
536
- end
537
-
538
- it 'will return windows for good morning' do
539
- mock_up 'windows'
540
- send_message 'good morning!'
541
- expect(replies.last).to eq(nil)
542
- end
543
-
532
+ # it 'will return windows for good morning' do
533
+ # mock_up 'windows'
534
+ # send_message 'Good morning.'
535
+ # expect(replies.last).to eq('Close the windows at 16:00, it will be 72°F. Open them back up at 17:00. The high today will be 72°F.')
536
+ # end
537
+ #
538
+ # it 'will return windows for good morning' do
539
+ # mock_up 'windows'
540
+ # send_message 'good morning!'
541
+ # expect(replies.last).to eq(nil)
542
+ # end
543
+ #
544
544
  it 'will summarize !today in relation to yesterday' do
545
545
  send_command 'today'
546
- expect(replies.last).to eq('Today will be cooler than yesterday.')
546
+ expect(replies.last).to eq('Today will be about the same as yesterday.')
547
547
  end
548
548
 
549
549
  # it 'colors strings' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lita-onewheel-forecast-io
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.3
4
+ version: 1.5.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kreps
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-02 00:00:00.000000000 Z
11
+ date: 2017-05-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lita
@@ -235,7 +235,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
235
235
  version: '0'
236
236
  requirements: []
237
237
  rubyforge_project:
238
- rubygems_version: 2.5.1
238
+ rubygems_version: 2.5.2
239
239
  signing_key:
240
240
  specification_version: 4
241
241
  summary: A text-based interactive query engine for http://forecast.io's api.