#!/usr/bin/perl 
# -d
# this is used as whatnow proc ( see MH-plus )
#
# MH nntp/netnews interface

use strict;
use warnings;

my $vi = "vi";
my $less = "less";
my $mhn = "mhn -auto -headers -junet";
my $file = $ENV{'mhdraft'};
my $folder = "+posted";


if (! $file ||  ! -f $file) {
    if (-f $ARGV[0]) {
        system("nkf -w $ARGV[0] > /tmp/aho");
        fbpost("/tmp/aho");
    }
    exit 0;
}
# print "$file\n";

&edit($vi);

$|=1;

print "what now? ";
while(<STDIN>) {
    chop;
    s/\s+(.*)$//; 
    my $opt = $1;
    if ("quit"=~/^$_/) {
	if ($opt && $opt =~/\-d/) {
	    unlink($file);
	}
        exit;
    } elsif ("edit"=~/^$_/) {
	if ($opt) {
	    edit($opt);
	} else {
	    edit($vi);
	}
    } elsif ("list"=~/^$_/) {
	if ($opt) {
	    less($opt);
	} else {
	    less($less);
	}
    } elsif ("send"=~/^$_/) {
	if (`hostname` =~ /^ghanima/) {
	    &local_post();
	} else {
	    &remote_post();
	}
	exit(0);
    } elsif ("debug"=~/^$_/) {
        print join("\n\n",&mail($file));
    } else {
	print "edit/send/list/quit\n";
    }
    print "what now? ";
}

sub local_post {
    fbpost($file);
    system "$mhn $file";
    system "/usr/local/mh/lib/post $file";
}

sub remote_post {
    fbpost($file);
    system "$mhn $file";
    system "postcnv $file";
}

sub edit {
    my($vi) = @_;
    system "$vi $file";
}
sub less {
    my($less) = @_;
    system "$less $file";
}

sub fbpost {
    my ($file) = @_;
    my ($subject, $body) = mail($file);
# print "Subject: $subject\n";
# print "Body: $body\n";

use Facebook::Graph;
use utf8;

    my $token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';


    my $fb = Facebook::Graph->new(access_token => $token);
    my $note = $fb->add_note;
    $note       ->set_subject($subject);
    $note       ->set_message($body);
#    my $note = $fb->add_post;
#     $note       ->set_subject($subject);
#    $note       ->set_message($subject."\n".$body);
    my $ret = $note       ->publish;
    # print $ret,"\n";
}

sub mail
{
    my ($file) = @_;

    open(my $fh, '<', $file) or die $!;

    $/ = "\n\n";
    my $headerstr = <$fh>;    # transfer trick
    $headerstr =~ s/\n\s+/ /g;
# print "headstr: $headerstr\n";
    return ("","") if ($fh->eof()); 
    my $body;
    $/ = "\n";
    # $body .= $_ while(<$fh>) ;         # rest of it
    my $pre = 0;
    while(<$fh>) {         # rest of it
        s/&/\&amp;/g;
        s/</\&lt;/g;
        s/>/\&gt;/g;
        if (!/href/) { s/http:[^\s]+/<a href="$&">$&<\/a>/g; }
        if (/^\s\s/ && ! $pre ) { $pre = 1; $body .= "<pre>\n"; }
        elsif (/^$/) { $body .= "<br>" ; }
        elsif (/^\S/ && $pre) { $pre = 0; $body .= "</pre>"; }
        $body .= $_ ;
    }
    my $subject = '';
    foreach my $item (split("\n", $headerstr)) {
	if ($item =~ s/^Subject:\s*//io) {
	    $subject = $item;
	} 
    }
    return ($subject, $body);

}


# end
