html/classes/S33r/BucketListing.html in s33r-0.4.1 vs html/classes/S33r/BucketListing.html in s33r-0.4.2

- old
+ new

@@ -90,16 +90,16 @@ <div id="method-list"> <h3 class="section-bar">Methods</h3> <div class="name-list"> - <a href="#M000111">[]</a>&nbsp;&nbsp; - <a href="#M000110">last_key</a>&nbsp;&nbsp; - <a href="#M000107">new</a>&nbsp;&nbsp; - <a href="#M000109">parse_listing</a>&nbsp;&nbsp; - <a href="#M000112">pretty</a>&nbsp;&nbsp; - <a href="#M000108">set_listing_xml</a>&nbsp;&nbsp; + <a href="#M000155">[]</a>&nbsp;&nbsp; + <a href="#M000154">last_key</a>&nbsp;&nbsp; + <a href="#M000151">new</a>&nbsp;&nbsp; + <a href="#M000153">parse_listing</a>&nbsp;&nbsp; + <a href="#M000156">pretty</a>&nbsp;&nbsp; + <a href="#M000152">set_listing_xml</a>&nbsp;&nbsp; </div> </div> </div> @@ -178,26 +178,35 @@ <tr class="top-aligned-row context-row"> <td class="context-item-name">prefix</td> <td class="context-item-value">&nbsp;[R]&nbsp;</td> <td class="context-item-desc"></td> </tr> + <tr class="top-aligned-row context-row"> + <td class="context-item-name">raw</td> + <td class="context-item-value">&nbsp;[RW]&nbsp;</td> + <td class="context-item-desc"> +Set to true to show raw parsing errors, instead of the catch all error +message (useful for debugging). + +</td> + </tr> </table> </div> </div> <!-- if method_list --> <div id="methods"> <h3 class="section-bar">Public Class methods</h3> - <div id="method-M000107" class="method-detail"> - <a name="M000107"></a> + <div id="method-M000151" class="method-detail"> + <a name="M000151"></a> <div class="method-heading"> - <a href="#M000107" class="method-signature"> - <span class="method-name">new</span><span class="method-args">(bucket_listing_xml, named_bucket=nil)</span> + <a href="#M000151" class="method-signature"> + <span class="method-name">new</span><span class="method-args">(bucket_listing_xml, named_bucket=nil, raw=false)</span> </a> </div> <div class="method-description"> <p> @@ -213,183 +222,199 @@ href="NamedBucket.html">NamedBucket</a> instance, so that any objects inside this listing can be associated with that instance. This enables objects to be easily deleted without having to create a new <a href="Client.html">Client</a> instance. </p> +<p> +If <tt>raw</tt> is set to true, you get ugly parser errors. +</p> <p><a class="source-toggle" href="#" - onclick="toggleCode('M000107-source');return false;">[Source]</a></p> - <div class="method-source-code" id="M000107-source"> + onclick="toggleCode('M000151-source');return false;">[Source]</a></p> + <div class="method-source-code" id="M000151-source"> <pre> - <span class="ruby-comment cmt"># File lib/s33r/bucket_listing.rb, line 27</span> -27: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">bucket_listing_xml</span>, <span class="ruby-identifier">named_bucket</span>=<span class="ruby-keyword kw">nil</span>) -28: <span class="ruby-ivar">@contents</span> = {} -29: <span class="ruby-ivar">@common_prefixes</span> = {} -30: <span class="ruby-comment cmt"># the NamedBucket instance associated with this listing (if any)</span> -31: <span class="ruby-ivar">@named_bucket</span> = <span class="ruby-identifier">named_bucket</span> -32: <span class="ruby-identifier">set_listing_xml</span>(<span class="ruby-identifier">bucket_listing_xml</span>) -33: <span class="ruby-keyword kw">end</span> + <span class="ruby-comment cmt"># File lib/s33r/bucket_listing.rb, line 32</span> +32: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">bucket_listing_xml</span>, <span class="ruby-identifier">named_bucket</span>=<span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">raw</span>=<span class="ruby-keyword kw">false</span>) +33: <span class="ruby-ivar">@contents</span> = {} +34: <span class="ruby-ivar">@common_prefixes</span> = {} +35: <span class="ruby-comment cmt"># the NamedBucket instance associated with this listing (if any)</span> +36: <span class="ruby-ivar">@named_bucket</span> = <span class="ruby-identifier">named_bucket</span> +37: <span class="ruby-ivar">@raw</span> = <span class="ruby-identifier">raw</span> +38: <span class="ruby-identifier">set_listing_xml</span>(<span class="ruby-identifier">bucket_listing_xml</span>) +39: <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <h3 class="section-bar">Public Instance methods</h3> - <div id="method-M000111" class="method-detail"> - <a name="M000111"></a> + <div id="method-M000155" class="method-detail"> + <a name="M000155"></a> <div class="method-heading"> - <a href="#M000111" class="method-signature"> + <a href="#M000155" class="method-signature"> <span class="method-name">[]</span><span class="method-args">(key)</span> </a> </div> <div class="method-description"> <p> Return an object in this bucket by key. </p> <p><a class="source-toggle" href="#" - onclick="toggleCode('M000111-source');return false;">[Source]</a></p> - <div class="method-source-code" id="M000111-source"> + onclick="toggleCode('M000155-source');return false;">[Source]</a></p> + <div class="method-source-code" id="M000155-source"> <pre> - <span class="ruby-comment cmt"># File lib/s33r/bucket_listing.rb, line 79</span> -79: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">[]</span>(<span class="ruby-identifier">key</span>) -80: <span class="ruby-ivar">@contents</span>[<span class="ruby-identifier">key</span>] -81: <span class="ruby-keyword kw">end</span> + <span class="ruby-comment cmt"># File lib/s33r/bucket_listing.rb, line 98</span> + 98: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">[]</span>(<span class="ruby-identifier">key</span>) + 99: <span class="ruby-ivar">@contents</span>[<span class="ruby-identifier">key</span>] +100: <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> - <div id="method-M000110" class="method-detail"> - <a name="M000110"></a> + <div id="method-M000154" class="method-detail"> + <a name="M000154"></a> <div class="method-heading"> - <a href="#M000110" class="method-signature"> + <a href="#M000154" class="method-signature"> <span class="method-name">last_key</span><span class="method-args">()</span> </a> </div> <div class="method-description"> <p> Get the last key in the contents hash. </p> <p><a class="source-toggle" href="#" - onclick="toggleCode('M000110-source');return false;">[Source]</a></p> - <div class="method-source-code" id="M000110-source"> + onclick="toggleCode('M000154-source');return false;">[Source]</a></p> + <div class="method-source-code" id="M000154-source"> <pre> - <span class="ruby-comment cmt"># File lib/s33r/bucket_listing.rb, line 74</span> -74: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">last_key</span> -75: <span class="ruby-ivar">@contents</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">last</span> -76: <span class="ruby-keyword kw">end</span> + <span class="ruby-comment cmt"># File lib/s33r/bucket_listing.rb, line 93</span> +93: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">last_key</span> +94: <span class="ruby-ivar">@contents</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">last</span> +95: <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> - <div id="method-M000109" class="method-detail"> - <a name="M000109"></a> + <div id="method-M000153" class="method-detail"> + <a name="M000153"></a> <div class="method-heading"> - <a href="#M000109" class="method-signature"> + <a href="#M000153" class="method-signature"> <span class="method-name">parse_listing</span><span class="method-args">(bucket_listing_xml)</span> </a> </div> <div class="method-description"> <p> Parse raw <a href="../XML.html">XML</a> ListBucketResponse from S3 into -object instances. +object instances. The S3Objects are skeletons, and are not automatically +populated from S3 (their @value attributes are nil). To load the data into +an object, grab it from the listing and call its load method to pull the +data down from S3. </p> <p><a class="source-toggle" href="#" - onclick="toggleCode('M000109-source');return false;">[Source]</a></p> - <div class="method-source-code" id="M000109-source"> + onclick="toggleCode('M000153-source');return false;">[Source]</a></p> + <div class="method-source-code" id="M000153-source"> <pre> - <span class="ruby-comment cmt"># File lib/s33r/bucket_listing.rb, line 49</span> -49: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">parse_listing</span>(<span class="ruby-identifier">bucket_listing_xml</span>) -50: <span class="ruby-identifier">doc</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">get_xml_doc</span>(<span class="ruby-identifier">bucket_listing_xml</span>) -51: -52: <span class="ruby-identifier">prop_setter</span> = <span class="ruby-identifier">lambda</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">prop</span>, <span class="ruby-identifier">path</span><span class="ruby-operator">|</span> -53: <span class="ruby-identifier">node</span> = <span class="ruby-identifier">doc</span>.<span class="ruby-identifier">find</span>(<span class="ruby-node">&quot;//ListBucketResult/#{path}&quot;</span>).<span class="ruby-identifier">to_a</span>.<span class="ruby-identifier">first</span> -54: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">send</span>(<span class="ruby-node">&quot;#{prop}=&quot;</span>, <span class="ruby-identifier">node</span>.<span class="ruby-identifier">content</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">node</span> -55: <span class="ruby-keyword kw">end</span> -56: -57: <span class="ruby-comment cmt"># metadata</span> -58: <span class="ruby-identifier">prop_setter</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">:name</span>, <span class="ruby-value str">'Name'</span>) -59: <span class="ruby-identifier">prop_setter</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">:delimiter</span>, <span class="ruby-value str">'Delimiter'</span>) -60: <span class="ruby-identifier">prop_setter</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">:prefix</span>, <span class="ruby-value str">'Prefix'</span>) -61: <span class="ruby-identifier">prop_setter</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">:marker</span>, <span class="ruby-value str">'Marker'</span>) -62: <span class="ruby-identifier">prop_setter</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">:max_keys</span>, <span class="ruby-value str">'MaxKeys'</span>) -63: <span class="ruby-identifier">prop_setter</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">:is_truncated</span>, <span class="ruby-value str">'IsTruncated'</span>) -64: -65: <span class="ruby-comment cmt"># contents</span> -66: <span class="ruby-identifier">doc</span>.<span class="ruby-identifier">find</span>(<span class="ruby-value str">'//Contents'</span>).<span class="ruby-identifier">to_a</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">node</span><span class="ruby-operator">|</span> -67: <span class="ruby-identifier">obj</span> = <span class="ruby-constant">S3Object</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">node</span>) -68: <span class="ruby-comment cmt"># Add to the content listing for the bucket</span> -69: <span class="ruby-ivar">@contents</span>[<span class="ruby-identifier">obj</span>.<span class="ruby-identifier">key</span>] = <span class="ruby-identifier">obj</span> -70: <span class="ruby-keyword kw">end</span> -71: <span class="ruby-keyword kw">end</span> + <span class="ruby-comment cmt"># File lib/s33r/bucket_listing.rb, line 68</span> +68: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">parse_listing</span>(<span class="ruby-identifier">bucket_listing_xml</span>) +69: <span class="ruby-identifier">doc</span> = <span class="ruby-constant">XML</span>.<span class="ruby-identifier">get_xml_doc</span>(<span class="ruby-identifier">bucket_listing_xml</span>) +70: +71: <span class="ruby-identifier">prop_setter</span> = <span class="ruby-identifier">lambda</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">prop</span>, <span class="ruby-identifier">path</span><span class="ruby-operator">|</span> +72: <span class="ruby-identifier">node</span> = <span class="ruby-identifier">doc</span>.<span class="ruby-identifier">find</span>(<span class="ruby-node">&quot;//ListBucketResult/#{path}&quot;</span>).<span class="ruby-identifier">to_a</span>.<span class="ruby-identifier">first</span> +73: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">send</span>(<span class="ruby-node">&quot;#{prop}=&quot;</span>, <span class="ruby-identifier">node</span>.<span class="ruby-identifier">content</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">node</span> +74: <span class="ruby-keyword kw">end</span> +75: +76: <span class="ruby-comment cmt"># metadata</span> +77: <span class="ruby-identifier">prop_setter</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">:name</span>, <span class="ruby-value str">'Name'</span>) +78: <span class="ruby-identifier">prop_setter</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">:delimiter</span>, <span class="ruby-value str">'Delimiter'</span>) +79: <span class="ruby-identifier">prop_setter</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">:prefix</span>, <span class="ruby-value str">'Prefix'</span>) +80: <span class="ruby-identifier">prop_setter</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">:marker</span>, <span class="ruby-value str">'Marker'</span>) +81: <span class="ruby-identifier">prop_setter</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">:max_keys</span>, <span class="ruby-value str">'MaxKeys'</span>) +82: <span class="ruby-identifier">prop_setter</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">:is_truncated</span>, <span class="ruby-value str">'IsTruncated'</span>) +83: +84: <span class="ruby-comment cmt"># contents</span> +85: <span class="ruby-identifier">doc</span>.<span class="ruby-identifier">find</span>(<span class="ruby-value str">'//Contents'</span>).<span class="ruby-identifier">to_a</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">node</span><span class="ruby-operator">|</span> +86: <span class="ruby-identifier">obj</span> = <span class="ruby-constant">S3Object</span>.<span class="ruby-identifier">from_xml_node</span>(<span class="ruby-identifier">node</span>) +87: <span class="ruby-comment cmt"># Add to the content listing for the bucket</span> +88: <span class="ruby-ivar">@contents</span>[<span class="ruby-identifier">obj</span>.<span class="ruby-identifier">key</span>] = <span class="ruby-identifier">obj</span> +89: <span class="ruby-keyword kw">end</span> +90: <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> - <div id="method-M000112" class="method-detail"> - <a name="M000112"></a> + <div id="method-M000156" class="method-detail"> + <a name="M000156"></a> <div class="method-heading"> - <a href="#M000112" class="method-signature"> + <a href="#M000156" class="method-signature"> <span class="method-name">pretty</span><span class="method-args">()</span> </a> </div> <div class="method-description"> <p> Pretty listing of keys in alphabetical order. </p> <p><a class="source-toggle" href="#" - onclick="toggleCode('M000112-source');return false;">[Source]</a></p> - <div class="method-source-code" id="M000112-source"> + onclick="toggleCode('M000156-source');return false;">[Source]</a></p> + <div class="method-source-code" id="M000156-source"> <pre> - <span class="ruby-comment cmt"># File lib/s33r/bucket_listing.rb, line 84</span> -84: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">pretty</span> -85: <span class="ruby-ivar">@contents</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">sort</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">k</span><span class="ruby-operator">|</span> <span class="ruby-identifier">puts</span> <span class="ruby-identifier">k</span> } -86: <span class="ruby-keyword kw">end</span> + <span class="ruby-comment cmt"># File lib/s33r/bucket_listing.rb, line 103</span> +103: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">pretty</span> +104: <span class="ruby-ivar">@contents</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">sort</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">k</span><span class="ruby-operator">|</span> <span class="ruby-identifier">puts</span> <span class="ruby-identifier">k</span> } +105: <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> - <div id="method-M000108" class="method-detail"> - <a name="M000108"></a> + <div id="method-M000152" class="method-detail"> + <a name="M000152"></a> <div class="method-heading"> - <a href="#M000108" class="method-signature"> + <a href="#M000152" class="method-signature"> <span class="method-name">set_listing_xml</span><span class="method-args">(bucket_listing_xml)</span> </a> </div> <div class="method-description"> <p> Convert a ListBucketResult <a href="../XML.html">XML</a> document into an object representation. </p> <p><a class="source-toggle" href="#" - onclick="toggleCode('M000108-source');return false;">[Source]</a></p> - <div class="method-source-code" id="M000108-source"> + onclick="toggleCode('M000152-source');return false;">[Source]</a></p> + <div class="method-source-code" id="M000152-source"> <pre> - <span class="ruby-comment cmt"># File lib/s33r/bucket_listing.rb, line 36</span> -36: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">set_listing_xml</span>(<span class="ruby-identifier">bucket_listing_xml</span>) -37: <span class="ruby-keyword kw">begin</span> -38: <span class="ruby-comment cmt"># remove the namespace declaration: libxml doesn't like it</span> -39: <span class="ruby-identifier">bucket_listing_xml</span> = <span class="ruby-constant">S33r</span>.<span class="ruby-identifier">remove_namespace</span>(<span class="ruby-identifier">bucket_listing_xml</span>) -40: <span class="ruby-identifier">parse_listing</span>(<span class="ruby-identifier">bucket_listing_xml</span>) -41: <span class="ruby-keyword kw">rescue</span> -42: <span class="ruby-identifier">message</span> = <span class="ruby-value str">&quot;Cannot create bucket listing from supplied XML&quot;</span> -43: <span class="ruby-identifier">message</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">&quot; (was nil)&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">bucket_listing_xml</span>.<span class="ruby-identifier">nil?</span> -44: <span class="ruby-identifier">raise</span> <span class="ruby-constant">S33rException</span><span class="ruby-operator">::</span><span class="ruby-constant">InvalidBucketListing</span>, <span class="ruby-identifier">message</span> -45: <span class="ruby-keyword kw">end</span> -46: <span class="ruby-keyword kw">end</span> + <span class="ruby-comment cmt"># File lib/s33r/bucket_listing.rb, line 42</span> +42: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">set_listing_xml</span>(<span class="ruby-identifier">bucket_listing_xml</span>) +43: <span class="ruby-comment cmt"># proc to remove the namespace and parse the listing</span> +44: <span class="ruby-identifier">work</span> = <span class="ruby-identifier">lambda</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">bucket_listing_xml</span><span class="ruby-operator">|</span> +45: <span class="ruby-comment cmt"># remove the namespace declaration: libxml doesn't like it</span> +46: <span class="ruby-identifier">bucket_listing_xml</span> = <span class="ruby-constant">S33r</span>.<span class="ruby-identifier">remove_namespace</span>(<span class="ruby-identifier">bucket_listing_xml</span>) +47: <span class="ruby-identifier">parse_listing</span>(<span class="ruby-identifier">bucket_listing_xml</span>) +48: <span class="ruby-keyword kw">end</span> +49: +50: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@raw</span> +51: <span class="ruby-identifier">work</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">bucket_listing_xml</span>) +52: <span class="ruby-keyword kw">else</span> +53: <span class="ruby-keyword kw">begin</span> +54: <span class="ruby-identifier">work</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">bucket_listing_xml</span>) +55: <span class="ruby-keyword kw">rescue</span> +56: <span class="ruby-identifier">message</span> = <span class="ruby-value str">&quot;Cannot create bucket listing from supplied XML&quot;</span> +57: <span class="ruby-identifier">message</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">&quot; (was nil)&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">bucket_listing_xml</span>.<span class="ruby-identifier">nil?</span> +58: <span class="ruby-identifier">raise</span> <span class="ruby-constant">S33rException</span><span class="ruby-operator">::</span><span class="ruby-constant">InvalidBucketListing</span>, <span class="ruby-identifier">message</span> +59: <span class="ruby-keyword kw">end</span> +60: <span class="ruby-keyword kw">end</span> +61: <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> \ No newline at end of file