#!/usr/bin/ruby -w require "net/http" require "cgi" file = ARGV.shift if file.nil? STDERR.puts("usage: paste ") exit 1 end url = URI.parse("http://paste.se:80/index.py") parts = [] data = { "user" => ENV["USER"], "submit" => "Paste", "desc" => File.basename(file), "paste" => File.read(file), "lang" => "text", } case file when /\.diff$/ data["lang"] = "diff" when /\.rb$/ data["lang"] = "rb" when /\.vala$/ data["lang"] = "csharp" end data.each do |key, value| key = CGI.escape(key) value = CGI.escape(value) parts << "#{key}=#{value}" end query = parts.join("&") headers = { "content-type" => "application/x-www-form-urlencoded" } Net::HTTP.start(url.host, url.port) do |http| response = http.post(url.path, query, headers) case response when Net::HTTPSuccess, Net::HTTPRedirection puts "pasted to: #{response["Location"]}" else STDERR.puts("couldn't paste: #{response.code}, #{response.body}") end end