flickr.rb 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,807 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Class: Flickr</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Class</strong></td>
53
+ <td class="class-name-in-header">Flickr</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../files/lib/flickr_rb.html">
59
+ lib/flickr.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ <tr class="top-aligned-row">
66
+ <td><strong>Parent:</strong></td>
67
+ <td>
68
+ Object
69
+ </td>
70
+ </tr>
71
+ </table>
72
+ </div>
73
+ <!-- banner header -->
74
+
75
+ <div id="bodyContent">
76
+
77
+
78
+
79
+ <div id="contextContent">
80
+
81
+ <div id="description">
82
+ <p>
83
+ <a href="Flickr.html">Flickr</a> client class. Requires an API key
84
+ </p>
85
+
86
+ </div>
87
+
88
+
89
+ </div>
90
+
91
+ <div id="method-list">
92
+ <h3 class="section-bar">Methods</h3>
93
+
94
+ <div class="name-list">
95
+ <a href="#M000004">find_by_url</a>&nbsp;&nbsp;
96
+ <a href="#M000003">get_token_from</a>&nbsp;&nbsp;
97
+ <a href="#M000011">groups</a>&nbsp;&nbsp;
98
+ <a href="#M000017">http_get</a>&nbsp;&nbsp;
99
+ <a href="#M000014">licenses</a>&nbsp;&nbsp;
100
+ <a href="#M000015">login_url</a>&nbsp;&nbsp;
101
+ <a href="#M000016">method_missing</a>&nbsp;&nbsp;
102
+ <a href="#M000001">new</a>&nbsp;&nbsp;
103
+ <a href="#M000005">photos</a>&nbsp;&nbsp;
104
+ <a href="#M000019">photos_request</a>&nbsp;&nbsp;
105
+ <a href="#M000007">photos_search</a>&nbsp;&nbsp;
106
+ <a href="#M000012">photoset</a>&nbsp;&nbsp;
107
+ <a href="#M000006">recent</a>&nbsp;&nbsp;
108
+ <a href="#M000013">related_tags</a>&nbsp;&nbsp;
109
+ <a href="#M000018">request</a>&nbsp;&nbsp;
110
+ <a href="#M000020">request_url</a>&nbsp;&nbsp;
111
+ <a href="#M000008">search</a>&nbsp;&nbsp;
112
+ <a href="#M000002">set_up_configuration</a>&nbsp;&nbsp;
113
+ <a href="#M000021">signature_from</a>&nbsp;&nbsp;
114
+ <a href="#M000009">tag</a>&nbsp;&nbsp;
115
+ <a href="#M000010">users</a>&nbsp;&nbsp;
116
+ </div>
117
+ </div>
118
+
119
+ </div>
120
+
121
+
122
+ <!-- if includes -->
123
+
124
+ <div id="section">
125
+
126
+ <div id="class-list">
127
+ <h3 class="section-bar">Classes and Modules</h3>
128
+
129
+ Class <a href="Flickr/Config.html" class="link">Flickr::Config</a><br />
130
+ Class <a href="Flickr/Group.html" class="link">Flickr::Group</a><br />
131
+ Class <a href="Flickr/Photo.html" class="link">Flickr::Photo</a><br />
132
+ Class <a href="Flickr/PhotoCollection.html" class="link">Flickr::PhotoCollection</a><br />
133
+ Class <a href="Flickr/Photoset.html" class="link">Flickr::Photoset</a><br />
134
+ Class <a href="Flickr/User.html" class="link">Flickr::User</a><br />
135
+
136
+ </div>
137
+
138
+ <div id="constants-list">
139
+ <h3 class="section-bar">Constants</h3>
140
+
141
+ <div class="name-list">
142
+ <table summary="Constants">
143
+ <tr class="top-aligned-row context-row">
144
+ <td class="context-item-name">HOST_URL</td>
145
+ <td>=</td>
146
+ <td class="context-item-value">'http://api.flickr.com'</td>
147
+ </tr>
148
+ <tr class="top-aligned-row context-row">
149
+ <td class="context-item-name">API_PATH</td>
150
+ <td>=</td>
151
+ <td class="context-item-value">'/services/rest'</td>
152
+ </tr>
153
+ <tr class="top-aligned-row context-row">
154
+ <td class="context-item-name">VALID_SIZES</td>
155
+ <td>=</td>
156
+ <td class="context-item-value">{ &quot;Square&quot; =&gt; [&quot;s&quot;, &quot;sq&quot;], &quot;Thumbnail&quot; =&gt; [&quot;t&quot;, &quot;t&quot;], &quot;Small&quot; =&gt; [&quot;m&quot;, &quot;s&quot;], &quot;Medium&quot; =&gt; [nil, &quot;m&quot;], &quot;Large&quot; =&gt; [&quot;b&quot;, &quot;l&quot;]</td>
157
+ <td width="3em">&nbsp;</td>
158
+ <td class="context-item-desc">
159
+ <a href="Flickr.html">Flickr</a>, annoyingly, uses a number of
160
+ representations to specify the size of a photo, depending on the context.
161
+ It gives a label such a &quot;Small&quot; or &quot;Medium&quot; to a size
162
+ of photo, when returning all possible sizes. However, when generating the
163
+ uri for the page that features that size of photo, or the source url for
164
+ the image itself it uses a single letter. Bizarrely, these letters are
165
+ different depending on whether you want the <a
166
+ href="Flickr.html">Flickr</a> page for the photo or the source uri &#8212;
167
+ e.g. a &quot;Small&quot; photo (240 pixels on its longest side) may be
168
+ viewed at &quot;<a
169
+ href="http://www.flickr.com/photos/sco/2397458775/sizes/s">www.flickr.com/photos/sco/2397458775/sizes/s</a>/&quot;
170
+ but its source is at &quot;<img
171
+ src="http://farm4.static.flickr.com/3118/2397458775_2ec2ddc324_m.jpg"
172
+ />&quot;. The VALID_SIZES hash associates the correct letter with a label
173
+
174
+ </td>
175
+ </tr>
176
+ </table>
177
+ </div>
178
+ </div>
179
+
180
+
181
+
182
+ <div id="attribute-list">
183
+ <h3 class="section-bar">Attributes</h3>
184
+
185
+ <div class="name-list">
186
+ <table>
187
+ <tr class="top-aligned-row context-row">
188
+ <td class="context-item-name">api_key</td>
189
+ <td class="context-item-value">&nbsp;[R]&nbsp;</td>
190
+ <td class="context-item-desc"></td>
191
+ </tr>
192
+ <tr class="top-aligned-row context-row">
193
+ <td class="context-item-name">auth_token</td>
194
+ <td class="context-item-value">&nbsp;[R]&nbsp;</td>
195
+ <td class="context-item-desc"></td>
196
+ </tr>
197
+ <tr class="top-aligned-row context-row">
198
+ <td class="context-item-name">user</td>
199
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
200
+ <td class="context-item-desc"></td>
201
+ </tr>
202
+ </table>
203
+ </div>
204
+ </div>
205
+
206
+
207
+
208
+ <!-- if method_list -->
209
+ <div id="methods">
210
+ <h3 class="section-bar">Public Class methods</h3>
211
+
212
+ <div id="method-M000001" class="method-detail">
213
+ <a name="M000001"></a>
214
+
215
+ <div class="method-heading">
216
+ <a href="#M000001" class="method-signature">
217
+ <span class="method-name">new</span><span class="method-args">(api_key_or_params={})</span>
218
+ </a>
219
+ </div>
220
+
221
+ <div class="method-description">
222
+ <p>
223
+ To use the <a href="Flickr.html">Flickr</a> API you need an api key (see <a
224
+ href="http://www.flickr.com/services/api/misc.api_keys.html">www.flickr.com/services/api/misc.api_keys.html</a>),
225
+ and the flickr client object shuld be initialized with this. You&#8216;ll
226
+ also need a shared secret code if you want to use authentication (e.g. to
227
+ get a user&#8216;s private <a href="Flickr.html#M000005">photos</a>) There
228
+ are two ways to initialize the <a href="Flickr.html">Flickr</a> client. The
229
+ preferred way is with a hash of params, e.g. &#8216;api_key&#8217; =&gt;
230
+ &#8216;your_api_key&#8217;, &#8216;shared_secret&#8217; =&gt;
231
+ &#8216;shared_secret_code&#8217;. Other way is to use in Rails an config
232
+ file RAILS_ROOT/config/flickr.api.yml and there use params as key/values
233
+ even specified for every environment.
234
+ </p>
235
+ <p><a class="source-toggle" href="#"
236
+ onclick="toggleCode('M000001-source');return false;">[Source]</a></p>
237
+ <div class="method-source-code" id="M000001-source">
238
+ <pre>
239
+ <span class="ruby-comment cmt"># File lib/flickr.rb, line 78</span>
240
+ 78: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">api_key_or_params</span>={})
241
+ 79: <span class="ruby-ivar">@host</span> = <span class="ruby-constant">HOST_URL</span>
242
+ 80: <span class="ruby-ivar">@api</span> = <span class="ruby-constant">API_PATH</span>
243
+ 81: <span class="ruby-identifier">api_key_or_params</span>={} <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">api_key_or_params</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-comment cmt"># fix for nil value as argument</span>
244
+ 82: <span class="ruby-identifier">api_key_or_params</span> = {<span class="ruby-identifier">:api_key</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">api_key_or_params</span>} <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">api_key_or_params</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">String</span>)
245
+ 83: <span class="ruby-identifier">api_key_or_params</span> = <span class="ruby-constant">Config</span>.<span class="ruby-identifier">get</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Config</span>.<span class="ruby-identifier">parsed?</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">api_key_or_params</span>.<span class="ruby-identifier">empty?</span>
246
+ 84: <span class="ruby-identifier">set_up_configuration</span> <span class="ruby-identifier">api_key_or_params</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">api_key_or_params</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">Hash</span>
247
+ 85: <span class="ruby-keyword kw">end</span>
248
+ </pre>
249
+ </div>
250
+ </div>
251
+ </div>
252
+
253
+ <h3 class="section-bar">Public Instance methods</h3>
254
+
255
+ <div id="method-M000004" class="method-detail">
256
+ <a name="M000004"></a>
257
+
258
+ <div class="method-heading">
259
+ <a href="#M000004" class="method-signature">
260
+ <span class="method-name">find_by_url</span><span class="method-args">(url)</span>
261
+ </a>
262
+ </div>
263
+
264
+ <div class="method-description">
265
+ <p>
266
+ Implements flickr.urls.lookupGroup and flickr.urls.lookupUser
267
+ </p>
268
+ <p><a class="source-toggle" href="#"
269
+ onclick="toggleCode('M000004-source');return false;">[Source]</a></p>
270
+ <div class="method-source-code" id="M000004-source">
271
+ <pre>
272
+ <span class="ruby-comment cmt"># File lib/flickr.rb, line 107</span>
273
+ 107: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">find_by_url</span>(<span class="ruby-identifier">url</span>)
274
+ 108: <span class="ruby-identifier">response</span> = <span class="ruby-identifier">urls_lookupUser</span>(<span class="ruby-value str">'url'</span>=<span class="ruby-operator">&gt;</span><span class="ruby-identifier">url</span>) <span class="ruby-keyword kw">rescue</span> <span class="ruby-identifier">urls_lookupGroup</span>(<span class="ruby-value str">'url'</span>=<span class="ruby-operator">&gt;</span><span class="ruby-identifier">url</span>) <span class="ruby-keyword kw">rescue</span> <span class="ruby-keyword kw">nil</span>
275
+ 109: (<span class="ruby-identifier">response</span>[<span class="ruby-value str">'user'</span>]) <span class="ruby-operator">?</span> <span class="ruby-constant">User</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">response</span>[<span class="ruby-value str">'user'</span>][<span class="ruby-value str">'id'</span>], <span class="ruby-keyword kw">nil</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-ivar">@api_key</span>) <span class="ruby-operator">:</span> <span class="ruby-constant">Group</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">response</span>[<span class="ruby-value str">'group'</span>][<span class="ruby-value str">'id'</span>], <span class="ruby-ivar">@api_key</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">response</span>.<span class="ruby-identifier">nil?</span>
276
+ 110: <span class="ruby-keyword kw">end</span>
277
+ </pre>
278
+ </div>
279
+ </div>
280
+ </div>
281
+
282
+ <div id="method-M000003" class="method-detail">
283
+ <a name="M000003"></a>
284
+
285
+ <div class="method-heading">
286
+ <a href="#M000003" class="method-signature">
287
+ <span class="method-name">get_token_from</span><span class="method-args">(frob)</span>
288
+ </a>
289
+ </div>
290
+
291
+ <div class="method-description">
292
+ <p>
293
+ Gets authentication token given a <a href="Flickr.html">Flickr</a> frob,
294
+ which is returned when user allows access to their account for the
295
+ application with the api_key which made the <a
296
+ href="Flickr.html#M000018">request</a>
297
+ </p>
298
+ <p><a class="source-toggle" href="#"
299
+ onclick="toggleCode('M000003-source');return false;">[Source]</a></p>
300
+ <div class="method-source-code" id="M000003-source">
301
+ <pre>
302
+ <span class="ruby-comment cmt"># File lib/flickr.rb, line 96</span>
303
+ 96: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get_token_from</span>(<span class="ruby-identifier">frob</span>)
304
+ 97: <span class="ruby-identifier">auth_response</span> = <span class="ruby-identifier">request</span>(<span class="ruby-value str">&quot;auth.getToken&quot;</span>, <span class="ruby-identifier">:frob</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">frob</span>)[<span class="ruby-value str">'auth'</span>]
305
+ 98: <span class="ruby-ivar">@auth_token</span> = <span class="ruby-identifier">auth_response</span>[<span class="ruby-value str">'token'</span>]
306
+ 99: <span class="ruby-ivar">@user</span> = <span class="ruby-constant">User</span>.<span class="ruby-identifier">new</span>( <span class="ruby-value str">'id'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">auth_response</span>[<span class="ruby-value str">'user'</span>][<span class="ruby-value str">'nsid'</span>],
307
+ 100: <span class="ruby-value str">'username'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">auth_response</span>[<span class="ruby-value str">'user'</span>][<span class="ruby-value str">'username'</span>],
308
+ 101: <span class="ruby-value str">'name'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">auth_response</span>[<span class="ruby-value str">'user'</span>][<span class="ruby-value str">'fullname'</span>],
309
+ 102: <span class="ruby-value str">'client'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">self</span>)
310
+ 103: <span class="ruby-ivar">@auth_token</span>
311
+ 104: <span class="ruby-keyword kw">end</span>
312
+ </pre>
313
+ </div>
314
+ </div>
315
+ </div>
316
+
317
+ <div id="method-M000011" class="method-detail">
318
+ <a name="M000011"></a>
319
+
320
+ <div class="method-heading">
321
+ <a href="#M000011" class="method-signature">
322
+ <span class="method-name">groups</span><span class="method-args">(group_name, options={})</span>
323
+ </a>
324
+ </div>
325
+
326
+ <div class="method-description">
327
+ <p>
328
+ Implements flickr.groups.<a href="Flickr.html#M000008">search</a>
329
+ </p>
330
+ <p><a class="source-toggle" href="#"
331
+ onclick="toggleCode('M000011-source');return false;">[Source]</a></p>
332
+ <div class="method-source-code" id="M000011-source">
333
+ <pre>
334
+ <span class="ruby-comment cmt"># File lib/flickr.rb, line 140</span>
335
+ 140: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">groups</span>(<span class="ruby-identifier">group_name</span>, <span class="ruby-identifier">options</span>={})
336
+ 141: <span class="ruby-identifier">collection</span> = <span class="ruby-identifier">groups_search</span>({<span class="ruby-value str">&quot;text&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">group_name</span>}.<span class="ruby-identifier">merge</span>(<span class="ruby-identifier">options</span>))[<span class="ruby-value str">'groups'</span>][<span class="ruby-value str">'group'</span>]
337
+ 142: <span class="ruby-identifier">collection</span> = [<span class="ruby-identifier">collection</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">collection</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">Hash</span>
338
+ 143:
339
+ 144: <span class="ruby-identifier">collection</span>.<span class="ruby-identifier">collect</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">group</span><span class="ruby-operator">|</span> <span class="ruby-constant">Group</span>.<span class="ruby-identifier">new</span>( <span class="ruby-value str">&quot;id&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">group</span>[<span class="ruby-value str">'nsid'</span>],
340
+ 145: <span class="ruby-value str">&quot;name&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">group</span>[<span class="ruby-value str">'name'</span>],
341
+ 146: <span class="ruby-value str">&quot;eighteenplus&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">group</span>[<span class="ruby-value str">'eighteenplus'</span>],
342
+ 147: <span class="ruby-value str">&quot;client&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">self</span>) }
343
+ 148: <span class="ruby-keyword kw">end</span>
344
+ </pre>
345
+ </div>
346
+ </div>
347
+ </div>
348
+
349
+ <div id="method-M000017" class="method-detail">
350
+ <a name="M000017"></a>
351
+
352
+ <div class="method-heading">
353
+ <a href="#M000017" class="method-signature">
354
+ <span class="method-name">http_get</span><span class="method-args">(url)</span>
355
+ </a>
356
+ </div>
357
+
358
+ <div class="method-description">
359
+ <p>
360
+ Does an HTTP GET on a given URL and returns the response body
361
+ </p>
362
+ <p><a class="source-toggle" href="#"
363
+ onclick="toggleCode('M000017-source');return false;">[Source]</a></p>
364
+ <div class="method-source-code" id="M000017-source">
365
+ <pre>
366
+ <span class="ruby-comment cmt"># File lib/flickr.rb, line 178</span>
367
+ 178: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">http_get</span>(<span class="ruby-identifier">url</span>)
368
+ 179: <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span>.<span class="ruby-identifier">get_response</span>(<span class="ruby-constant">URI</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">url</span>)).<span class="ruby-identifier">body</span>.<span class="ruby-identifier">to_s</span>
369
+ 180: <span class="ruby-keyword kw">end</span>
370
+ </pre>
371
+ </div>
372
+ </div>
373
+ </div>
374
+
375
+ <div id="method-M000014" class="method-detail">
376
+ <a name="M000014"></a>
377
+
378
+ <div class="method-heading">
379
+ <a href="#M000014" class="method-signature">
380
+ <span class="method-name">licenses</span><span class="method-args">()</span>
381
+ </a>
382
+ </div>
383
+
384
+ <div class="method-description">
385
+ <p>
386
+ Implements flickr.photos.licenses.getInfo
387
+ </p>
388
+ <p><a class="source-toggle" href="#"
389
+ onclick="toggleCode('M000014-source');return false;">[Source]</a></p>
390
+ <div class="method-source-code" id="M000014-source">
391
+ <pre>
392
+ <span class="ruby-comment cmt"># File lib/flickr.rb, line 160</span>
393
+ 160: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">licenses</span>
394
+ 161: <span class="ruby-identifier">photos_licenses_getInfo</span>[<span class="ruby-value str">'licenses'</span>][<span class="ruby-value str">'license'</span>]
395
+ 162: <span class="ruby-keyword kw">end</span>
396
+ </pre>
397
+ </div>
398
+ </div>
399
+ </div>
400
+
401
+ <div id="method-M000015" class="method-detail">
402
+ <a name="M000015"></a>
403
+
404
+ <div class="method-heading">
405
+ <a href="#M000015" class="method-signature">
406
+ <span class="method-name">login_url</span><span class="method-args">(perms)</span>
407
+ </a>
408
+ </div>
409
+
410
+ <div class="method-description">
411
+ <p>
412
+ Returns url for user to login in to <a href="Flickr.html">Flickr</a> to
413
+ authenticate app for a user
414
+ </p>
415
+ <p><a class="source-toggle" href="#"
416
+ onclick="toggleCode('M000015-source');return false;">[Source]</a></p>
417
+ <div class="method-source-code" id="M000015-source">
418
+ <pre>
419
+ <span class="ruby-comment cmt"># File lib/flickr.rb, line 165</span>
420
+ 165: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">login_url</span>(<span class="ruby-identifier">perms</span>)
421
+ 166: <span class="ruby-node">&quot;http://flickr.com/services/auth/?api_key=#{@api_key}&amp;perms=#{perms}&amp;api_sig=#{signature_from('api_key'=&gt;@api_key, 'perms' =&gt; perms)}&quot;</span>
422
+ 167: <span class="ruby-keyword kw">end</span>
423
+ </pre>
424
+ </div>
425
+ </div>
426
+ </div>
427
+
428
+ <div id="method-M000016" class="method-detail">
429
+ <a name="M000016"></a>
430
+
431
+ <div class="method-heading">
432
+ <a href="#M000016" class="method-signature">
433
+ <span class="method-name">method_missing</span><span class="method-args">(method_id, params={})</span>
434
+ </a>
435
+ </div>
436
+
437
+ <div class="method-description">
438
+ <p>
439
+ Implements everything else. Any method not defined explicitly will be
440
+ passed on to the <a href="Flickr.html">Flickr</a> API, and return an
441
+ XmlSimple document. For example, Flickr#test_echo is not defined, so it
442
+ will pass the call to the flickr.test.echo method.
443
+ </p>
444
+ <p><a class="source-toggle" href="#"
445
+ onclick="toggleCode('M000016-source');return false;">[Source]</a></p>
446
+ <div class="method-source-code" id="M000016-source">
447
+ <pre>
448
+ <span class="ruby-comment cmt"># File lib/flickr.rb, line 173</span>
449
+ 173: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">method_missing</span>(<span class="ruby-identifier">method_id</span>, <span class="ruby-identifier">params</span>={})
450
+ 174: <span class="ruby-identifier">request</span>(<span class="ruby-identifier">method_id</span>.<span class="ruby-identifier">id2name</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/_/</span>, <span class="ruby-value str">'.'</span>), <span class="ruby-identifier">params</span>)
451
+ 175: <span class="ruby-keyword kw">end</span>
452
+ </pre>
453
+ </div>
454
+ </div>
455
+ </div>
456
+
457
+ <div id="method-M000005" class="method-detail">
458
+ <a name="M000005"></a>
459
+
460
+ <div class="method-heading">
461
+ <a href="#M000005" class="method-signature">
462
+ <span class="method-name">photos</span><span class="method-args">(*criteria)</span>
463
+ </a>
464
+ </div>
465
+
466
+ <div class="method-description">
467
+ <p>
468
+ Implements flickr.photos.getRecent and flickr.photos.<a
469
+ href="Flickr.html#M000008">search</a>
470
+ </p>
471
+ <p><a class="source-toggle" href="#"
472
+ onclick="toggleCode('M000005-source');return false;">[Source]</a></p>
473
+ <div class="method-source-code" id="M000005-source">
474
+ <pre>
475
+ <span class="ruby-comment cmt"># File lib/flickr.rb, line 113</span>
476
+ 113: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">photos</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">criteria</span>)
477
+ 114: <span class="ruby-keyword kw">not</span> <span class="ruby-identifier">criteria</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">photos_search</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">criteria</span>) <span class="ruby-keyword kw">or</span> <span class="ruby-identifier">recent</span>
478
+ 115: <span class="ruby-keyword kw">end</span>
479
+ </pre>
480
+ </div>
481
+ </div>
482
+ </div>
483
+
484
+ <div id="method-M000019" class="method-detail">
485
+ <a name="M000019"></a>
486
+
487
+ <div class="method-heading">
488
+ <a href="#M000019" class="method-signature">
489
+ <span class="method-name">photos_request</span><span class="method-args">(method, params={})</span>
490
+ </a>
491
+ </div>
492
+
493
+ <div class="method-description">
494
+ <p>
495
+ acts like <a href="Flickr.html#M000018">request</a> but returns a <a
496
+ href="Flickr/PhotoCollection.html">PhotoCollection</a> (a list of <a
497
+ href="Flickr/Photo.html">Photo</a> objects)
498
+ </p>
499
+ <p><a class="source-toggle" href="#"
500
+ onclick="toggleCode('M000019-source');return false;">[Source]</a></p>
501
+ <div class="method-source-code" id="M000019-source">
502
+ <pre>
503
+ <span class="ruby-comment cmt"># File lib/flickr.rb, line 191</span>
504
+ 191: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">photos_request</span>(<span class="ruby-identifier">method</span>, <span class="ruby-identifier">params</span>={})
505
+ 192: <span class="ruby-identifier">photos</span> = <span class="ruby-identifier">request</span>(<span class="ruby-identifier">method</span>, <span class="ruby-identifier">params</span>)
506
+ 193: <span class="ruby-constant">PhotoCollection</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">photos</span>, <span class="ruby-ivar">@api_key</span>)
507
+ 194: <span class="ruby-keyword kw">end</span>
508
+ </pre>
509
+ </div>
510
+ </div>
511
+ </div>
512
+
513
+ <div id="method-M000007" class="method-detail">
514
+ <a name="M000007"></a>
515
+
516
+ <div class="method-heading">
517
+ <a href="#M000007" class="method-signature">
518
+ <span class="method-name">photos_search</span><span class="method-args">(params={})</span>
519
+ </a>
520
+ </div>
521
+
522
+ <div class="method-description">
523
+ <p><a class="source-toggle" href="#"
524
+ onclick="toggleCode('M000007-source');return false;">[Source]</a></p>
525
+ <div class="method-source-code" id="M000007-source">
526
+ <pre>
527
+ <span class="ruby-comment cmt"># File lib/flickr.rb, line 123</span>
528
+ 123: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">photos_search</span>(<span class="ruby-identifier">params</span>={})
529
+ 124: <span class="ruby-identifier">photos_request</span>(<span class="ruby-value str">'photos.search'</span>, <span class="ruby-identifier">params</span>)
530
+ 125: <span class="ruby-keyword kw">end</span>
531
+ </pre>
532
+ </div>
533
+ </div>
534
+ </div>
535
+
536
+ <div id="method-M000012" class="method-detail">
537
+ <a name="M000012"></a>
538
+
539
+ <div class="method-heading">
540
+ <a href="#M000012" class="method-signature">
541
+ <span class="method-name">photoset</span><span class="method-args">(photoset_id)</span>
542
+ </a>
543
+ </div>
544
+
545
+ <div class="method-description">
546
+ <p><a class="source-toggle" href="#"
547
+ onclick="toggleCode('M000012-source');return false;">[Source]</a></p>
548
+ <div class="method-source-code" id="M000012-source">
549
+ <pre>
550
+ <span class="ruby-comment cmt"># File lib/flickr.rb, line 150</span>
551
+ 150: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">photoset</span>(<span class="ruby-identifier">photoset_id</span>)
552
+ 151: <span class="ruby-constant">Photoset</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">photoset_id</span>, <span class="ruby-ivar">@api_key</span>)
553
+ 152: <span class="ruby-keyword kw">end</span>
554
+ </pre>
555
+ </div>
556
+ </div>
557
+ </div>
558
+
559
+ <div id="method-M000006" class="method-detail">
560
+ <a name="M000006"></a>
561
+
562
+ <div class="method-heading">
563
+ <a href="#M000006" class="method-signature">
564
+ <span class="method-name">recent</span><span class="method-args">()</span>
565
+ </a>
566
+ </div>
567
+
568
+ <div class="method-description">
569
+ <p>
570
+ flickr.photos.getRecent 100 newest <a href="Flickr.html#M000005">photos</a>
571
+ from everyone
572
+ </p>
573
+ <p><a class="source-toggle" href="#"
574
+ onclick="toggleCode('M000006-source');return false;">[Source]</a></p>
575
+ <div class="method-source-code" id="M000006-source">
576
+ <pre>
577
+ <span class="ruby-comment cmt"># File lib/flickr.rb, line 119</span>
578
+ 119: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">recent</span>
579
+ 120: <span class="ruby-identifier">photos_request</span>(<span class="ruby-value str">'photos.getRecent'</span>)
580
+ 121: <span class="ruby-keyword kw">end</span>
581
+ </pre>
582
+ </div>
583
+ </div>
584
+ </div>
585
+
586
+ <div id="method-M000013" class="method-detail">
587
+ <a name="M000013"></a>
588
+
589
+ <div class="method-heading">
590
+ <a href="#M000013" class="method-signature">
591
+ <span class="method-name">related_tags</span><span class="method-args">(tag)</span>
592
+ </a>
593
+ </div>
594
+
595
+ <div class="method-description">
596
+ <p>
597
+ Implements flickr.tags.getRelated
598
+ </p>
599
+ <p><a class="source-toggle" href="#"
600
+ onclick="toggleCode('M000013-source');return false;">[Source]</a></p>
601
+ <div class="method-source-code" id="M000013-source">
602
+ <pre>
603
+ <span class="ruby-comment cmt"># File lib/flickr.rb, line 155</span>
604
+ 155: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">related_tags</span>(<span class="ruby-identifier">tag</span>)
605
+ 156: <span class="ruby-identifier">tags_getRelated</span>(<span class="ruby-value str">'tag'</span>=<span class="ruby-operator">&gt;</span><span class="ruby-identifier">tag</span>)[<span class="ruby-value str">'tags'</span>][<span class="ruby-value str">'tag'</span>]
606
+ 157: <span class="ruby-keyword kw">end</span>
607
+ </pre>
608
+ </div>
609
+ </div>
610
+ </div>
611
+
612
+ <div id="method-M000018" class="method-detail">
613
+ <a name="M000018"></a>
614
+
615
+ <div class="method-heading">
616
+ <a href="#M000018" class="method-signature">
617
+ <span class="method-name">request</span><span class="method-args">(method, params={})</span>
618
+ </a>
619
+ </div>
620
+
621
+ <div class="method-description">
622
+ <p>
623
+ Takes a <a href="Flickr.html">Flickr</a> API method name and set of
624
+ parameters; returns an XmlSimple object with the response
625
+ </p>
626
+ <p><a class="source-toggle" href="#"
627
+ onclick="toggleCode('M000018-source');return false;">[Source]</a></p>
628
+ <div class="method-source-code" id="M000018-source">
629
+ <pre>
630
+ <span class="ruby-comment cmt"># File lib/flickr.rb, line 183</span>
631
+ 183: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">request</span>(<span class="ruby-identifier">method</span>, <span class="ruby-identifier">params</span>={})
632
+ 184: <span class="ruby-identifier">url</span> = <span class="ruby-identifier">request_url</span>(<span class="ruby-identifier">method</span>, <span class="ruby-identifier">params</span>)
633
+ 185: <span class="ruby-identifier">response</span> = <span class="ruby-constant">XmlSimple</span>.<span class="ruby-identifier">xml_in</span>(<span class="ruby-identifier">http_get</span>(<span class="ruby-identifier">url</span>), { <span class="ruby-value str">'ForceArray'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">false</span> })
634
+ 186: <span class="ruby-identifier">raise</span> <span class="ruby-identifier">response</span>[<span class="ruby-value str">'err'</span>][<span class="ruby-value str">'msg'</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">response</span>[<span class="ruby-value str">'stat'</span>] <span class="ruby-operator">!=</span> <span class="ruby-value str">'ok'</span>
635
+ 187: <span class="ruby-identifier">response</span>
636
+ 188: <span class="ruby-keyword kw">end</span>
637
+ </pre>
638
+ </div>
639
+ </div>
640
+ </div>
641
+
642
+ <div id="method-M000020" class="method-detail">
643
+ <a name="M000020"></a>
644
+
645
+ <div class="method-heading">
646
+ <a href="#M000020" class="method-signature">
647
+ <span class="method-name">request_url</span><span class="method-args">(method, params={})</span>
648
+ </a>
649
+ </div>
650
+
651
+ <div class="method-description">
652
+ <p>
653
+ Builds url for <a href="Flickr.html">Flickr</a> API REST <a
654
+ href="Flickr.html#M000018">request</a> from given the flickr method name
655
+ (exclusing the &#8216;flickr.&#8217; that begins each method call) and
656
+ params (where applicable) which should be supplied as a Hash (e.g
657
+ &#8216;user_id&#8217; =&gt; &quot;foo123&quot;)
658
+ </p>
659
+ <p><a class="source-toggle" href="#"
660
+ onclick="toggleCode('M000020-source');return false;">[Source]</a></p>
661
+ <div class="method-source-code" id="M000020-source">
662
+ <pre>
663
+ <span class="ruby-comment cmt"># File lib/flickr.rb, line 199</span>
664
+ 199: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">request_url</span>(<span class="ruby-identifier">method</span>, <span class="ruby-identifier">params</span>={})
665
+ 200: <span class="ruby-identifier">method</span> = <span class="ruby-value str">'flickr.'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">method</span>
666
+ 201: <span class="ruby-identifier">url</span> = <span class="ruby-node">&quot;#{@host}#{@api}/?api_key=#{@api_key}&amp;method=#{method}&quot;</span>
667
+ 202: <span class="ruby-identifier">params</span>.<span class="ruby-identifier">merge!</span>(<span class="ruby-value str">'api_key'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@api_key</span>, <span class="ruby-value str">'method'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">method</span>, <span class="ruby-value str">'auth_token'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@auth_token</span>)
668
+ 203: <span class="ruby-identifier">signature</span> = <span class="ruby-identifier">signature_from</span>(<span class="ruby-identifier">params</span>)
669
+ 204:
670
+ 205: <span class="ruby-identifier">url</span> = <span class="ruby-node">&quot;#{@host}#{@api}/?&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">params</span>.<span class="ruby-identifier">merge</span>(<span class="ruby-value str">'api_sig'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">signature</span>).<span class="ruby-identifier">collect</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span> <span class="ruby-node">&quot;#{k}=&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-constant">CGI</span><span class="ruby-operator">::</span><span class="ruby-identifier">escape</span>(<span class="ruby-identifier">v</span>.<span class="ruby-identifier">to_s</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">v</span>.<span class="ruby-identifier">nil?</span> }.<span class="ruby-identifier">compact</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">&quot;&amp;&quot;</span>)
671
+ 206: <span class="ruby-keyword kw">end</span>
672
+ </pre>
673
+ </div>
674
+ </div>
675
+ </div>
676
+
677
+ <div id="method-M000008" class="method-detail">
678
+ <a name="M000008"></a>
679
+
680
+ <div class="method-heading">
681
+ <span class="method-name">search</span><span class="method-args">(params={})</span>
682
+ </div>
683
+
684
+ <div class="method-description">
685
+ <p>
686
+ Alias for <a href="Flickr.html#M000007">photos_search</a>
687
+ </p>
688
+ </div>
689
+ </div>
690
+
691
+ <div id="method-M000002" class="method-detail">
692
+ <a name="M000002"></a>
693
+
694
+ <div class="method-heading">
695
+ <a href="#M000002" class="method-signature">
696
+ <span class="method-name">set_up_configuration</span><span class="method-args">(api_key_or_params = {})</span>
697
+ </a>
698
+ </div>
699
+
700
+ <div class="method-description">
701
+ <p><a class="source-toggle" href="#"
702
+ onclick="toggleCode('M000002-source');return false;">[Source]</a></p>
703
+ <div class="method-source-code" id="M000002-source">
704
+ <pre>
705
+ <span class="ruby-comment cmt"># File lib/flickr.rb, line 87</span>
706
+ 87: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">set_up_configuration</span> <span class="ruby-identifier">api_key_or_params</span> = {}
707
+ 88: <span class="ruby-ivar">@api_key</span> = <span class="ruby-identifier">api_key_or_params</span>[<span class="ruby-identifier">:api_key</span>]
708
+ 89: <span class="ruby-ivar">@shared_secret</span> = <span class="ruby-identifier">api_key_or_params</span>[<span class="ruby-identifier">:shared_secret</span>]
709
+ 90: <span class="ruby-ivar">@auth_token</span> = <span class="ruby-identifier">api_key_or_params</span>[<span class="ruby-identifier">:auth_token</span>]
710
+ 91: <span class="ruby-keyword kw">end</span>
711
+ </pre>
712
+ </div>
713
+ </div>
714
+ </div>
715
+
716
+ <div id="method-M000021" class="method-detail">
717
+ <a name="M000021"></a>
718
+
719
+ <div class="method-heading">
720
+ <a href="#M000021" class="method-signature">
721
+ <span class="method-name">signature_from</span><span class="method-args">(params={})</span>
722
+ </a>
723
+ </div>
724
+
725
+ <div class="method-description">
726
+ <p><a class="source-toggle" href="#"
727
+ onclick="toggleCode('M000021-source');return false;">[Source]</a></p>
728
+ <div class="method-source-code" id="M000021-source">
729
+ <pre>
730
+ <span class="ruby-comment cmt"># File lib/flickr.rb, line 208</span>
731
+ 208: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">signature_from</span>(<span class="ruby-identifier">params</span>={})
732
+ 209: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@shared_secret</span> <span class="ruby-comment cmt"># don't both getting signature if no shared_secret</span>
733
+ 210: <span class="ruby-identifier">request_str</span> = <span class="ruby-identifier">params</span>.<span class="ruby-identifier">reject</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span> <span class="ruby-identifier">v</span>.<span class="ruby-identifier">nil?</span>}.<span class="ruby-identifier">collect</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span> <span class="ruby-node">&quot;#{p[0].to_s}#{p[1]}&quot;</span>}.<span class="ruby-identifier">sort</span>.<span class="ruby-identifier">join</span> <span class="ruby-comment cmt"># build key value pairs, sort in alpha order then join them, ignoring those with nil value</span>
734
+ 211: <span class="ruby-keyword kw">return</span> <span class="ruby-constant">Digest</span><span class="ruby-operator">::</span><span class="ruby-constant">MD5</span>.<span class="ruby-identifier">hexdigest</span>(<span class="ruby-node">&quot;#{@shared_secret}#{request_str}&quot;</span>)
735
+ 212: <span class="ruby-keyword kw">end</span>
736
+ </pre>
737
+ </div>
738
+ </div>
739
+ </div>
740
+
741
+ <div id="method-M000009" class="method-detail">
742
+ <a name="M000009"></a>
743
+
744
+ <div class="method-heading">
745
+ <a href="#M000009" class="method-signature">
746
+ <span class="method-name">tag</span><span class="method-args">(tag)</span>
747
+ </a>
748
+ </div>
749
+
750
+ <div class="method-description">
751
+ <p>
752
+ Gets public <a href="Flickr.html#M000005">photos</a> with a given <a
753
+ href="Flickr.html#M000009">tag</a>
754
+ </p>
755
+ <p><a class="source-toggle" href="#"
756
+ onclick="toggleCode('M000009-source');return false;">[Source]</a></p>
757
+ <div class="method-source-code" id="M000009-source">
758
+ <pre>
759
+ <span class="ruby-comment cmt"># File lib/flickr.rb, line 129</span>
760
+ 129: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">tag</span>(<span class="ruby-identifier">tag</span>)
761
+ 130: <span class="ruby-identifier">photos</span>(<span class="ruby-value str">'tags'</span>=<span class="ruby-operator">&gt;</span><span class="ruby-identifier">tag</span>)
762
+ 131: <span class="ruby-keyword kw">end</span>
763
+ </pre>
764
+ </div>
765
+ </div>
766
+ </div>
767
+
768
+ <div id="method-M000010" class="method-detail">
769
+ <a name="M000010"></a>
770
+
771
+ <div class="method-heading">
772
+ <a href="#M000010" class="method-signature">
773
+ <span class="method-name">users</span><span class="method-args">(lookup=nil)</span>
774
+ </a>
775
+ </div>
776
+
777
+ <div class="method-description">
778
+ <p>
779
+ Implements flickr.people.findByEmail and flickr.people.findByUsername.
780
+ </p>
781
+ <p><a class="source-toggle" href="#"
782
+ onclick="toggleCode('M000010-source');return false;">[Source]</a></p>
783
+ <div class="method-source-code" id="M000010-source">
784
+ <pre>
785
+ <span class="ruby-comment cmt"># File lib/flickr.rb, line 134</span>
786
+ 134: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">users</span>(<span class="ruby-identifier">lookup</span>=<span class="ruby-keyword kw">nil</span>)
787
+ 135: <span class="ruby-identifier">user</span> = <span class="ruby-identifier">people_findByEmail</span>(<span class="ruby-value str">'find_email'</span>=<span class="ruby-operator">&gt;</span><span class="ruby-identifier">lookup</span>)[<span class="ruby-value str">'user'</span>] <span class="ruby-keyword kw">rescue</span> <span class="ruby-identifier">people_findByUsername</span>(<span class="ruby-value str">'username'</span>=<span class="ruby-operator">&gt;</span><span class="ruby-identifier">lookup</span>)[<span class="ruby-value str">'user'</span>]
788
+ 136: <span class="ruby-keyword kw">return</span> <span class="ruby-constant">User</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">&quot;id&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">user</span>[<span class="ruby-value str">&quot;nsid&quot;</span>], <span class="ruby-value str">&quot;username&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">user</span>[<span class="ruby-value str">&quot;username&quot;</span>], <span class="ruby-value str">&quot;client&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">self</span>)
789
+ 137: <span class="ruby-keyword kw">end</span>
790
+ </pre>
791
+ </div>
792
+ </div>
793
+ </div>
794
+
795
+
796
+ </div>
797
+
798
+
799
+ </div>
800
+
801
+
802
+ <div id="validator-badges">
803
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
804
+ </div>
805
+
806
+ </body>
807
+ </html>