Module: MosEisley::SlackWeb
- Defined in:
- lib/slack.rb
Constant Summary collapse
- BASE_URL =
'https://slack.com/api/'.freeze
Class Method Summary collapse
- .chat_memessage(channel:, text:) ⇒ Object
- .chat_postephemeral ⇒ Object
- .chat_postmessage(channel:, blocks: nil, text: nil, thread_ts: nil) ⇒ Object
- .chat_schedulemessage ⇒ Object
- .post_log(blocks: nil, text: nil) ⇒ Object
- .post_response_url(url, payload) ⇒ Object
- .post_to_slack(method, data, url = nil) ⇒ Object
- .views_open(trigger_id:, view:) ⇒ Object
- .views_push(trigger_id:, view:) ⇒ Object
- .views_update(view_id:, view:, hash: nil) ⇒ Object
Class Method Details
.chat_memessage(channel:, text:) ⇒ Object
46 47 48 49 |
# File 'lib/slack.rb', line 46 def self.(channel:, text:) data = {channel: channel, text: text} post_to_slack('chat.meMessage', data) end |
.chat_postephemeral ⇒ Object
51 52 |
# File 'lib/slack.rb', line 51 def self.chat_postephemeral() end |
.chat_postmessage(channel:, blocks: nil, text: nil, thread_ts: nil) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/slack.rb', line 54 def self.(channel:, blocks: nil, text: nil, thread_ts: nil) data = {channel: channel} if blocks data[:blocks] = blocks data[:text] = text if text else text ? data[:text] = text : raise end data[:thread_ts] = thread_ts if thread_ts post_to_slack('chat.postMessage', data) end |
.chat_schedulemessage ⇒ Object
66 67 |
# File 'lib/slack.rb', line 66 def self.() end |
.post_log(blocks: nil, text: nil) ⇒ Object
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/slack.rb', line 73 def self.post_log(blocks: nil, text: nil) if c = ENV['SLACK_LOG_CHANNEL_ID'] d = {channel: c} if blocks d[:blocks] = blocks if text d[:text] = text end else if text d[:text] = text else return nil end end (d) else return nil end end |
.post_response_url(url, payload) ⇒ Object
69 70 71 |
# File 'lib/slack.rb', line 69 def self.post_response_url(url, payload) post_to_slack(nil, payload, url) end |
.post_to_slack(method, data, url = nil) ⇒ Object
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 |
# File 'lib/slack.rb', line 120 def self.post_to_slack(method, data, url = nil) l = MosEisley.logger url ||= BASE_URL + method head = {authorization: "Bearer #{ENV['SLACK_BOT_ACCESS_TOKEN']}"} r = Neko::HTTP.post_json(url, data, head) if r[:code] != 200 l.warn("post_to_slack HTTP failed: #{r[:message]}") return nil end begin h = JSON.parse(r[:body], {symbolize_names: true}) if h[:ok] return h else l.warn("post_to_slack Slack failed: #{h[:error]}") l.debug("#{h[:response_metadata]}") return nil end rescue return {body: r[:body]} end end |
.views_open(trigger_id:, view:) ⇒ Object
94 95 96 97 98 99 100 |
# File 'lib/slack.rb', line 94 def self.views_open(trigger_id:, view:) data = { trigger_id: trigger_id, view: view, } post_to_slack('views.open', data) end |
.views_push(trigger_id:, view:) ⇒ Object
111 112 |
# File 'lib/slack.rb', line 111 def self.views_push(trigger_id:, view:) end |
.views_update(view_id:, view:, hash: nil) ⇒ Object
102 103 104 105 106 107 108 109 |
# File 'lib/slack.rb', line 102 def self.views_update(view_id:, view:, hash: nil) data = { view_id: view_id, view: view, } data[:hash] if hash post_to_slack('views.update', data) end |