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