/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.$$";
		}
	}
}