#!/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;