mirror of
https://github.com/seejohnrun/haste-client.git
synced 2025-12-15 16:25:57 +00:00
46 lines
1012 B
Ruby
46 lines
1012 B
Ruby
require 'json'
|
|
|
|
module Haste
|
|
|
|
DEFAULT_URL = 'http://hastebin.com'
|
|
|
|
class CLI
|
|
|
|
attr_reader :input
|
|
|
|
# Pull all of the data from STDIN
|
|
def initialize
|
|
@input = STDIN.readlines.join
|
|
@input.strip!
|
|
end
|
|
|
|
# Upload the and output the URL we get back
|
|
def start
|
|
uri = URI.parse server
|
|
http = Net::HTTP.new uri.host, uri.port
|
|
response = http.post '/documents', input
|
|
if response.is_a?(Net::HTTPOK)
|
|
data = JSON.parse(response.body)
|
|
STDOUT.puts "#{server}/#{data['key']}"
|
|
else
|
|
STDERR.puts "failure uploading: #{res.status}"
|
|
end
|
|
rescue RuntimeError, JSON::ParserError => e
|
|
STDERR.puts "failure uploading: #{response.code}"
|
|
rescue Errno::ECONNREFUSED => e
|
|
STDERR.puts "failure connecting: #{e.message}"
|
|
end
|
|
|
|
private
|
|
|
|
def server
|
|
return @server if @server
|
|
@server = ENV['HASTE_SERVER'] || Haste::DEFAULT_URL
|
|
@server.chop! if server.end_with?('/')
|
|
@server
|
|
end
|
|
|
|
end
|
|
|
|
end
|