slack_msgr 0.0.2 → 0.0.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: 67ff0e3f7b3a1f928d175cb1fa15d74bf612c6b1
4
- data.tar.gz: 3d07152341f8ea05c91b3df0e7827e7714a726c0
3
+ metadata.gz: a2a6986eb6b25c10e5c937d6f72f7716489ce77e
4
+ data.tar.gz: 4882906275e2a2781e11c6b07067351ed6b2cc66
5
5
  SHA512:
6
- metadata.gz: 546f9af207d3c971fe87aa5c5586f01059d1d97a3afcc005ed32beede73db388c0ff04861ce3ae769c306f7149a36eea414a56e886a2016af2e2e0c38b225b8d
7
- data.tar.gz: c781083423b3282ffb92d8bf8cf7f61648d2ed2da18c1e4cc943b9fea35dec4c69e3bd0233b5e8ef1e32c610af82fdbd7f20286fefcb5300c1d9ff71902f18cf
6
+ metadata.gz: 326e481ccb93330fb19b0d0fbe261dd83212b50ea84b2e0b0612e6cc3a91a98de8e7f48dd6269dbc2b3da61d68d8893416b192fb421f7909d9cc57764d8c0d14
7
+ data.tar.gz: 6c0ef937c0b433390fb2291c067d689e24469333a47d969a9baa01f92a3378d22ea206192aae92699fdf7c842421d9c38a7a35364fc946d6a4961db5d6651199
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- slack_msgr (0.0.2)
4
+ slack_msgr (0.0.4)
5
5
  faraday (~> 0.15.4)
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -33,14 +33,30 @@ If you are using this gem with a Rails project, create an initializer file.
33
33
  # ./config/initializers/slack_msgr.rb
34
34
 
35
35
  SlackMsgr.configure do |config|
36
- config.verification_token = '1a2b3c4d5e'
37
- config.client_secret = 'a1b2c3d4e5'
38
- config.signing_secret = 'aa11bb22cc3'
39
- config.oauth_access_token = 'xoxp-1234567-xxxxxxxxx'
40
- config.bot_user_oauth_access_token = 'xoxb-1234567-xxxxxxxxx'
36
+ config.verification_token = '1a2b3c4d5e'
37
+ config.client_secret = 'a1b2c3d4e5'
38
+ config.signing_secret = 'aa11bb22cc3'
39
+ config.access_tokens = {
40
+ bot: 'xoxp-1234567-xxxxxxxxx',
41
+ me: 'xoxb-1234567-xxxxxxxxx'
42
+ }
41
43
  end
42
44
  ```
43
45
 
46
+ _NOTE_: All access tokens are configured as a hash. The name of the keys are arbitrary, and there is no limit to keys that can be configured.
47
+
48
+ Multiple oauth tokens can be used during a single session. Oauth tokens are declared in the method execution. For example, considering the configuration above, to use the token attached to the key `:me` simply pass the parameter `use_token: :me`.
49
+
50
+ ```ruby
51
+ SlackMsgr.chat(:post_message,
52
+ use_token: :me,
53
+ channel: 'announcements',
54
+ text: 'Hello world'
55
+ )
56
+ ```
57
+
58
+ SlackMsgr will try to use a default token if a method is called without declaring `use_token:`. SlackMsgr takes the first token in the `access_tokens` hash as a default.
59
+
44
60
  If you are using this gem outside of a Rails project, follow the configuration pattern above, but be sure to run this code before using any functionality of the gem.
45
61
 
46
62
  ## Usage
@@ -59,6 +75,7 @@ SlackMsgr.chat(:post_message, channel: 'announcements', text: 'Hello world')
59
75
  # Sends the text 'Hello world' to the announcements channel
60
76
 
61
77
  SlackMsgr.chat(:post_message, {
78
+ use_token: :bot,
62
79
  channel: "C1H9RESGL",
63
80
  text: "Here's a message for you",
64
81
  as_user: false,
@@ -69,7 +86,7 @@ SlackMsgr.chat(:post_message, {
69
86
  fallback: "This is an attachment's fallback"
70
87
  }]
71
88
  })
72
- # Sends a message with an attachment as a user with the username 'testing'
89
+ # Sends a message with an attachment using the oauth token configured for :bot as a user with the username 'testing'
73
90
  ```
74
91
 
75
92
  ## License
@@ -5,5 +5,5 @@ module SlackMsgr
5
5
 
6
6
  SLACK_URL = 'https://slack.com'
7
7
 
8
- VERSION = '0.0.2'
8
+ VERSION = '0.0.4'
9
9
  end
@@ -6,7 +6,7 @@ require_relative './constants'
6
6
 
7
7
  path = __dir__
8
8
 
9
- require "#{path}/../slack_msgr/fetcher"
9
+ require "#{path}/../slack_msgr/slack_method"
10
10
  require "#{path}/../slack_msgr/chat"
11
11
  require "#{path}/../slack_msgr/configuration"
12
12
  require "#{path}/../utils/error_handling"
@@ -29,12 +29,7 @@ module SlackMsgr
29
29
  class << self
30
30
  def call(method, opts = {})
31
31
  chat = new(method, opts)
32
-
33
- conn.post do |req|
34
- req.url "/api/#{chat.method}"
35
- req.headers['Content-Type'] = 'application/json; charset=utf-8'
36
- req.body = chat.body
37
- end
32
+ send_post_request_to_slack(chat)
38
33
  end
