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