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

sub HELP_MESSAGE {
    print STDERR <<"EOM";
usage : $0 [-p] [-k API_KEY] url
        -p: pretty print
        -k API_KEY: API Access Key
EOM
    exit 0;
}
our ($opt_p, $opt_k);
getopts('pk:') 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 $res = $ua->get($url);
die $res->message if $res->is_error;

my $content =  $res->content;
utf8::decode($content);	# convert UTF-8 binary to text
if ($opt_p) {		# pretty print
    my $perl_ref = from_json($content);
    print to_json($perl_ref, {pretty=>1});
} else {
    print $content, "\n";
}
exit 0;
