lita-your-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/.gitignore +17 -0
- data/Gemfile +3 -0
- data/README.md +36 -0
- data/Rakefile +6 -0
- data/lib/lita/handlers/your_weather.rb +65 -0
- data/lib/lita-your-weather.rb +12 -0
- data/lita-your-weather.gemspec +24 -0
- data/locales/en.yml +4 -0
- data/spec/lita/handlers/your_weather_spec.rb +19 -0
- data/spec/spec_helper.rb +6 -0
- data/templates/.gitkeep +0 -0
- metadata +144 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ce7b969254307d97f449249fe2f18a1190deecf9
|
4
|
+
data.tar.gz: 369f4a3132c52542b9b54ee7a21db9f79d1b4251
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: b57d7f4fa2ff6781f8e20e8ebb21a3ba0beb97bd23773a0558ba4e4f7d17987ce81c05d8bf8d7fd2d4b0a7ac73ef7ba88f7770fd3fbfb06f899b8472f2d4434f
|
7
|
+
data.tar.gz: 8b7e08440973b99fd54fd9c29bf518e21204c5e9e766f7d4b085f70bbb485058336d32f448a801ae90203944d43a2bcad7c1153712ef17cac6387fd8b88cb04a
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
# lita-your-weather
|
2
|
+
|
3
|
+
lita-your-weather provides the ability to ask for the current weather conditions or for a 7 day forecast.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add lita-your-weather to your Lita instance's Gemfile:
|
8
|
+
|
9
|
+
``` ruby
|
10
|
+
gem "lita-your-weather"
|
11
|
+
```
|
12
|
+
$ bundle install
|
13
|
+
|
14
|
+
## Configuration
|
15
|
+
|
16
|
+
Obtain an API Key from www.apixu.com
|
17
|
+
Add the following to your lita_config.rb :
|
18
|
+
|
19
|
+
``` ruby
|
20
|
+
config.handlers.your_weather.default_location = 'City, State'
|
21
|
+
config.handlers.your_weather.api_key = 'www.apixu.com Api Key'
|
22
|
+
```
|
23
|
+
|
24
|
+
## Usage
|
25
|
+
|
26
|
+
Commands include:
|
27
|
+
|
28
|
+
<!-- For current weather of default location -->
|
29
|
+
weather c
|
30
|
+
<!-- For current weather of specified location-->
|
31
|
+
weather c Your_Location,Your_State
|
32
|
+
|
33
|
+
<!-- For weather forecast of default location-->
|
34
|
+
weather f
|
35
|
+
<!-- For weather forecast of specified location-->
|
36
|
+
weather f Your_Location,Your_State
|
data/Rakefile
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
module Lita
|
4
|
+
module Handlers
|
5
|
+
class YourWeather < Handler
|
6
|
+
# insert handler code here
|
7
|
+
|
8
|
+
Lita.register_handler(self)
|
9
|
+
|
10
|
+
# Variables
|
11
|
+
URL = 'http://api.apixu.com/v1'
|
12
|
+
config :default_location, type: String, required: true
|
13
|
+
config :api_key, type: String, required: true
|
14
|
+
|
15
|
+
# Routes
|
16
|
+
route(/^weather\s{1}c\s*(.*)/, :weather_current, command: false, help: { "weather c CITY/CITY,COUNTRY" => "Responds with the specified city's current weather." })
|
17
|
+
route(/^weather\s{1}f\s*(.*)/, :weather_forecast, command: false, help: { "weather f CITY/CITY,COUNTRY" => "Responds with the specified city's 7 day forecast." })
|
18
|
+
|
19
|
+
# Current Weather
|
20
|
+
def weather_current(response)
|
21
|
+
|
22
|
+
location = response.matches[0][0]
|
23
|
+
|
24
|
+
data = request('/current.json?key=' + config.api_key , 'c', location)
|
25
|
+
|
26
|
+
if data['error']
|
27
|
+
response.reply('The location does not exist or weather has exceeded the query limit error: ' + data['error']['message'])
|
28
|
+
else
|
29
|
+
response.reply( data['location']['name'] + ', ' + data['location']['region'] + ', ' + data['location']['country'] + ' currently is ' + data['current']['condition']['text'] + ' and ' + data['current']['temp_c'].to_s + "\xC2\xB0" + 'C. It feels like ' + data['current']['feelslike_c'].to_s + "\xC2\xB0" + 'C' )
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
# Forecast Weather
|
34
|
+
def weather_forecast(response)
|
35
|
+
|
36
|
+
location = response.matches[0][0]
|
37
|
+
|
38
|
+
data = request('/forecast.json?key=' + config.api_key + '&days=7', 'c', location)
|
39
|
+
|
40
|
+
if data['error']
|
41
|
+
response.reply('The location does not exist or weather has exceeded the query limit error: ' + data['error']['message'])
|
42
|
+
else
|
43
|
+
response.reply('The forecast for ' + data['location']['name'] + ', ' + data['location']['region'] + ', ' + data['location']['country'] + ':')
|
44
|
+
data['forecast']['forecastday'].each do |object|
|
45
|
+
# binding.pry
|
46
|
+
response.reply('On ' + object['date'] + ' forecasted is a high of ' + object['day']['maxtemp_c'].to_s + "\xC2\xB0" + 'C' + ' and a low of ' + object['day']['mintemp_c'].to_s + "\xC2\xB0" + 'C It is expected to be ' + object['day']['condition']['text'] )
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
# Request method
|
53
|
+
def request(url, type, location)
|
54
|
+
|
55
|
+
if location == ''
|
56
|
+
location = config.default_location
|
57
|
+
end
|
58
|
+
|
59
|
+
http_response = http.get( URL + url, q: location)
|
60
|
+
return JSON.parse(http_response.body)
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require "lita"
|
2
|
+
|
3
|
+
Lita.load_locales Dir[File.expand_path(
|
4
|
+
File.join("..", "..", "locales", "*.yml"), __FILE__
|
5
|
+
)]
|
6
|
+
|
7
|
+
require "lita/handlers/your_weather"
|
8
|
+
|
9
|
+
Lita::Handlers::YourWeather.template_root File.expand_path(
|
10
|
+
File.join("..", "..", "templates"),
|
11
|
+
__FILE__
|
12
|
+
)
|
@@ -0,0 +1,24 @@
|
|
1
|
+
Gem::Specification.new do |spec|
|
2
|
+
spec.name = "lita-your-weather"
|
3
|
+
spec.version = "0.0.1"
|
4
|
+
spec.authors = ["Zoie Carnegie"]
|
5
|
+
spec.email = ["zoie.carnegie@gmail.com"]
|
6
|
+
spec.description = "lita-your-weather provides the ability to ask for the current weather conditions or for a 7 day forecast."
|
7
|
+
spec.summary = "lita-your-weather provides the ability to ask for the current weather conditions or for a 7 day forecast."
|
8
|
+
spec.homepage = "http://zoiecarnegie.com"
|
9
|
+
spec.license = "MIT"
|
10
|
+
spec.metadata = { "lita_plugin_type" => "handler" }
|
11
|
+
|
12
|
+
spec.files = `git ls-files`.split($/)
|
13
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
14
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
15
|
+
spec.require_paths = ["lib"]
|
16
|
+
|
17
|
+
spec.add_runtime_dependency "lita", ">= 4.7"
|
18
|
+
|
19
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
20
|
+
spec.add_development_dependency "pry-byebug"
|
21
|
+
spec.add_development_dependency "rake"
|
22
|
+
spec.add_development_dependency "rack-test"
|
23
|
+
spec.add_development_dependency "rspec", ">= 3.0.0"
|
24
|
+
end
|
data/locales/en.yml
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Lita::Handlers::YourWeather, lita_handler: true do
|
4
|
+
it { is_expected.to route("weather c") }
|
5
|
+
it { is_expected.to route("weather c 90210") }
|
6
|
+
it { is_expected.to route_command("weather c") }
|
7
|
+
|
8
|
+
it "route weather f to correct method" do
|
9
|
+
is_expected.to route("weather c").to(:weather_current)
|
10
|
+
end
|
11
|
+
|
12
|
+
it { is_expected.to route("weather f") }
|
13
|
+
it { is_expected.to route("weather f 90210") }
|
14
|
+
it { is_expected.to route_command("weather f") }
|
15
|
+
|
16
|
+
it "route weather f to correct method" do
|
17
|
+
is_expected.to route("weather f").to(:weather_forecast)
|
18
|
+
end
|
19
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,6 @@
|
|
1
|
+
require "lita-your-weather"
|
2
|
+
require "lita/rspec"
|
3
|
+
|
4
|
+
# A compatibility mode is provided for older plugins upgrading from Lita 3. Since this plugin
|
5
|
+
# was generated with Lita 4, the compatibility mode should be left disabled.
|
6
|
+
Lita.version_3_compatibility_mode = false
|
data/templates/.gitkeep
ADDED
File without changes
|
metadata
ADDED
@@ -0,0 +1,144 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: lita-your-weather
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Zoie Carnegie
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-11-21 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: lita
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '4.7'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '4.7'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.3'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.3'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: pry-byebug
|
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
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rack-test
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rspec
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 3.0.0
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 3.0.0
|
97
|
+
description: lita-your-weather provides the ability to ask for the current weather
|
98
|
+
conditions or for a 7 day forecast.
|
99
|
+
email:
|
100
|
+
- zoie.carnegie@gmail.com
|
101
|
+
executables: []
|
102
|
+
extensions: []
|
103
|
+
extra_rdoc_files: []
|
104
|
+
files:
|
105
|
+
- ".gitignore"
|
106
|
+
- Gemfile
|
107
|
+
- README.md
|
108
|
+
- Rakefile
|
109
|
+
- lib/lita-your-weather.rb
|
110
|
+
- lib/lita/handlers/your_weather.rb
|
111
|
+
- lita-your-weather.gemspec
|
112
|
+
- locales/en.yml
|
113
|
+
- spec/lita/handlers/your_weather_spec.rb
|
114
|
+
- spec/spec_helper.rb
|
115
|
+
- templates/.gitkeep
|
116
|
+
homepage: http://zoiecarnegie.com
|
117
|
+
licenses:
|
118
|
+
- MIT
|
119
|
+
metadata:
|
120
|
+
lita_plugin_type: handler
|
121
|
+
post_install_message:
|
122
|
+
rdoc_options: []
|
123
|
+
require_paths:
|
124
|
+
- lib
|
125
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
126
|
+
requirements:
|
127
|
+
- - ">="
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: '0'
|
130
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
131
|
+
requirements:
|
132
|
+
- - ">="
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: '0'
|
135
|
+
requirements: []
|
136
|
+
rubyforge_project:
|
137
|
+
rubygems_version: 2.6.7
|
138
|
+
signing_key:
|
139
|
+
specification_version: 4
|
140
|
+
summary: lita-your-weather provides the ability to ask for the current weather conditions
|
141
|
+
or for a 7 day forecast.
|
142
|
+
test_files:
|
143
|
+
- spec/lita/handlers/your_weather_spec.rb
|
144
|
+
- spec/spec_helper.rb
|