#!/usr/bin/ruby -w

require "net/http"
require "cgi"

file = ARGV.shift
if file.nil?
	STDERR.puts("usage: paste <FILE>")
	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
