lita-openweathermap 0.1.0
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 +18 -0
- data/.travis.yml +8 -0
- data/Gemfile +3 -0
- data/README.md +34 -0
- data/Rakefile +6 -0
- data/lib/lita/handlers/openweathermap.rb +45 -0
- data/lib/lita-openweathermap.rb +12 -0
- data/lita-openweathermap.gemspec +24 -0
- data/locales/en.yml +4 -0
- data/spec/lita/handlers/openweathermap_spec.rb +28 -0
- data/spec/spec_helper.rb +6 -0
- data/templates/.gitkeep +0 -0
- metadata +143 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 4584e21ffd03aed6a7912978533ee334f904cb9d
|
4
|
+
data.tar.gz: d697f0af3456ea7592b2f7e18405a4de0e4fe649
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 09b99b61ab68d9d973ef49e47af1952a063b2eff6e82593b19bc7daf55be73be6321c937a0f052bd389da43d75f6464e7371099f136697453ba84db77c4bc60d
|
7
|
+
data.tar.gz: d944879c2589a79246851c1c1823041d6669f98c2fe5a9e2e4427f4025ceb2f5ef49f88020120256c254cb6ef13e2e9ae8ea4e8db9dbe24c10b619c9305aa179
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
# lita-openweathermap
|
2
|
+
|
3
|
+
[](https://travis-ci.org/aleks/lita-openweathermap)
|
4
|
+
|
5
|
+
A Lita (https://www.lita.io/) Handler for OpenWeatherMap Data. (http://openweathermap.org/)
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
Add lita-openweathermap to your Lita instance's Gemfile:
|
10
|
+
|
11
|
+
``` ruby
|
12
|
+
gem "lita-openweathermap"
|
13
|
+
```
|
14
|
+
|
15
|
+
## Configuration
|
16
|
+
|
17
|
+
Add your prefered metric to your Lita config (Default: 'metric'):
|
18
|
+
|
19
|
+
``` ruby
|
20
|
+
Lita.configure do |config|
|
21
|
+
config.handlers.openweathermap.metric = "metric" # 'metric' or 'imperial'
|
22
|
+
end
|
23
|
+
```
|
24
|
+
|
25
|
+
## Usage
|
26
|
+
|
27
|
+
```
|
28
|
+
Lita: weather berlin, germany
|
29
|
+
```
|
30
|
+
|
31
|
+
## License
|
32
|
+
|
33
|
+
[MIT](http://opensource.org/licenses/MIT)
|
34
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
module Lita
|
2
|
+
module Handlers
|
3
|
+
class Openweathermap < Handler
|
4
|
+
config :metric, type: String, default: 'metric'
|
5
|
+
|
6
|
+
route /^weather\s+(.+)\,(.+)/, :weather, command: true, help: {
|
7
|
+
"weather city, country" => "Outputs current weather for city, country"
|
8
|
+
}
|
9
|
+
|
10
|
+
def weather(response)
|
11
|
+
city = response.matches[0][0].strip
|
12
|
+
country = response.matches[0][1].strip
|
13
|
+
|
14
|
+
response.reply get_weather(city, country)
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def get_weather(city, country = nil)
|
20
|
+
resp = http.get("http://api.openweathermap.org/data/2.5/weather?q=#{city},#{country}&units=#{config.metric}")
|
21
|
+
raise 'InvalidResponse' unless resp.status == 200
|
22
|
+
|
23
|
+
obj = MultiJson.load(resp.body)
|
24
|
+
|
25
|
+
lat_lon = "Lat/Lon: #{obj['coord']['lat']}/#{obj['coord']['lon']}"
|
26
|
+
temp = "Temp: #{obj['main']['temp']} (Min: #{obj['main']['temp_min']} / Max: #{obj['main']['temp_max']})"
|
27
|
+
humidity = "Humidity: #{obj['main']['humidity']}%"
|
28
|
+
weather_in_words = "#{temp}, #{obj['weather'][0]['main'].to_s} (#{obj['weather'][0]['description'].to_s})"
|
29
|
+
|
30
|
+
line = []
|
31
|
+
line << "Weather for: #{city.capitalize} #{country.capitalize} (#{lat_lon})"
|
32
|
+
line << temp
|
33
|
+
line << humidity
|
34
|
+
line << weather_in_words
|
35
|
+
line.join(' - ')
|
36
|
+
|
37
|
+
rescue
|
38
|
+
return "Couldn't retrieve weather informations for #{city}, #{country}"
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
Lita.register_handler(Openweathermap)
|
44
|
+
end
|
45
|
+
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/openweathermap"
|
8
|
+
|
9
|
+
Lita::Handlers::Openweathermap.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-openweathermap"
|
3
|
+
spec.version = "0.1.0"
|
4
|
+
spec.authors = ["Aleks"]
|
5
|
+
spec.email = ["ihunte@gmail.com"]
|
6
|
+
spec.description = "A Lita handler that provides data from openweathermap.org"
|
7
|
+
spec.summary = "A Lita handler that provides data from openweathermap.org"
|
8
|
+
spec.homepage = "https://github.com/aleks/lita-openweathermap"
|
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.6"
|
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,28 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Lita::Handlers::Openweathermap, lita_handler: true do
|
4
|
+
|
5
|
+
before do
|
6
|
+
Lita.config.handlers.openweathermap.metric = 'metric'
|
7
|
+
end
|
8
|
+
|
9
|
+
it { routes_command("weather city, coountry").to(:weather) }
|
10
|
+
|
11
|
+
it "checks valid city and country arguments" do
|
12
|
+
send_command "weather city"
|
13
|
+
expect(replies.last).to be_nil
|
14
|
+
|
15
|
+
send_command "weather city county"
|
16
|
+
expect(replies.last).to be_nil
|
17
|
+
|
18
|
+
send_command "weather city, county"
|
19
|
+
expect(replies.last).not_to be_nil
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should respond with valid weather informations" do
|
23
|
+
send_command "weather berlin, germany"
|
24
|
+
expect(replies.last).not_to be_nil
|
25
|
+
expect(replies.last).to include("Weather for: Berlin Germany")
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,6 @@
|
|
1
|
+
require "lita-openweathermap"
|
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,143 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: lita-openweathermap
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Aleks
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-09-09 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.6'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '4.6'
|
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: A Lita handler that provides data from openweathermap.org
|
98
|
+
email:
|
99
|
+
- ihunte@gmail.com
|
100
|
+
executables: []
|
101
|
+
extensions: []
|
102
|
+
extra_rdoc_files: []
|
103
|
+
files:
|
104
|
+
- ".gitignore"
|
105
|
+
- ".travis.yml"
|
106
|
+
- Gemfile
|
107
|
+
- README.md
|
108
|
+
- Rakefile
|
109
|
+
- lib/lita-openweathermap.rb
|
110
|
+
- lib/lita/handlers/openweathermap.rb
|
111
|
+
- lita-openweathermap.gemspec
|
112
|
+
- locales/en.yml
|
113
|
+
- spec/lita/handlers/openweathermap_spec.rb
|
114
|
+
- spec/spec_helper.rb
|
115
|
+
- templates/.gitkeep
|
116
|
+
homepage: https://github.com/aleks/lita-openweathermap
|
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.4.5
|
138
|
+
signing_key:
|
139
|
+
specification_version: 4
|
140
|
+
summary: A Lita handler that provides data from openweathermap.org
|
141
|
+
test_files:
|
142
|
+
- spec/lita/handlers/openweathermap_spec.rb
|
143
|
+
- spec/spec_helper.rb
|