slack-post 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +6 -14
- data/.gitignore +2 -0
- data/README.md +24 -1
- data/bin/slack-post +83 -0
- data/lib/slack/post/version.rb +1 -1
- data/lib/slack/post.rb +9 -3
- metadata +15 -13
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
ZTU4MzU2NDUzNmQ0NDQ5MGMxNzE4YjNhZjMzNDQxZmEzODc0NDg4MDg0Mzlj
|
10
|
-
ZTU3YmEwMjQyYjJiMTk5ZDEzNmM0Y2Y3NDMxNzgzMGUzNWM0MjJkOGM2MDJj
|
11
|
-
NWZjYzhjZDQ0MmEwMDhjNWUyZTAwN2NjYTIwNjMxZjc1Mzk4MjA=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
MGU2Zjc2M2M2NTI3MmRiN2IwZjliMjBmNDMyMDQ1NGFlZmYwM2I3NWI4NGM5
|
14
|
-
ZWU0YmNjZTg3NzcwYTI3Mzg4YmY2YWMxZjUyZjEzOTI5NzVlY2M1YzU3M2Nj
|
15
|
-
OTFmYmMxNWMxMzk5NDg2YTRjYTI4NTU0NGJmYThiOTEzMGU3Mjc=
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 86078125f4d37d83582258b66f07212486dbb43f
|
4
|
+
data.tar.gz: e4f33f59f2e3cb686e647e7512c734d98ab1f106
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 3a25872cff85e15826d1385b5adff552dc2b5af06f2ab641e770e22685544a9b6127f65fea0a0824c4dd161afd489ab35675368d2decfaf5f11dfa1a31689188
|
7
|
+
data.tar.gz: da6ea5afcd462abf6c2030b9d4c9e94c3b5cec119dde52ab41bdfd1f1b183d5994cc49d159a40dd23247850bb748dfb81803bde6f0a142cec1ec08a55640c230
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -6,7 +6,7 @@ Just a simple thing to post messages to your [Slack](http://slack.com) rooms.
|
|
6
6
|
|
7
7
|
Add this line to your application's Gemfile:
|
8
8
|
|
9
|
-
gem 'slack-post'
|
9
|
+
gem 'slack-post'
|
10
10
|
|
11
11
|
And then execute:
|
12
12
|
|
@@ -25,6 +25,29 @@ Slack::Post.configure(
|
|
25
25
|
Slack::Post.post "Domo arigato.", '#general'
|
26
26
|
```
|
27
27
|
|
28
|
+
### slack-post Command
|
29
|
+
|
30
|
+
slack-post comes with a `slack-post` command so you can send messages from the command line:
|
31
|
+
|
32
|
+
```sh
|
33
|
+
$ slack-post
|
34
|
+
Missing options: subdomain, message
|
35
|
+
Usage: slack-post [options]
|
36
|
+
-s, --subdomain [SUBDOMAIN] Your slack subdomain
|
37
|
+
-m, --message [MESSAGE] Your message
|
38
|
+
-r, --room [ROOM] The slack room where the message should go (without '#', default 'general')
|
39
|
+
-u, --username [USERNAME] The username, default 'slackbot'
|
40
|
+
-f, --config-file [CONFIGFILE] The configuration file with token or set SLACK_TOKEN environment variable
|
41
|
+
|
42
|
+
$ SLACK_TOKEN="1asbcdsdfpoiej2" slack-post -s foo -r random -m "line1\nline2"
|
43
|
+
```
|
44
|
+
|
45
|
+
If SLACK_TOKEN isn't set, slack-post tries to read it from ~/.slack.conf or from the file defined with `--config-file`.
|
46
|
+
```sh
|
47
|
+
$ cat ~/.slack.conf
|
48
|
+
token: "1asbcdsdfpoiej2"
|
49
|
+
```
|
50
|
+
|
28
51
|
## Contributing
|
29
52
|
|
30
53
|
1. Fork it
|
data/bin/slack-post
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'slack/post'
|
4
|
+
require 'yaml'
|
5
|
+
require 'optparse'
|
6
|
+
|
7
|
+
def read_token(file)
|
8
|
+
token = ENV['SLACK_TOKEN']
|
9
|
+
if token.nil?
|
10
|
+
if file
|
11
|
+
token = YAML.load_file(file)["token"]
|
12
|
+
else
|
13
|
+
token = YAML.load_file(ENV['HOME'] + "/.slack.conf")["token"] rescue nil
|
14
|
+
end
|
15
|
+
end
|
16
|
+
token
|
17
|
+
end
|
18
|
+
|
19
|
+
def post(options)
|
20
|
+
unless options[:channel].start_with?("#")
|
21
|
+
options[:channel] = "#" + options[:channel]
|
22
|
+
end
|
23
|
+
Slack::Post.configure options
|
24
|
+
Slack::Post.post options[:message].gsub(/\\n/,"\n")
|
25
|
+
end
|
26
|
+
|
27
|
+
options = Hash.new
|
28
|
+
optparse = OptionParser.new do |opts|
|
29
|
+
opts.banner = "Usage: slack-post [options]"
|
30
|
+
|
31
|
+
opts.on('-s', '--subdomain [SUBDOMAIN]', String, 'Your slack subdomain') do |subdomain|
|
32
|
+
options[:subdomain] = subdomain
|
33
|
+
end
|
34
|
+
|
35
|
+
opts.on('-m', '--message [MESSAGE]', 'Your message') do |message|
|
36
|
+
options[:message] = message
|
37
|
+
end
|
38
|
+
|
39
|
+
options[:channel] = 'general'
|
40
|
+
opts.on('-r', '--room [ROOM]', String, 'The slack room where the message should go (without \'#\', default \'general\')') do |room|
|
41
|
+
options[:channel] = room
|
42
|
+
end
|
43
|
+
|
44
|
+
options[:username] = 'slackbot'
|
45
|
+
opts.on('-u', '--username [USERNAME]', String, 'The username, default \'slackbot\'') do |username|
|
46
|
+
options[:username] = username
|
47
|
+
end
|
48
|
+
|
49
|
+
opts.on('-f', '--config-file [CONFIGFILE]', String, 'The configuration file with token or set SLACK_TOKEN environment variable') do |config_file|
|
50
|
+
options[:config_file] = config_file
|
51
|
+
end
|
52
|
+
|
53
|
+
opts.on('-h', 'Show this help') do
|
54
|
+
puts opts
|
55
|
+
exit 1
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
begin
|
60
|
+
optparse.parse!
|
61
|
+
|
62
|
+
mandatory = [:subdomain, :message]
|
63
|
+
missing = mandatory.select { |param| options[param].nil? }
|
64
|
+
if not missing.empty?
|
65
|
+
$stderr.puts "Missing options: #{missing.join(', ')}"
|
66
|
+
$stderr.puts optparse
|
67
|
+
exit 1
|
68
|
+
end
|
69
|
+
|
70
|
+
options[:token] = read_token(options[:config_file])
|
71
|
+
if options[:token].nil?
|
72
|
+
$stderr.puts "Could not find any token!"
|
73
|
+
exit 1
|
74
|
+
end
|
75
|
+
|
76
|
+
post options
|
77
|
+
rescue => e
|
78
|
+
puts $!.to_s
|
79
|
+
puts optparse
|
80
|
+
exit 1
|
81
|
+
end
|
82
|
+
|
83
|
+
|
data/lib/slack/post/version.rb
CHANGED
data/lib/slack/post.rb
CHANGED
@@ -11,7 +11,7 @@ module Slack
|
|
11
11
|
channel: '#general'
|
12
12
|
}.freeze
|
13
13
|
|
14
|
-
def self.post(message,chan=nil)
|
14
|
+
def self.post(message,chan=nil,opts={})
|
15
15
|
raise "You need to call Slack::Post.configure before trying to send messages." unless configured?(chan.nil?)
|
16
16
|
pkt = {
|
17
17
|
channel: chan || config[:channel],
|
@@ -20,10 +20,16 @@ module Slack
|
|
20
20
|
if config[:username]
|
21
21
|
pkt[:username] = config[:username]
|
22
22
|
end
|
23
|
+
if opts.has_key?(:icon_url) or config.has_key?(:icon_url)
|
24
|
+
pkt[:icon_url] = opts[:icon_url] || config[:icon_url]
|
25
|
+
end
|
26
|
+
if opts.has_key?(:icon_emoji) or config.has_key?(:icon_emoji)
|
27
|
+
pkt[:icon_emoji] = opts[:icon_emoji] || config[:icon_emoji]
|
28
|
+
end
|
23
29
|
uri = URI.parse(post_url)
|
24
30
|
http = Net::HTTP.new(uri.host, uri.port)
|
25
31
|
http.use_ssl = true
|
26
|
-
http.ssl_version = :
|
32
|
+
http.ssl_version = :TLSv1
|
27
33
|
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
28
34
|
req = Net::HTTP::Post.new(uri.request_uri)
|
29
35
|
req.body = Yajl::Encoder.encode(pkt)
|
@@ -58,7 +64,7 @@ module Slack
|
|
58
64
|
@config = config.merge(prune(opts))
|
59
65
|
end
|
60
66
|
|
61
|
-
KnownConfigParams = [:username,:channel,:subdomain,:token].freeze
|
67
|
+
KnownConfigParams = [:username,:channel,:subdomain,:token,:icon_url,:icon_emoji].freeze
|
62
68
|
|
63
69
|
def self.prune(opts)
|
64
70
|
opts.inject({}) do |acc,(k,v)|
|
metadata
CHANGED
@@ -1,69 +1,71 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: slack-post
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Bragg
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-10-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.3'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.3'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: yajl-ruby
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
description: Pretty simple really. It posts to slack fer ya.
|
56
56
|
email:
|
57
57
|
- remotezygote@gmail.com
|
58
|
-
executables:
|
58
|
+
executables:
|
59
|
+
- slack-post
|
59
60
|
extensions: []
|
60
61
|
extra_rdoc_files: []
|
61
62
|
files:
|
62
|
-
- .gitignore
|
63
|
+
- ".gitignore"
|
63
64
|
- Gemfile
|
64
65
|
- LICENSE.txt
|
65
66
|
- README.md
|
66
67
|
- Rakefile
|
68
|
+
- bin/slack-post
|
67
69
|
- lib/slack/post.rb
|
68
70
|
- lib/slack/post/version.rb
|
69
71
|
- slack-post.gemspec
|
@@ -77,17 +79,17 @@ require_paths:
|
|
77
79
|
- lib
|
78
80
|
required_ruby_version: !ruby/object:Gem::Requirement
|
79
81
|
requirements:
|
80
|
-
- -
|
82
|
+
- - ">="
|
81
83
|
- !ruby/object:Gem::Version
|
82
84
|
version: '0'
|
83
85
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
84
86
|
requirements:
|
85
|
-
- -
|
87
|
+
- - ">="
|
86
88
|
- !ruby/object:Gem::Version
|
87
89
|
version: '0'
|
88
90
|
requirements: []
|
89
91
|
rubyforge_project:
|
90
|
-
rubygems_version: 2.0.
|
92
|
+
rubygems_version: 2.0.14
|
91
93
|
signing_key:
|
92
94
|
specification_version: 4
|
93
95
|
summary: It's for posting messages to your slack.
|