/miniblerg
#!/usr/bin/perl use LWP::UserAgent; use strict; use v5.10; my $baseurl = 'http://blerg.cc/'; my $rc = "$ENV{HOME}/.miniblerg.rc"; my $cookies = "$ENV{HOME}/.miniblerg.cookies"; open OPTIONS, $rc; my %options = map { chomp; split /\s*=\s*/ } <OPTIONS>; close OPTIONS; my $agent = LWP::UserAgent->new( cookie_jar => { file => $cookies, ignore_discard => 1 } ); sub blerg_call { my ($name, $params) = @_; my $res = $agent->post($baseurl . $name, $params); return $res->decoded_content =~ /success/; } my $op = shift; given ($op) { when ('login') { print "Password: "; system('stty -echo'); my $password = <STDIN>; system('stty echo'); chomp $password; print "\n"; blerg_call('login', { username => $options{username}, password => $password }) or die "Could not log in\n"; $agent->cookie_jar->save; chmod 0600, $cookies; } when('logout') { blerg_call('logout', { username => $options{username} }); unlink $cookies; } when ('post') { my $data; if (-t STDIN) { my $editor = $ENV{EDITOR} // $ENV{VISUAL}; system "touch /tmp/miniblerg.post.$$"; system "$editor /tmp/miniblerg.post.$$"; open DATA, "/tmp/miniblerg.post.$$"; $data = join('', <DATA>); close DATA; } else { $data .= $_ while <STDIN>; } chomp $data; if (!$data) { print "Aborting empty post\n"; exit 1; } blerg_call('put', { username => $options{username}, data => $data }) or die "Could not post\n"; END { unlink "/tmp/miniblerg.post.$$"; } } }