slack_msgr 0.0.2 → 0.0.4

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 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