Method: SlackDiff#slack_upload

Defined in:
lib/oxidized/hook/slackdiff.rb

#slack_upload(client, title, content, channel) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/oxidized/hook/slackdiff.rb', line 14

def slack_upload(client, title, content, channel)
  log "Posting diff as snippet to #{channel}"
  upload_dest = client.files_getUploadURLExternal(filename:     "change",
                                                  length:       content.length,
                                                  snippet_type: "diff")
  file_uri = URI.parse(upload_dest[:upload_url])

  http = Net::HTTP.new(file_uri.host, file_uri.port)
  http.use_ssl = true

  request = Net::HTTP::Post.new(file_uri.request_uri, { Host: file_uri.host })
  request.body = content
  response = http.request(request)

  raise 'Slack file upload failed' unless response.is_a? Net::HTTPSuccess

  files = [{
    id:    upload_dest[:file_id],
    title: title
  }]
  client.files_completeUploadExternal(channel_id: channel,
                                      files:      files.to_json)
end