<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -2,7 +2,7 @@
 
 == Description
 
-A teeny tiny gem to interface with Flickr photostreams
+A small, yet powerful, gem to interface with Flickr photostreams
 
 == Installation
 
@@ -22,16 +22,24 @@ Or ...
 
 == Usage
 
-Before doing anything, require the library:
+To get started, you'll need to grab an API key from Flickr to at least perform any of
+the non-authenticated, read-only calls.  Head on over to the Flickr site to grab one, I'll
+be here when you get back: http://www.flickr.com/services/api/misc.api_keys.html
 
-    &gt;&gt; require 'rubygems'
-    &gt;&gt; require 'fleakr'
+Now that you have your key, you can get things rolling with irb and the fleakr gem:
 
+    $ irb -r rubygems
+    &gt;&gt; require 'fleakr'
+    
 Then, set your API key (only need to do this once per session):
 
     &gt;&gt; Fleakr.api_key = '&lt;your api key here&gt;'
-    
-Find a user by username:
+
+=== A Brief Tour
+
+With just an API key, you have the ability to retrieve a substantial amount of data 
+about users, their photosets, photos, contacts, and groups.  Let's start by finding a 
+user by his username:
 
     &gt;&gt; user = Fleakr.user('the decapitator')
     =&gt; #&lt;Fleakr::Objects::User:0x692648 @username=&quot;the decapitator&quot;, @id=&quot;21775151@N06&quot;&gt;
