blue_cowdawg has asked for the wisdom of the Perl Monks concerning the following question:

Fellow monks: I am in need of a nudge in the right direction.

I have a hosting provider that I use (VPS.Net) that provides a wonderful API using a RESTful service for access. They suggest CURL to enact this access. Here is one example of what their API documentation suggests:

curl -H 'Accept: application/json' -H 'Content-type: application/json' + -u +api10json

The provided example provides a list of the VPS-es that are part of your account in JSON format. The exact same call is used in POST with JSON as input to create a new VPS.

I can do the GET easy enough. I looked at the documentation for Curl::Easy and Curl::Simple and got a headache. Has anybody out there done anything similar and willing to show snippets of what you did?

Thanks in advance.

Peter L. Berghold -- Unix Professional
Peter -at- Berghold -dot- Net; AOL IM redcowdawg Yahoo IM: blue_cowdawg

Replies are listed 'Best First'.
Re: CURL and Perl (it rhymes!)
by Corion (Patriarch) on Dec 28, 2011 at 20:33 UTC

    I would look at what HTTP requests Curl creates from that command line, and then recreate these HTTP::Requests for use with LWP::UserAgent. If Curl has no convenient way to show what it is sending, likely Wireshark or any other network sniffer will produce the data sent by Curl.

    use HTTP::Request::Common; my $virtual_machines = GET( '', Accept => 'application/json', Content_Type => 'application/json', ); # perform request, passing the credentials either in the URL or settin +g up LWP::UserAgent ... print $response->as_string;

    Setting new values is likely done via POST:

    use JSON; my $new_values => [ machine1 => 100, machine2 => 200, machine3 => 300, machine4 => 400, ]; my $set_virtual_machines = POST( '', Accept => 'application/json', Content_Type => 'application/json', Content => [ 'magic_json_parameter_name' => encode_json($new_values ), ], );
Re: CURL and Perl (it rymes!)
by JavaFan (Canon) on Dec 28, 2011 at 21:57 UTC
    If you already know which options to give to curl, I'd just use curl and wouldn't spending the resources on rewriting it. Perl is a glue language afterall.