squirt: upload a file to a slack channel from the cli
#!/usr/bin/env ruby | |
require 'json' | |
if ARGV.length < 3 then | |
puts "Usage: squirt <filename> <channel> <comment>" | |
exit | |
end | |
token = "" | |
if token == "" then | |
puts "Get an API token at https://api.slack.com/web#basics and enter it above" | |
exit | |
end | |
filename = ARGV[0] | |
channel = ARGV[1] | |
comment = ARGV[2] | |
# get channel list | |
channel_raw_data = `curl -s -F token=#{token} https://slack.com/api/channels.list` | |
channel_data = JSON.parse(channel_raw_data) | |
#find channel ID for channel name | |
channel_id = channel_data["channels"].map {|c| c['id'] if c['name']==channel}.compact.first | |
if not channel_id then | |
puts "Channel ID not found" | |
exit 1 | |
end | |
output = `curl -s -F file=@#{filename} -F channels=#{channel_id} -F initial_comment=\"#{comment}\" -F token=#{token} https://slack.com/api/files.upload` | |
result = JSON.parse(output) | |
if not result['ok'] then | |
puts "Upload failed: #{result['error']}" | |
exit 1 | |
end |
This comment has been minimized.
This comment has been minimized.
wish I could submit a PR for a gist :) some filenames (eg anything with spaces) were being slightly munged as they pass through, so I added shell escaping: https://gist.github.com/arches/83799b98d2fff056d5c8 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This comment has been minimized.
SquirtJS: https://gist.github.com/lmarkus/85fdab8c47d0962bf5d3
😁