#!/usr/bin/env ruby
require "optparse"
require "curi"
require 'tempfile'
require 'net/http'
BASE_URL = 'http://curi.us/remote/'
LOCA_BASE_URL = 'http://localhost:3000/remote/'
what = nil
id = nil
$local = false
opts = OptionParser.new
opts.on("-l", "--list") {|val| what=:list}
opts.on("-n", "--new") {|val| what=:new}
opts.on("-L", "--local") {|val| $local = true}
opts.on("-e VAL", "--edit VAL") {|val| what=:edit; id = val}
opts.on("-s VAL", "--show") {|val| what=:show; id = val}
rest = opts.parse(*ARGV)
def http_post(url, post="")
if $local
base_url = LOCA_BASE_URL
else
base_url = BASE_URL
end
res = Net::HTTP.post_form(URI.parse(base_url+url),
{"user" => blog_username(), "password" => blog_password(), 'post' => post})
res
end
def textmate(input)
if input
tf = Tempfile.new("textmateinput")
File.open(tf.path, "w") {|f| f.write input.strip}
result = `mate -w < #{tf.path}`
File.delete(tf.path)
else
result = `mate -w < /dev/null`
end
result
end
case what
when :list
puts http_post("list").body
when :show
puts http_post("show_pretty/#{id}").body
when :new
blank = http_post("blank").body
post = textmate(blank)
puts http_post("new", post).body
when :edit
old = http_post("show_plain/#{id}").body
post = textmate(old)
puts http_post("edit/#{id}", post).body
end
New Blogging Script
I wrote a new program for writing to my blog from the command line. I'm pleased. Now i can create, view, edit, and list posts, instead of just writing new ones. Here it is (of course I had to add a new controller to handle these requests and I changed my Post model, but here's the local part):
Messages