<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: adddressbook code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Sat, 17 May 2008 22:56:08 GMT</pubDate>
    <description>DZone Snippets: adddressbook code</description>
    <item>
      <title>Rapleaf Address Book API in Perl</title>
      <link>http://snippets.dzone.com/posts/show/5232</link>
      <description>Retrieve e-mail contacts from several services using the Rapleaf Address Book API.&lt;br /&gt;&lt;br /&gt;It accesses the Rapleaf API Web server and executes a request to retrieve the contact list of a given user of either Gmail, Yahoo, Hotmail and AOL.&lt;br /&gt;&lt;br /&gt;Returns an associative array with the contacts names and e-mail addresses, as well the HTTP response status and any errors.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;package Rapleaf;&lt;br /&gt;use strict;&lt;br /&gt;&lt;br /&gt;use LWP::UserAgent;&lt;br /&gt;use HTTP::Request;&lt;br /&gt;use XML::Simple;&lt;br /&gt;&lt;br /&gt;sub getData {&lt;br /&gt;	my ($email, $pass, $api_key, $url) = @_;&lt;br /&gt;	my $post_data = "login=$email&amp;password=$pass";&lt;br /&gt;&lt;br /&gt;	$url ||= 'http://api.rapleaf.com/v2/abook';&lt;br /&gt;	my $agent = LWP::UserAgent-&gt;new();&lt;br /&gt;	my $request = HTTP::Request-&gt;new(POST =&gt; $url);&lt;br /&gt;	$request-&gt;content($post_data);&lt;br /&gt;	$request-&gt;header( 'Authorization' =&gt; $api_key );&lt;br /&gt;	my $response;&lt;br /&gt;	$response = $agent-&gt;request($request);&lt;br /&gt;	my %result; &lt;br /&gt;	if($response-&gt;code == 200) {&lt;br /&gt;		my $xml = new XML::Simple;&lt;br /&gt;		%result = %{$xml-&gt;XMLin($response-&gt;content)};&lt;br /&gt;&lt;br /&gt;		# if a single contact if found, XMLin returns a result set of a different format, therefore we need to manually format it&lt;br /&gt;		if ($result{'contact'}-&gt;{'name'}) {&lt;br /&gt;			$result{'contact'}-&gt;{$result{'contact'}-&gt;{'name'}} &lt;br /&gt;				= {'email'=&gt;$result{'contact'}-&gt;{'email'}};&lt;br /&gt;			delete $result{'contact'}-&gt;{'name'};&lt;br /&gt;			delete $result{'contact'}-&gt;{'email'};&lt;br /&gt;		} &lt;br /&gt;	} elsif ($response-&gt;code == 400) {&lt;br /&gt;		$result{'error'} = 'The request did not contain all required parameters: '.$response;&lt;br /&gt;	} elsif ($response-&gt;code == 401) {&lt;br /&gt;		$result{'error'} = 'API key was not provided or is invalid.';&lt;br /&gt;	} elsif ($response-&gt;code == 420) {&lt;br /&gt;		$result{'error'} = 'Login failed.';&lt;br /&gt;	} elsif ($response-&gt;code == 500) {&lt;br /&gt;		$result{'error'} = 'There was an unexpected error on our server. This should be very rare and if you see it please contact developer@rapleaf.com.';&lt;br /&gt;	} elsif ($response-&gt;code == 520) {&lt;br /&gt;		$result{'error'} = 'There was an error while reading the contacts from the address book.';&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	$result{'status'} = $response-&gt;code;&lt;br /&gt;	return \%result;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;1;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Fri, 14 Mar 2008 14:39:58 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5232</guid>
      <author>dannymo2 (Dan Scudder)</author>
    </item>
  </channel>
</rss>