39
34
  end
40
35
 
@@ -6,29 +6,46 @@ module SlackMsgr
6
6
  attr_accessor :verification_token,
7
7
  :client_secret,
8
8
  :signing_secret,
9
- :oauth_access_token,
10
- :bot_user_oauth_access_token
9
+ :access_tokens,
10
+ :set_default_token
11
11
 
12
12
  def initialize(
13
13
  verification_token: nil,
14
14
  client_secret: nil,
15
15
  signing_secret: nil,
16
- oauth_access_token: nil,
17
- bot_user_oauth_access_token: nil
16
+ access_tokens: {},
17
+ set_default_token: nil
18
18
  )
19
- @verification_token = verification_token
20
- @client_secret = client_secret
21
- @signing_secret = signing_secret
22
- @oauth_access_token = oauth_access_token
23
- @bot_user_oauth_access_token = bot_user_oauth_access_token
19
+ @verification_token = verification_token
20
+ @client_secret = client_secret
21
+ @signing_secret = signing_secret
22
+ @access_tokens = access_tokens
23
+ @set_default_token = set_default_token
24
24
  end
25
25
 
26
26
  def clear!
27
- @verification_token = nil
28
- @client_secret = nil
29
- @signing_secret = nil
30
- @oauth_access_token = nil
31
- @bot_user_oauth_access_token = nil
27
+ @verification_token = nil
28
+ @client_secret = nil
29
+ @signing_secret = nil
30
+ @access_tokens = {}
31
+ @set_default_token = nil
32
+ @default_token = nil
33
+ end
34
+
35
+ def default_token
36
+ @default_token ||= initialize_default_token
37
+ end
38
+
39
+ def initialize_default_token
40
+ return unless access_tokens&.first
41
+
42
+ access_tokens[set_default_token] || access_tokens.first[1]
43
+ end
44
+
45
+ def oauth_access_token(given_token)
46
+ token = access_tokens[given_token] || default_token
47
+ ErrorHandling.raise(:configuration_error) unless token
48
+ token
32
49
  end
33
50
  end
34
51
  end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SlackMsgr
4
+ # Handles all requests with Slack API
5
+ class SlackMethod
6
+ class << self
7
+ private
8
+
9
+ attr_reader :conn
10
+
11
+ def establish_connection(given_token = nil)
12
+ @conn ||= Faraday.new(url: SLACK_URL) do |config|
13
+ config.request :url_encoded # form-encode POST params
14
+ config.adapter Faraday.default_adapter # make requests with Net::HTTP
15
+ end
16
+ conn.authorization :Bearer, SlackMsgr.configuration.oauth_access_token(given_token)
17
+ end
18
+
19
+ def conceal(token)
20
+ token.split('Bearer ').last[0..-6].gsub(/[a-zA-Z0-9]/, 'X') + token[-5..-1]
21
+ end
22
+
23
+ def add_metadata_to_response(response)
24
+ JSON.parse(response.body, symbolize_names: true)
25
+ .merge!(auth_token: conceal(conn.headers['Authorization']))
26
+ end
27
+
28
+ def send_post_request_to_slack(obj)
29
+ establish_connection(obj.opts[:use_token])
30
+ response = conn.post do |req|
31
+ req.url "/api/#{obj.method}"
32
+ req.headers['Content-Type'] = 'application/json; charset=utf-8'
33
+ req.body = obj.body
34
+ end
35
+ add_metadata_to_response(response)
36
+ end
37
+ end
38
+ end
39
+ end
@@ -21,8 +21,8 @@ module SlackMsgr
21
21
  def configuration_error(_opts)
22
22
  {
23
23
  exception: ConfigurationError,
24
- message: "Error with configruation: oauth_access_token not found\n" \
25
- 'Be sure to configure all tokens and secrets'
24
+ message: "Error with configruation: access_tokens not found\n" \
25
+ 'At least one oauth token must be configured using access_tokens'
26
26
  }
27
27
  end
28
28
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slack_msgr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Workman
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-07-03 00:00:00.000000000 Z
11
+ date: 2019-07-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -147,7 +147,7 @@ files:
147
147
  - lib/slack_msgr.rb
148
148
  - lib/slack_msgr/chat.rb
149
149
  - lib/slack_msgr/configuration.rb
150
- - lib/slack_msgr/fetcher.rb
150
+ - lib/slack_msgr/slack_method.rb
151
151
  - lib/utils/error_handling.rb
152
152
  - slack_msgr.gemspec
153
153
  homepage: https://github.com/rdavid1099/slack-msgr
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module SlackMsgr
4
- # Handles all requests with Slack API
5
- class SlackMethod
6
- class << self
7
- private
8
-
9
- def conn
10
- oauth_access_token = SlackMsgr.configuration.oauth_access_token
11
- ErrorHandling.raise(:configuration_error) unless oauth_access_token
12
-
13
- faraday = Faraday.new(url: SLACK_URL) do |config|
14
- config.request :url_encoded # form-encode POST params
15
- config.adapter Faraday.default_adapter # make requests with Net::HTTP
16
- end
17
- faraday.authorization :Bearer, oauth_access_token
18
- faraday
19
- end
20
- end
21
- end
22
- end