Rapleaf Address Book API
0
Rapleaf's Address Book API makes it easy for users to import webmail contacts from Gmail, AOL, Hotmail, and Yahoo. You can access names and email addresses of the person's contacts, and invite them to your site, import social relationships, share content, and more.
Rapleaf maintains an up to date code on the importer, and never stores passwords.
Rapleaf maintains an up to date code on the importer, and never stores passwords.
<?php
/*
* Helper class for the Rapleaf Address Book API
* (http://www.rapleaf.com/apidoc/v2/abook)
* Gets the XML response from the Rapleaf server and parses it into a PHP object.
*
* Usage:
* 1. $abook = new RapleafAbook(api_key[,url]) to initialize
* 2. $result = $abook->getData(email, password) to query the API for a contact list
* See the function definitions for details.
*
* 03/01/2008
*
*/
class RapleafAbook {
var $url;
var $api_key;
var $status;
function RapleafAbook($api_key, $url = 'http://api.rapleaf.com/v2/abook') {
$this->api_key = $api_key;
$this->url = $url;
$this->status = '';
}
function getData($email, $pass) {
# assemble post_data string
$post_data = "login=$email&password=$pass";
$response = $this->sendPostRequest($this->url, $post_data);
# the return structure
$result = array(
'status' => '', # HTTP status code returned by the server
'error' => '', # error message if there are any
'contacts' => array(), # contact list if request succeeded
);
$result['status'] = $this->status;
if ($this->status == '200') { #OK
$result['contacts'] = $this->xmlToObj($response);
} elseif ($this->status == '400') {
$result['error'] = 'The request did not contain all required parameters: '.$response;
} elseif ($this->status == '401') {
$result['error'] = 'API key was not provided or is invalid.';
} elseif ($this->status == '420') {
$result['error'] = 'Login failed.';
} elseif ($this->status == '500') {
$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.';
} elseif ($this->status == '520') {
$result['error'] = 'There was an error while reading the contacts from the address book.';
}
return $result;
}
# Parse the xml response text into an associative array
function xmlToObj($str) {
$xml = simplexml_load_string($str);
$result = array();
foreach ($xml->contact as $contact) {
$result[] = array('name' => (string) $contact['name'], 'email' => (string) $contact['email']);
}
return $result;
}
# Returns the xml response on success, sets the error message on failure
function sendPostRequest($url, $post_data) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_HTTPHEADER,
array("Authorization: ".$this->api_key, "Content-Type: application/x-www-form-urlencoded")
);
$data = curl_exec($ch);
$this->status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
return $data;
}
}
?>





There are currently no comments for this snippet.