#!/usr/bin/perl
#	restput : PUT a representation of a REST resource
use strict;
use warnings;
use Getopt::Std;
use LWP::UserAgent;
use open ':locale';	# probe the locale environment variables like LANG

sub HELP_MESSAGE {
    print STDERR <<"EOM";
usage : $0 [-p API_KEY] url [files...]
        -k API_KEY: API Access Key
EOM
    exit 0;
}
our ($opt_k);
getopts('k:') or HELP_MESSAGE();
my $url = shift;
HELP_MESSAGE() unless $url;
#################################################
my $ua = new LWP::UserAgent;
$ua->timeout(10);	# default: 180sec
$ua->ssl_opts( verify_hostname => 0 );	# skip hostname verification
$ua->default_header('X-Redmine-API-Key' => $opt_k) if $opt_k;

my $content;
{
    local $/;
    $content = <>;	# gets whole input
}
utf8::encode($content);	# convert UTF-8 binary to text
my $res = $ua->put($url,
                   'Content-Type' => 'application/json;charset=utf-8',
                   'Content' => $content);
die $res->message if $res->is_error;
print $res->content();
exit 0;
