http://qs1969.pair.com?node_id=781855


in reply to Re: How do I use curl with perl and Twitter
in thread How do I use curl with perl and Twitter

So, then if I use something like this, it should work?
my $nt = Net::Twitter->new( traits => [qw/API::REST/], username => $username, password => $pwd, apihost => "/users/show/".$TwitterID.".xml" ); my $result = $nt->show_user;
The API url defaults to http://twitter.com, and I assume that the apihost, would be the remainder of the REST call, and by calling show_user, instead of show_user(id) -- while using an apihost that terminates with .xml, I am guaranteed a response that's an xml string. The documentation was not clear on what format I should expect if I use show_user(id), which would assume the default apihost.

Replies are listed 'Best First'.
Re^3: How do I use curl with perl and Twitter
by Corion (Patriarch) on Jul 21, 2009 at 06:31 UTC

    I'm not sure that what you wrote above would work, because the apihost parameter is, unsurprisingly, documented in the Net::Twitter as:

    A string containing the Twitter API host. It defaults to "twitter.com:80". This option is available when the API::REST trait is included.

    I'm not sure where you get the idea that you have to construct any URLs yourself - this is what the module should shield you from. But I'm sure that, instead of theoretical musings, it would be far more productive if you actually tried things out and came back only if you had further questions or error messages to report.

      Actually, you're shielded from the URL only if you use certain methods. show_user is not one of them: you need to specify a user, and a format in the URL. I should be setting apiurl instead of apihost. Confusion resulting from using apihost in PHP with curl. In any case, I figured out why I kept getting error 500. I took out all code, except for a statement to print out Hello World. When I commented out the use Net::Twitter, it printed out fine, and when I put it back in, I got error 500. This happened on a hosting account I have on goDaddy and another I have on a generic Apache Host. So, it seems as if Net::Twitter is not in general use as a Perl module.

        I don't see, neither from the documentation nor from the Net::Twitter code, where you would need to construct an URL, or a format yourself. The ->show_user method seems to take a user ID, it requests the JSON formatted user details and then turns them into a Perl data structure.

        If you don't have Net::Twitter installed on your host, you can easily install it, by following Yes, even you can use CPAN

Re^3: How do I use curl with perl and Twitter
by davorg (Chancellor) on Jul 21, 2009 at 15:15 UTC

    You're making this far harder than it needs to be.

    #!/usr/bin/perl use strict; use warnings; use Data::Dumper; use Net::Twitter; my $nt = Net::Twitter->new; print Dumper $nt->show_user('davorg');

    You don't even need to authenticate unless you're trying to access a user who has protected their updates.

    --

    See the Copyright notice on my home node.

    Perl training courses

      The reason why I need to authenticate, is that Twitter rate limits its non-authenticated API calls to a small number of calls every hour. Authenticated (and pre-authorized) accounts, get a much bigger allowance. I did get Net::Twitter installed, and I'm about to test it.
      FYI: I am a Perl newbie. It is somewhat working, but I cannot figure out why this piece of code is not producing any output:
      my $nt = Net::Twitter->new( traits => [qw/API::REST/], username => $usename, password => $pwd ); my $results = $nt->show_user($twitterID); foreach my $user (@{ $results }) { my $id = $user->{id}; my $name = $user->{name}; print STDOUT $id." ".$name."<br>"; }
      No error messages either. I know it's about the way I am accessing the $user hash. I did some perl reading, and even one of the examples in Net::Twitter uses the same code.

        This is one of those (many) places where use warnings will tell you exactly what you are doing wrong.

        Not an ARRAY reference at ./twit line 13.

        The value you're getting back in $result is a hash reference. You can't treat it as an array reference.

        Coding without use warnings is stupid. Don't do it.

        --

        See the Copyright notice on my home node.

        Perl training courses