@@ -47,13 +55,18 @@ Once you have a user, you can find his associated sets:
     =&gt; [#&lt;Fleakr::Objects::Set:0x671358 @title=&quot;The Decapitator&quot;, @description=&quot;&quot;&gt;, 
         #&lt;Fleakr::Objects::Set:0x66d898 @title=&quot;londonpaper hijack&quot;, ...
 
+His individual photos:
+
+    &gt;&gt; user.photos.first
+    =&gt; #&lt;Fleakr::Objects::Photo:0x161b024 @title=&quot;\&quot;Be Fabulous\&quot;&quot; ... &gt;
+
 Or contacts:
 
     &gt;&gt; user.contacts.first
     =&gt; #&lt;Fleakr::Objects::User:0x19039bc @username=&quot;.schill&quot;,
         @id=&quot;12289718@N00&quot;, @icon_farm=&quot;1&quot;, @icon_server=&quot;4&quot;&gt;
 
-Or groups if you would like:
+Or his groups if you would like:
     
     &gt;&gt; user.groups
     =&gt; [#&lt;Fleakr::Objects::Group:0x11f2330 ..., 
@@ -77,20 +90,59 @@ When accessing a set, you can also grab all the photos that are in that set:
     &gt;&gt; user.sets.first.photos.first.title
     =&gt; &quot;Untitled1&quot;
     
+=== Photos
+
+Each photo object contains metadata about a collection of images, each representing different
+sizes.  Once we have a single photo:
+    
+    &gt;&gt; photo = user.photos.first
+    =&gt; #&lt;Fleakr::Objects::Photo:0x161b024 @title=&quot;\&quot;Be Fabulous\&quot;&quot; ... &gt;
+    
+We can get information about one of the sizes:
+
+    &gt;&gt; photo.small
+    =&gt; #&lt;Fleakr::Objects::Image:0x1768f1c @height=&quot;172&quot;, @size=&quot;Small&quot;, @width=&quot;240&quot;,
+        @url=&quot;http://farm4.static.flickr.com/3250/2924549350_cbc1804258_m.jpg&quot;,  
+        @page=&quot;http://www.flickr.com/photos/the_decapitator/2924549350/sizes/s/&quot;&gt;
+
+Grab the URL for the image itself:
+
+    &gt;&gt; photo.small.url
+    =&gt; &quot;http://farm4.static.flickr.com/3250/2924549350_cbc1804258_m.jpg&quot;
+    
+Or grab the URL for its page on the Flickr site:
+    
+    &gt;&gt; photo.small.page
+    =&gt; &quot;http://www.flickr.com/photos/the_decapitator/2924549350/sizes/s/&quot;
+    
+Other sizes are available (:square, :thumbnail, :small, :medium, :large, :original) and
+are accessed in the same way:
+    
+    &gt;&gt; photo.original.url
+    =&gt; &quot;http://farm4.static.flickr.com/3250/2924549350_1cf67c2d47_o.jpg&quot;    
+
+=== Saving Images
+
 If a photo interests you, save it down to a directory of your choosing:
 
-    &gt;&gt; user.sets.first.photos.first.small.save_to('/tmp')
-    =&gt; #&lt;File:/tmp/2117922283_715587b2cb_m.jpg (closed)&gt;
+    &gt;&gt; photo.original.save_to('/tmp')
+    =&gt; #&lt;File:/tmp/2924549350_1cf67c2d47_o.jpg (closed)&gt;
     
-If you can't decide on a photo and would rather just save the whole set, specify the target directory 
-and the size of the images you're interested in:
+Similarly, you can save down entire sets.  Just specify the target directory and the size 
+of the images you're interested in:
 
     &gt;&gt; user.sets.first.save_to('/tmp', :square)
     =&gt; [#&lt;Fleakr::Objects::Photo:0x1187a1c @secret=&quot;715587b2cb&quot; ...
+    
+This creates a subdirectory within the target directory based on the set's name and preserves
+the original order of the photos:
+    
     &gt;&gt; Dir[&quot;/tmp/#{user.sets.first.title}/*.jpg&quot;].map
-    =&gt; [&quot;/tmp/The Decapitator/2117919621_8b2d601bff_s.jpg&quot;, 
-        &quot;/tmp/The Decapitator/2117921045_5fb15eff90_s.jpg&quot;, 
-        &quot;/tmp/The Decapitator/2117922283_715587b2cb_s.jpg&quot;, ...
+    =&gt; [&quot;/tmp/The Decapitator/01_2117922283_715587b2cb_s.jpg&quot;, 
+        &quot;/tmp/The Decapitator/02_2125604584_9c09348fd6_s.jpg&quot;, 
+        &quot;/tmp/The Decapitator/03_2118696542_8af5763bde_s.jpg&quot;, ... ]
+
+=== Searching
 
 If you would prefer to just search photos, you can do that with search text:
 
@@ -116,16 +168,56 @@ Searches can also be scoped to other entities in the system (namely Users and Gr
     &gt;&gt; user.search('serpent')
     =&gt; [#&lt;Fleakr::Objects::Photo:0x18a6960 @server_id=&quot;41&quot;, @id=&quot;81370156&quot;,
         @farm_id=&quot;1&quot;, @title=&quot;Clear and Serpent Danger&quot;, @secret=&quot;013091582a&quot;&gt;]
-        
-== TODO
 
-* Implement remaining bits of person, photoset, and photo-releated APIs
-* Provide a better searching interface
-* Lazily load attributes for objects that need to be accessed via secondary API call
-* Implement asynchronous file upload / replacement w/ ticket checking
+=== Authenticated Calls &amp; Uploads
+
+While read-only access to the API gets you quite a bit of data, you'll need to generate an
+authentication token if you want access to the more powerful features (like uploading your 
+own photos).  
+
+Assuming you've already applied for a key, go back and make sure you have the right settings
+to get your auth token.  Click on the 'Edit key details' link and ensure that:
+
+1. Your application description and notes are up-to-date
+1. The value for 'Authentication Type' is set to 'Mobile Application'
+1. The value for 'Mobile Permissions' is set to either 'write' or 'delete'
+
+Once this is set, you'll see your Authentication URL on the key details page (it will look
+something like http://www.flickr.com/auth-534525246245).  Paste this URL into your browser and 
+confirm access to get your mini-token. Now you're ready to make authenticated requests:
+
+  require 'rubygems'
+  require 'fleakr'
+
+  Fleakr.api_key       = 'ABC123'
+  Fleakr.shared_secret = 'sekrit' # Available with your key details on the Flickr site
+  Fleakr.mini_token    = '362-133-214'
+
+  Fleakr.upload('/path/to/my/photo.jpg')
+  Fleakr.token.value # =&gt; &quot;34132412341235-12341234ef34&quot;
+
+Once you use the mini-token once, it is no longer available.  To use the generated auth_token
+for future requests, just set Fleakr.auth_token to the generated value.
+
+== Roadmap / TODO
+
+=== 0.4.x
+
+* Allow passing of parameters to file uploads to allow for access control / naming
+* Implement remaining bits of person and photo-related API calls (read-only)
 * Automatically sign all calls (if we have a secret), authenticate all calls (if we have a token)
+
+=== 0.5.x
+
+* Implement asynchronous file upload / replacement w/ ticket checking
+* Provide a better searching interface
+
+=== Future
+
 * Implement save-able search results (e.g. Fleakr.search('ponies').save_to('/path', :medium))
-        
+* Implement deeper associations for core elements (e.g. tags / etc..)
+* Implement write methods for photos &amp; photosets
+
 == License
 
 Copyright (c) 2008 Patrick Reagan (reaganpr@gmail.com)</diff>
      <filename>README.rdoc</filename>
    </modified>
    <modified>
      <diff>@@ -13,7 +13,7 @@ require 'fleakr/core_ext'
 require 'fleakr/support'
 require 'fleakr/objects'
 
-# = Fleakr: A teeny tiny gem to interface with Flickr
+# = Fleakr: A small, yet powerful, gem to interface with Flickr photostreams
 #
 # == Quick Start
 #</diff>
      <filename>lib/fleakr.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>cf10e681de9d456278914f865016fe393bb740fe</id>
    </parent>
  </parents>
  <author>
    <name>Patrick Reagan</name>
    <email>patrick.reagan@viget.com</email>
  </author>
  <url>http://github.com/reagent/fleakr/commit/40d146cce54df93ecef5c82263867c1c35d1162d</url>
  <id>40d146cce54df93ecef5c82263867c1c35d1162d</id>
  <committed-date>2009-01-01T23:14:54-08:00</committed-date>
  <authored-date>2009-01-01T23:14:54-08:00</authored-date>
  <message>Updated main README file with new features &amp; updated roadmap</message>
  <tree>6aab711987bb4a71c00a0a225ed2e62b1a481d26</tree>
  <committer>
    <name>Patrick Reagan</name>
    <email>patrick.reagan@viget.com</email>
  </committer>
</commit>
