|
|
Zend_Service_Delicious is simple API for using
» del.icio.us
XML and JSON web services. This component gives you read-write access to posts at del.icio.us
if you provide credentials. It also allows read-only access to public data of all users.
Example #1 Get all posts
getAllPosts();
foreach ($posts as $post) {
echo "--\n";
echo "Title: {$post->getTitle()}\n";
echo "Url: {$post->getUrl()}\n";
}
Zend_Service_Delicious provides three methods for retrieving posts: getPosts(),
getRecentPosts() and getAllPosts(). All of these
methods return an instance of Zend_Service_Delicious_PostList, which
holds all retrieved posts.
Instances of this class are returned by the getPosts(), getAllPosts(),
getRecentPosts(), and getUserPosts() methods of Zend_Service_Delicious.
For easier data access this class implements the Countable, Iterator, and
ArrayAccess interfaces.
Example #2 Accessing post lists
getAllPosts();
// count posts
echo count($posts);
// iterate over posts
foreach ($posts as $post) {
echo "--\n";
echo "Title: {$post->getTitle()}\n";
echo "Url: {$post->getUrl()}\n";
}
// get post using array access
echo $posts[0]->getTitle();
Note:
The
ArrayAccess::offsetSet()andArrayAccess::offsetUnset()methods throw exceptions in this implementation. Thus, code likeunset($posts[0]);and$posts[0] = 'A';will throw exceptions because these properties are read-only.
Post list objects have two built-in filtering capabilities. Post lists may be filtered by tags and by URL.
Example #3 Filtering a Post List with Specific Tags
Posts may be filtered by specific tags using withTags(). As a convenience,
withTag() is also provided for when only a single tag needs to be specified.
getAllPosts();
// Print posts having "php" and "zend" tags
foreach ($posts->withTags(array('php', 'zend')) as $post) {
echo "Title: {$post->getTitle()}\n";
echo "Url: {$post->getUrl()}\n";
}
Example #4 Filtering a Post List by URL
Posts may be filtered by URL matching a specified regular expression using the withUrl()
method:
getAllPosts();
// Print posts having "help" in the URL
foreach ($posts->withUrl('/help/') as $post) {
echo "Title: {$post->getTitle()}\n";
echo "Url: {$post->getUrl()}\n";
}
Example #5 Post editing
getPosts();
// set title
$posts[0]->setTitle('New title');
// save changes
$posts[0]->save();
Example #6 Method call chaining
Every setter method returns the post object so that you can chain method calls using a fluent interface.
getPosts();
$posts[0]->setTitle('New title')
->setNotes('New notes')
->save();
There are two ways to delete a post, by specifying the post URL or by calling the delete()
method upon a post object.
Example #7 Deleting posts
deletePost('http://framework.zend.com');
// or by calling the method upon a post object
$posts = $delicious->getPosts();
$posts[0]->delete();
// another way of using deletePost()
$delicious->deletePost($posts[0]->getUrl());
To add a post you first need to call the createNewPost() method, which returns a
Zend_Service_Delicious_Post object. When you edit the post, you need to save it
to the del.icio.us database by calling the save() method.
Example #8 Adding a post
createNewPost('Zend Framework', 'http://framework.zend.com')
->setNotes('Zend Framework Homepage')
->save();
// create a new post and save it (without method call chaining)
$newPost = $delicious->createNewPost('Zend Framework', 'http://framework.zend.com');
$newPost->setNotes('Zend Framework Homepage');
$newPost->save();
Example #9 Tags
getTags());
// rename tag ZF to zendFramework
$delicious->renameTag('ZF', 'zendFramework');
Example #10 Bundles
getBundles());
// delete bundle someBundle
$delicious->deleteBundle('someBundle');
// add bundle
$delicious->addBundle('newBundle', array('tag1', 'tag2'));
The del.icio.us web API allows access to the public data of all users.
| Name | Description | Return type |
|---|---|---|
getUserFans() |
Retrieves fans of a user | Array |
getUserNetwork() |
Retrieves network of a user | Array |
getUserPosts() |
Retrieves posts of a user | Zend_Service_Delicious_PostList |
getUserTags() |
Retrieves tags of a user | Array |
Note:
When using only these methods, a username and password combination is not required when constructing a new
Zend_Service_Deliciousobject.
Example #11 Retrieving public data
getUserFans('someUser'));
// get network of user someUser
print_r($delicious->getUserNetwork('someUser'));
// get tags of user someUser
print_r($delicious->getUserTags('someUser'));
When retrieving public posts with the getUserPosts() method, a
Zend_Service_Delicious_PostList object is returned, and it contains
Zend_Service_Delicious_SimplePost objects, which contain basic information
about the posts, including URL, title, notes, and tags.
| Name | Description | Return type |
|---|---|---|
getNotes() |
Returns notes of a post | String |
getTags() |
Returns tags of a post | Array |
getTitle() |
Returns title of a post | String |
getUrl() |
Returns URL of a post | String |
Zend_Service_Delicious uses Zend_Rest_Client for making HTTP requests
to the del.icio.us web service. To change which HTTP client Zend_Service_Delicious
uses, you need to change the HTTP client of Zend_Rest_Client.
Example #12 Changing the HTTP client of Zend_Rest_Client
When you are making more than one request with Zend_Service_Delicious to speed your
requests, it's better to configure your HTTP client to keep connections alive.
Example #13 Configuring your HTTP client to keep connections alive
setConfig(array(
'keepalive' => true
));
Note:
When a
Zend_Service_Deliciousobject is constructed, the SSL transport ofZend_Rest_Clientis set to'ssl'rather than the default of'ssl2'. This is because del.icio.us has some problems with'ssl2', such as requests taking a long time to complete (around 2 seconds).
|
|
Copyright © 2005-2011 Zend Technologies Inc (compiled by mikaelkael with ZFDocumentor - SVN 12849).

