Documentation

Zend_Service_Delicious

Introduction

Zend_Service_Delicious is simple API for using
» del.icio.usXML 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.

Retrieving posts

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.

/**

* Get posts matching the arguments. If no date or url is given,

* most recent date will be used.

*

* @param string $tag Optional filtering by tag

* @param Zend_Date $dt Optional filtering by date

* @param string $url Optional filtering by url

* @return Zend_Service_Delicious_PostList

*/

publicfunction getPosts($tag = null, $dt = null, $url = null);

/**

* Get recent posts

*

* @param string $tag Optional filtering by tag

* @param string $count Maximal number of posts to be returned

* (default 15)

* @return Zend_Service_Delicious_PostList

*/

publicfunction getRecentPosts($tag = null, $count = 15);

/**

* Get all posts

*

* @param string $tag Optional filtering by tag

* @return Zend_Service_Delicious_PostList

*/

publicfunction getAllPosts($tag = null);

Zend_Service_Delicious_PostList

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.

Note:
The ArrayAccess::offsetSet() and
ArrayAccess::offsetUnset() methods throw exceptions in this
implementation. Thus, code like unset($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.

Every setter method returns the post object so that you can chain method calls using
a fluent interface.

$delicious = new Zend_Service_Delicious('username', 'password');

$posts = $delicious->getPosts();

$posts[0]->setTitle('New title')

->setNotes('New notes')

->save();

Deleting posts

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

$delicious = new Zend_Service_Delicious('username', 'password');

// by specifying URL

$delicious->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());

Adding new posts

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.

Public posts

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.

Methods of the Zend_Service_Delicious_SimplePost class

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

HTTP client

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

$myHttpClient = new My_Http_Client();

Zend_Rest_Client::setHttpClient($myHttpClient);

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.

Note:
When a Zend_Service_Delicious object is constructed, the
SSL transport of Zend_Rest_Client is 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).