Zend_Service_Audioscrobbler

Zend_Service_Delicious

Introduction

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

  1. span style="color: #ff0000;">'username', 'password'"--\n""Title: {$post->getTitle()}\n""Url: {$post->getUrl()}\n";
  2. }

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.

  1. /**
  2. * Get posts matching the arguments. If no date or url is given,
  3. * most recent date will be used.
  4. *
  5. * @param string $tag Optional filtering by tag
  6. * @param Zend_Date $dt Optional filtering by date
  7. * @param string $url Optional filtering by url
  8. * @return Zend_Service_Delicious_PostList
  9. *//**
  10. * Get recent posts
  11. *
  12. * @param string $tag   Optional filtering by tag
  13. * @param string $count Maximal number of posts to be returned
  14. *                      (default 15)
  15. * @return Zend_Service_Delicious_PostList
  16. *//**
  17. * Get all posts
  18. *
  19. * @param string $tag Optional filtering by tag
  20. * @return Zend_Service_Delicious_PostList
  21. */

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.

Example #2 Accessing post lists

  1. span style="color: #ff0000;">'username', 'password'// count posts
  2. // iterate over posts
  3. "--\n""Title: {$post->getTitle()}\n""Url: {$post->getUrl()}\n";
  4. }
  5.  
  6. // get post using array access

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.

  1. span style="color: #ff0000;">'username', 'password'// Print posts having "php" and "zend" tags
  2. 'php', 'zend'"Title: {$post->getTitle()}\n""Url: {$post->getUrl()}\n";
  3. }

Example #4 Filtering a Post List by URL

Posts may be filtered by URL matching a specified regular expression using the withUrl() method:

  1. span style="color: #ff0000;">'username', 'password'// Print posts having "help" in the URL
  2. '/help/'"Title: {$post->getTitle()}\n""Url: {$post->getUrl()}\n";
  3. }

Editing posts

Example #5 Post editing

  1. span style="color: #ff0000;">'username', 'password'// set title
  2. 'New title');
  3. // save changes

Example #6 Method call chaining

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

  1. span style="color: #ff0000;">'username', 'password''New title')
  2.          ->setNotes('New notes')
  3.          ->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

  1. span style="color: #ff0000;">'username', 'password');
  2.  
  3. // by specifying URL
  4. 'http://framework.zend.com');
  5.  
  6. // or by calling the method upon a post object
  7. // another way of using deletePost()

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.

Example #8 Adding a post

  1. span style="color: #ff0000;">'username', 'password');
  2.  
  3. // create a new post and save it (with method call chaining)
  4. 'Zend Framework', 'http://framework.zend.com')
  5.           ->setNotes('Zend Framework Homepage')
  6.           ->save();
  7.  
  8. // create a new post and save it  (without method call chaining)
  9. 'Zend Framework',
  10.                                      'http://framework.zend.com''Zend Framework Homepage'

Tags

Example #9 Tags

  1. span style="color: #ff0000;">'username', 'password');
  2.  
  3. // get all tags
  4. // rename tag ZF to zendFramework
  5. 'ZF', 'zendFramework');

Bundles

Example #10 Bundles

  1. span style="color: #ff0000;">'username', 'password');
  2.  
  3. // get all bundles
  4. // delete bundle someBundle
  5. 'someBundle');
  6.  
  7. // add bundle
  8. 'newBundle''tag1', 'tag2'));

Public data

The del.icio.us web API allows access to the public data of all users.

Methods for retrieving public data
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_Delicious object.

Example #11 Retrieving public data

  1. // username and password are not required
  2. // get fans of user someUser
  3. 'someUser'));
  4.  
  5. // get network of user someUser
  6. 'someUser'));
  7.  
  8. // get tags of user someUser
  9. 'someUser'));

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

  1.  

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

  1. span style="color: #ff0000;">'keepalive'

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).


Zend_Service_Audioscrobbler