2018-05-26   slack   ruby   curl 

コマンドラインで指定した画像をSlackにアップロードするRubyスクリプト(実際に動いているのはcurl)

参照

手順

$ grep SLACK_POSTER_TOKEN ~/.bash_profile
export SLACK_POSTER_TOKEN=xxxx-9999999999-999999999999-ZZZZZZZZZZZZZZZZZZZZZZZZ

コード

#!/usr/bin/env ruby

# Set your env var: SLACK_POSTER_TOKEN.
# $ grep SLACK_POSTER_TOKEN ~/.bash_profile
# export SLACK_POSTER_TOKEN=xxxx-9999999999-999999999999-ZZZZZZZZZZZZZZZZZZZZZZZZ

require 'json'

def main
  if ARGV.length == 0
    puts "Usage: ruby slack-poster.rb filename.png ... "
    puts "Post filename.png ... to your slack channel."
    abort
  end

  ARGV.each do |filename|
    json = `curl -F file=@#{filename} -F channels=#general -F token=#{ENV['SLACK_POSTER_TOKEN']} https://slack.com/api/files.upload`
    result = JSON.parse(json)
    if !result["ok"]
      abort("ERROR")
    else
      puts result["file"]["permalink"]
    end
  end
end

main

実行例

$ ruby slack-poster.rb test.png
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  265k    0  1381  100  264k    185  36408  0:00:07  0:00:07 --:--:--     0
https://xxxx.example.com/files/XXXXX9999/XXXXXXXXX/test.png

 2018-05-26   slack   ruby   curl