During the redesign of our photo page, we created a YUI3 APIĀ module, used for all Flickr API transactions. This module has been designed to load component modules as needed, which makes for a speedy initial load. For example, the YUI3 IO module, which handles XMLHttpRequests in the YUI3 library, is loaded only if writing to the Flickr API. Read requests are all handled by the Get Module, which is included in the core of YUI3. A byproduct of this approach is that read requests can be made cross domain, without a proxy.
Reading from Flickr
Simply include gallery-flickr-api in your requirement definition. Then use the Y.flickrAPI.callMethod function, passing the Flickr API method name and callback as arguments. Have a look at the YUI3 Gallery page for more information about using gallery modules. Read requests can be made cross-domain without a proxy, since the request and response will be loaded as a script resource instead of using XMLHttpRequest.
YUI().use('gallery-flickr-api', function(Y) { Y.flickrAPI.callMethod('flickr.panda.getPhotos', { api_key: 'your_api_key', panda_name: 'ling ling', extras: 'license, date_taken, owner_name', per_page: 50, page:1 }, { success : function(response_object) { //Success Code }, failure : function(response_object) { //Failure Code } }); });
Writing to Flickr
Okay, writing to Flickr API (i.e. post requests) is a little trickier. You will need to make sure that your API key is enabled to read and write. As soon as you make the first API request to write, the YUI3 IO module will be loaded (if it is not already). It is important to note that write requests can only be done on the same domain, which is the standard security restriction of the XMLHttpRequest for browsers. POST requests to the Flickr API, will require some sort of proxy which will accept the post request on your domain and handle the cross-domain communication with api.flickr.com
YUI().use('gallery-flickr-api', function(Y) { Y.flickrAPI.callMethod('flickr.favorites.add', { api_key: 'your_api_key', photo_id: a_photo_id }, { success : function(response_object) { //Success Code }, failure : function(response_object) { //Failure Code } }); });
We hope that you make use of this new module. It is a great way to get quick prototypes and full scale applications made using the Flickr API in a short amount of time. See you in the App Garden!