Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

CURL and Perl (it rymes!)

by blue_cowdawg (Monsignor)
on Dec 28, 2011 at 20:00 UTC ( [id://945411]=perlquestion: print w/replies, xml ) Need Help??

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 dave@vps.net:abc123ABC456== https://api.vps.net/virtual_machines. +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( 'https://api.vps.net/virtual_machines.api10json', 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( 'https://api.vps.net/virtual_machines.api10json', 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.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://945411]
Approved by herveus
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others wandering the Monastery: (2)
As of 2024-06-16 08:50 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?
    erzuuli‥ 🛈The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.