hangouts-chat 0.0.2 → 0.0.3
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 +4 -4
- data/CHANGELOG.md +9 -0
- data/LICENSE +21 -0
- data/README.md +36 -0
- data/Rakefile +9 -0
- data/lib/hangouts_chat.rb +24 -1
- data/lib/hangouts_chat/exceptions.rb +16 -0
- data/lib/hangouts_chat/http.rb +9 -0
- data/lib/hangouts_chat/version.rb +2 -1
- data/test/{hangouts-chat → hangouts_chat}/http_test.rb +0 -0
- data/test/hangouts_chat_test.rb +11 -0
- data/test/test_helper.rb +1 -1
- metadata +31 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d6ed28c19b0253bb33ebc13670e57e1343330bc30da8af2640d999e47de6a362
|
4
|
+
data.tar.gz: 220f23a56aff96c3071ad412c8af9d3fd3e78428b28d4369d633039454f70899
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d4eda290a5d04e9a226c58ed144cb29804a9effe0047f3d31446561640b4502b405221e5b7456b5c16e309c269e4cd81eebb0cec02c84f4e8e8965a0874aa811
|
7
|
+
data.tar.gz: bb649deb7a85caf301d4aed009dcb3aac3cbd24b452172f22fafffacfaa7936b453c59fd71751835dad1cb182352415b4f1ac0a600b7eabd81017e43a92e0823
|
data/CHANGELOG.md
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2018 enzinia
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
# Hangouts Chat gem
|
2
|
+
Send messages to [Hangouts Chat](https://gsuite.google.com/products/chat/) rooms using incoming webhooks.
|
3
|
+
|
4
|
+
## Installation
|
5
|
+
```
|
6
|
+
$ gem install hangouts-chat
|
7
|
+
```
|
8
|
+
|
9
|
+
or add to your Gemfile
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
require 'hangouts-chat'
|
13
|
+
```
|
14
|
+
|
15
|
+
## Usage
|
16
|
+
```ruby
|
17
|
+
sender = HangoutsChat::Sender.new 'webhook_URL'
|
18
|
+
sender.simple 'text'
|
19
|
+
```
|
20
|
+
|
21
|
+
### How to get Webhook URL
|
22
|
+
1. Open channel to which you want to send messages
|
23
|
+
2. Click on the channel name in top bar and select 'Configure webhooks'
|
24
|
+
3. Click on 'Add webhook' and fill name for bot, that will be display messages
|
25
|
+
4. Click on 'Save' and copy 'Webhook URL'
|
26
|
+
|
27
|
+
Details: [Setting up an incoming webhook](https://developers.google.com/hangouts/chat/how-tos/webhooks)
|
28
|
+
|
29
|
+
|
30
|
+
## Comments
|
31
|
+
For now supported only [Simple Text Messages](https://developers.google.com/hangouts/chat/reference/message-formats/basic)
|
32
|
+
|
33
|
+
## TODO
|
34
|
+
* Errors reports
|
35
|
+
* Support [Card messages](https://developers.google.com/hangouts/chat/reference/message-formats/cards)
|
36
|
+
* README badges etc
|
data/Rakefile
ADDED
data/lib/hangouts_chat.rb
CHANGED
@@ -1,16 +1,39 @@
|
|
1
1
|
require_relative 'hangouts_chat/version'
|
2
2
|
require_relative 'hangouts_chat/http'
|
3
|
+
require_relative 'hangouts_chat/exceptions'
|
3
4
|
|
5
|
+
# Main namespace
|
4
6
|
module HangoutsChat
|
7
|
+
# Provide methods to send messages to Hangouts Chat rooms using webhooks API
|
5
8
|
class Sender
|
9
|
+
# @return [String] Webhook URL, given on initialization
|
10
|
+
attr_reader :url
|
11
|
+
|
12
|
+
# Creates Sender object
|
13
|
+
# @param webhook_url [String] URL for incoming webhook
|
6
14
|
def initialize(webhook_url)
|
7
15
|
@url = webhook_url
|
8
16
|
@http = HTTP.new(@url)
|
9
17
|
end
|
10
18
|
|
19
|
+
# Sends Simple Text Message
|
20
|
+
# @param text [String] text to send to room
|
21
|
+
# @return [Net::HTTPResponse] response object
|
11
22
|
def simple(text)
|
12
23
|
payload = { text: text }
|
13
|
-
|
24
|
+
send_request(payload)
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
# Sends payload and check response
|
30
|
+
# @param payload [Hash] data to send by POST
|
31
|
+
# @return [Net::HTTPResponse] response object
|
32
|
+
# @raise [APIError] if got unsuccessful response
|
33
|
+
def send_request(payload)
|
34
|
+
response = @http.post payload
|
35
|
+
raise APIError, response unless response.is_a?(Net::HTTPSuccess)
|
36
|
+
response
|
14
37
|
end
|
15
38
|
end
|
16
39
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'net/http/response'
|
2
|
+
|
3
|
+
module HangoutsChat
|
4
|
+
class Sender
|
5
|
+
# Unsuccessful API respond exception
|
6
|
+
class APIError < StandardError
|
7
|
+
# Creates exception object with generated message
|
8
|
+
# @param response [Net::HTTPResponse] API response
|
9
|
+
def initialize(response)
|
10
|
+
msg = "HTTP #{response.code} #{response.msg}\n"
|
11
|
+
msg += "Body:\n#{response.body}"
|
12
|
+
super(msg)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/hangouts_chat/http.rb
CHANGED
@@ -3,13 +3,22 @@ require 'json'
|
|
3
3
|
|
4
4
|
module HangoutsChat
|
5
5
|
class Sender
|
6
|
+
# Unsuccessful respond exception
|
7
|
+
class APIError < StandardError; end
|
8
|
+
|
9
|
+
# Service class to send HTTP POST requests
|
6
10
|
class HTTP
|
11
|
+
# Creates HTTP::Post object with JSON content type
|
12
|
+
# @param url [String] URL to send request
|
7
13
|
def initialize(url)
|
8
14
|
@uri = URI(url)
|
9
15
|
@req = Net::HTTP::Post.new(@uri)
|
10
16
|
@req['Content-Type'] = 'application/json'
|
11
17
|
end
|
12
18
|
|
19
|
+
# Sends HTTP POST request
|
20
|
+
# @param payload [String] request body to send
|
21
|
+
# @return [Net::HTTPResponse] response object
|
13
22
|
def post(payload)
|
14
23
|
@req.body = payload.to_json
|
15
24
|
|
File without changes
|
data/test/hangouts_chat_test.rb
CHANGED
@@ -23,4 +23,15 @@ class HangoutsChatTest < Minitest::Test
|
|
23
23
|
assert_requested :post, @webhook_url, times: 1, body:
|
24
24
|
{ text: message }.to_json
|
25
25
|
end
|
26
|
+
|
27
|
+
def test_api_error_exception_message
|
28
|
+
stub_request(:any, /chat\.googleapis\.com/)
|
29
|
+
.to_return(status: [403, 'Forbidden'], body: 'Response body')
|
30
|
+
|
31
|
+
exception = assert_raises HangoutsChat::Sender::APIError do
|
32
|
+
@sender.simple('Test exception')
|
33
|
+
end
|
34
|
+
assert_match(/^HTTP 403 Forbidden$/, exception.message)
|
35
|
+
assert_match(/^Body:\nResponse body$/, exception.message)
|
36
|
+
end
|
26
37
|
end
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hangouts-chat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- enzinia
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-03-
|
11
|
+
date: 2018-03-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubocop
|
@@ -38,18 +38,42 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '3'
|
41
|
-
|
42
|
-
|
43
|
-
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: yard
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0.9'
|
48
|
+
- - ">"
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: 0.9.11
|
51
|
+
type: :development
|
52
|
+
prerelease: false
|
53
|
+
version_requirements: !ruby/object:Gem::Requirement
|
54
|
+
requirements:
|
55
|
+
- - "~>"
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '0.9'
|
58
|
+
- - ">"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: 0.9.11
|
61
|
+
description: Send messages to G Suite Hangouts Chat rooms using incoming webhooks
|
62
|
+
and Net::HTTP::Post
|
44
63
|
email: vkukovskij@gmail.com
|
45
64
|
executables: []
|
46
65
|
extensions: []
|
47
66
|
extra_rdoc_files: []
|
48
67
|
files:
|
68
|
+
- CHANGELOG.md
|
69
|
+
- LICENSE
|
70
|
+
- README.md
|
71
|
+
- Rakefile
|
49
72
|
- lib/hangouts_chat.rb
|
73
|
+
- lib/hangouts_chat/exceptions.rb
|
50
74
|
- lib/hangouts_chat/http.rb
|
51
75
|
- lib/hangouts_chat/version.rb
|
52
|
-
- test/
|
76
|
+
- test/hangouts_chat/http_test.rb
|
53
77
|
- test/hangouts_chat_test.rb
|
54
78
|
- test/test_helper.rb
|
55
79
|
homepage: https://github.com/enzinia/hangouts-chat
|
@@ -77,6 +101,6 @@ signing_key:
|
|
77
101
|
specification_version: 4
|
78
102
|
summary: Library for sending messages to Hangouts Chat rooms
|
79
103
|
test_files:
|
80
|
-
- test/
|
104
|
+
- test/hangouts_chat/http_test.rb
|
81
105
|
- test/hangouts_chat_test.rb
|
82
106
|
- test/test_helper.rb
|