retjilp 0.2 → 0.3

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,474 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
+ <title>
7
+ Class: Retjilp::Retweeter
8
+
9
+ &mdash; Documentation by YARD 0.8.5.2
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="../css/style.css" type="text/css" media="screen" charset="utf-8" />
14
+
15
+ <link rel="stylesheet" href="../css/common.css" type="text/css" media="screen" charset="utf-8" />
16
+
17
+ <script type="text/javascript" charset="utf-8">
18
+ hasFrames = window.top.frames.main ? true : false;
19
+ relpath = '../';
20
+ framesUrl = "../frames.html#!" + escape(window.location.href);
21
+ </script>
22
+
23
+
24
+ <script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
25
+
26
+ <script type="text/javascript" charset="utf-8" src="../js/app.js"></script>
27
+
28
+
29
+ </head>
30
+ <body>
31
+ <div id="header">
32
+ <div id="menu">
33
+
34
+ <a href="../_index.html">Index (R)</a> &raquo;
35
+ <span class='title'><span class='object_link'><a href="../Retjilp.html" title="Retjilp (module)">Retjilp</a></span></span>
36
+ &raquo;
37
+ <span class="title">Retweeter</span>
38
+
39
+
40
+ <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
41
+ </div>
42
+
43
+ <div id="search">
44
+
45
+ <a class="full_list_link" id="class_list_link"
46
+ href="../class_list.html">
47
+ Class List
48
+ </a>
49
+
50
+ <a class="full_list_link" id="method_list_link"
51
+ href="../method_list.html">
52
+ Method List
53
+ </a>
54
+
55
+ <a class="full_list_link" id="file_list_link"
56
+ href="../file_list.html">
57
+ File List
58
+ </a>
59
+
60
+ </div>
61
+ <div class="clear"></div>
62
+ </div>
63
+
64
+ <iframe id="search_frame"></iframe>
65
+
66
+ <div id="content"><h1>Class: Retjilp::Retweeter
67
+
68
+
69
+
70
+ </h1>
71
+
72
+ <dl class="box">
73
+
74
+ <dt class="r1">Inherits:</dt>
75
+ <dd class="r1">
76
+ <span class="inheritName">Object</span>
77
+
78
+ <ul class="fullTree">
79
+ <li>Object</li>
80
+
81
+ <li class="next">Retjilp::Retweeter</li>
82
+
83
+ </ul>
84
+ <a href="#" class="inheritanceTree">show all</a>
85
+
86
+ </dd>
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+
96
+ <dt class="r2 last">Defined in:</dt>
97
+ <dd class="r2 last">lib/retjilp/retweeter.rb</dd>
98
+
99
+ </dl>
100
+ <div class="clear"></div>
101
+
102
+
103
+
104
+
105
+
106
+
107
+
108
+
109
+
110
+ <h2>
111
+ Instance Method Summary
112
+ <small>(<a href="#" class="summary_toggle">collapse</a>)</small>
113
+ </h2>
114
+
115
+ <ul class="summary">
116
+
117
+ <li class="public ">
118
+ <span class="summary_signature">
119
+
120
+ <a href="#initialize-instance_method" title="#initialize (instance method)">- (Retweeter) <strong>initialize</strong>(options) </a>
121
+
122
+
123
+
124
+ </span>
125
+
126
+
127
+ <span class="note title constructor">constructor</span>
128
+
129
+
130
+
131
+
132
+
133
+
134
+
135
+
136
+ <span class="summary_desc"><div class='inline'>
137
+ <p>A new instance of Retweeter.</p>
138
+ </div></span>
139
+
140
+ </li>
141
+
142
+
143
+ <li class="public ">
144
+ <span class="summary_signature">
145
+
146
+ <a href="#run-instance_method" title="#run (instance method)">- (Object) <strong>run</strong> </a>
147
+
148
+
149
+
150
+ </span>
151
+
152
+
153
+
154
+
155
+
156
+
157
+
158
+
159
+
160
+ <span class="summary_desc"><div class='inline'></div></span>
161
+
162
+ </li>
163
+
164
+
165
+ </ul>
166
+
167
+
168
+ <div id="constructor_details" class="method_details_list">
169
+ <h2>Constructor Details</h2>
170
+
171
+ <div class="method_details first">
172
+ <h3 class="signature first" id="initialize-instance_method">
173
+
174
+ - (<tt><span class='object_link'><a href="" title="Retjilp::Retweeter (class)">Retweeter</a></span></tt>) <strong>initialize</strong>(options)
175
+
176
+
177
+
178
+
179
+
180
+ </h3><div class="docstring">
181
+ <div class="discussion">
182
+
183
+ <p>A new instance of Retweeter</p>
184
+
185
+
186
+ </div>
187
+ </div>
188
+ <div class="tags">
189
+
190
+
191
+ </div><table class="source_code">
192
+ <tr>
193
+ <td>
194
+ <pre class="lines">
195
+
196
+
197
+ 13
198
+ 14
199
+ 15
200
+ 16
201
+ 17</pre>
202
+ </td>
203
+ <td>
204
+ <pre class="code"><span class="info file"># File 'lib/retjilp/retweeter.rb', line 13</span>
205
+
206
+ <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='rparen'>)</span>
207
+ <span class='ivar'>@log</span> <span class='op'>=</span> <span class='const'>Logger</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='const'>STDERR</span><span class='rparen'>)</span>
208
+ <span class='ivar'>@log</span><span class='period'>.</span><span class='id identifier rubyid_formatter'>formatter</span> <span class='op'>=</span> <span class='id identifier rubyid_proc'>proc</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_severity'>severity</span><span class='comma'>,</span> <span class='id identifier rubyid_time'>time</span><span class='comma'>,</span> <span class='id identifier rubyid_prog'>prog</span><span class='comma'>,</span> <span class='id identifier rubyid_msg'>msg</span><span class='op'>|</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_severity'>severity</span><span class='embexpr_end'>}</span><span class='tstring_content'>: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_msg'>msg</span><span class='embexpr_end'>}</span><span class='tstring_content'>\n</span><span class='tstring_end'>&quot;</span></span> <span class='rbrace'>}</span>
209
+ <span class='ivar'>@log</span><span class='period'>.</span><span class='id identifier rubyid_level'>level</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_log_level'>log_level</span>
210
+ <span class='kw'>end</span></pre>
211
+ </td>
212
+ </tr>
213
+ </table>
214
+ </div>
215
+
216
+ </div>
217
+
218
+
219
+ <div id="instance_method_details" class="method_details_list">
220
+ <h2>Instance Method Details</h2>
221
+
222
+
223
+ <div class="method_details first">
224
+ <h3 class="signature first" id="run-instance_method">
225
+
226
+ - (<tt>Object</tt>) <strong>run</strong>
227
+
228
+
229
+
230
+
231
+
232
+ </h3><table class="source_code">
233
+ <tr>
234
+ <td>
235
+ <pre class="lines">
236
+
237
+
238
+ 19
239
+ 20
240
+ 21
241
+ 22
242
+ 23
243
+ 24
244
+ 25
245
+ 26
246
+ 27
247
+ 28
248
+ 29
249
+ 30
250
+ 31
251
+ 32
252
+ 33
253
+ 34
254
+ 35
255
+ 36
256
+ 37
257
+ 38
258
+ 39
259
+ 40
260
+ 41
261
+ 42
262
+ 43
263
+ 44
264
+ 45
265
+ 46
266
+ 47
267
+ 48
268
+ 49
269
+ 50
270
+ 51
271
+ 52
272
+ 53
273
+ 54
274
+ 55
275
+ 56
276
+ 57
277
+ 58
278
+ 59
279
+ 60
280
+ 61
281
+ 62
282
+ 63
283
+ 64
284
+ 65
285
+ 66
286
+ 67
287
+ 68
288
+ 69
289
+ 70
290
+ 71
291
+ 72
292
+ 73
293
+ 74
294
+ 75
295
+ 76
296
+ 77
297
+ 78
298
+ 79
299
+ 80
300
+ 81
301
+ 82
302
+ 83
303
+ 84
304
+ 85
305
+ 86
306
+ 87
307
+ 88
308
+ 89
309
+ 90
310
+ 91
311
+ 92
312
+ 93
313
+ 94
314
+ 95
315
+ 96
316
+ 97
317
+ 98
318
+ 99
319
+ 100
320
+ 101
321
+ 102
322
+ 103
323
+ 104
324
+ 105
325
+ 106
326
+ 107
327
+ 108
328
+ 109
329
+ 110
330
+ 111
331
+ 112
332
+ 113
333
+ 114
334
+ 115
335
+ 116
336
+ 117
337
+ 118
338
+ 119
339
+ 120
340
+ 121
341
+ 122
342
+ 123
343
+ 124
344
+ 125
345
+ 126</pre>
346
+ </td>
347
+ <td>
348
+ <pre class="code"><span class="info file"># File 'lib/retjilp/retweeter.rb', line 19</span>
349
+
350
+ <span class='kw'>def</span> <span class='id identifier rubyid_run'>run</span>
351
+ <span class='comment'># Initialize data dir
352
+ </span> <span class='ivar'>@log</span><span class='period'>.</span><span class='id identifier rubyid_info'>info</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Reading configuration file</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
353
+ <span class='id identifier rubyid_data_dir'>data_dir</span> <span class='op'>=</span> <span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_expand_path'>expand_path</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>~/.retjilp</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
354
+ <span class='id identifier rubyid_config_filename'>config_filename</span> <span class='op'>=</span> <span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='id identifier rubyid_data_dir'>data_dir</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>config</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
355
+ <span class='id identifier rubyid_access_token_filename'>access_token_filename</span> <span class='op'>=</span> <span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='id identifier rubyid_data_dir'>data_dir</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>access_token</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
356
+
357
+ <span class='comment'># Read configuration file
358
+ </span> <span class='kw'>begin</span>
359
+ <span class='id identifier rubyid_config'>config</span> <span class='op'>=</span> <span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_open'>open</span><span class='lparen'>(</span><span class='id identifier rubyid_config_filename'>config_filename</span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_f'>f</span><span class='op'>|</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_load'>load</span><span class='lparen'>(</span><span class='id identifier rubyid_f'>f</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
360
+ <span class='kw'>rescue</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
361
+ <span class='id identifier rubyid_fatal_exit'>fatal_exit</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Error parsing configuration file </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_config_filename'>config_filename</span><span class='embexpr_end'>}</span><span class='tstring_content'>: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_message'>message</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
362
+ <span class='kw'>end</span>
363
+
364
+ <span class='comment'># Initialize the access token
365
+ </span> <span class='id identifier rubyid_access_token'>access_token</span> <span class='op'>=</span> <span class='kw'>nil</span>
366
+ <span class='id identifier rubyid_user_info'>user_info</span> <span class='op'>=</span> <span class='kw'>nil</span>
367
+ <span class='kw'>if</span> <span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_exist?'>exist?</span><span class='lparen'>(</span><span class='id identifier rubyid_access_token_filename'>access_token_filename</span><span class='rparen'>)</span>
368
+ <span class='comment'># Try using the cached token
369
+ </span> <span class='ivar'>@log</span><span class='period'>.</span><span class='id identifier rubyid_info'>info</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Loading cached access token from </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_access_token_filename'>access_token_filename</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
370
+ <span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_open'>open</span><span class='lparen'>(</span><span class='id identifier rubyid_access_token_filename'>access_token_filename</span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_f'>f</span><span class='op'>|</span>
371
+ <span class='kw'>begin</span>
372
+ <span class='id identifier rubyid_access_token_data'>access_token_data</span> <span class='op'>=</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_load'>load</span><span class='lparen'>(</span><span class='id identifier rubyid_f'>f</span><span class='rparen'>)</span>
373
+ <span class='id identifier rubyid_consumer'>consumer</span> <span class='op'>=</span> <span class='const'>OAuth</span><span class='op'>::</span><span class='const'>Consumer</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_config'>config</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>consumer_key</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_config'>config</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>consumer_secret</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='lbrace'>{</span> <span class='symbol'>:site</span> <span class='op'>=&gt;</span> <span class='const'>TWITTER_URI</span> <span class='rbrace'>}</span><span class='rparen'>)</span>
374
+ <span class='id identifier rubyid_access_token'>access_token</span> <span class='op'>=</span> <span class='const'>OAuth</span><span class='op'>::</span><span class='const'>AccessToken</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_consumer'>consumer</span><span class='comma'>,</span> <span class='id identifier rubyid_access_token_data'>access_token_data</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>token</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_access_token_data'>access_token_data</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>secret</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='rparen'>)</span>
375
+ <span class='kw'>unless</span> <span class='id identifier rubyid_user_info'>user_info</span> <span class='op'>=</span> <span class='id identifier rubyid_verify_token'>verify_token</span><span class='lparen'>(</span><span class='id identifier rubyid_access_token'>access_token</span><span class='rparen'>)</span>
376
+ <span class='ivar'>@log</span><span class='period'>.</span><span class='id identifier rubyid_warn'>warn</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Cached token not authorized</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
377
+ <span class='id identifier rubyid_access_token'>access_token</span> <span class='op'>=</span> <span class='kw'>nil</span>
378
+ <span class='kw'>end</span>
379
+ <span class='kw'>rescue</span> <span class='const'>JSON</span><span class='op'>::</span><span class='const'>ParserError</span>
380
+ <span class='ivar'>@log</span><span class='period'>.</span><span class='id identifier rubyid_warn'>warn</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Cached token does not parse</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
381
+ <span class='kw'>end</span>
382
+ <span class='kw'>end</span>
383
+ <span class='kw'>end</span>
384
+
385
+ <span class='comment'># Request the token if the cached access token does not exist
386
+ </span> <span class='kw'>unless</span> <span class='id identifier rubyid_access_token'>access_token</span>
387
+ <span class='const'>STDIN</span><span class='period'>.</span><span class='id identifier rubyid_tty?'>tty?</span> <span class='kw'>or</span> <span class='id identifier rubyid_fatal_exit'>fatal_exit</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>This script must be run interactively the first time to be able to authenticate.</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
388
+ <span class='ivar'>@log</span><span class='period'>.</span><span class='id identifier rubyid_info'>info</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Requesting new access token</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
389
+ <span class='id identifier rubyid_consumer'>consumer</span> <span class='op'>=</span> <span class='const'>OAuth</span><span class='op'>::</span><span class='const'>Consumer</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span>
390
+ <span class='id identifier rubyid_config'>config</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>consumer_key</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span>
391
+ <span class='id identifier rubyid_config'>config</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>consumer_secret</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span>
392
+ <span class='symbol'>:site</span> <span class='op'>=&gt;</span> <span class='const'>TWITTER_URI</span><span class='comma'>,</span>
393
+ <span class='symbol'>:scheme</span> <span class='op'>=&gt;</span> <span class='symbol'>:header</span><span class='comma'>,</span>
394
+ <span class='symbol'>:request_token_path</span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/oauth/request_token</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
395
+ <span class='symbol'>:authorize_path</span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/oauth/authorize</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
396
+ <span class='symbol'>:access_token_path</span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/oauth/access_token</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
397
+ <span class='symbol'>:http_method</span> <span class='op'>=&gt;</span> <span class='symbol'>:post</span><span class='rparen'>)</span>
398
+ <span class='id identifier rubyid_request_token'>request_token</span> <span class='op'>=</span> <span class='id identifier rubyid_consumer'>consumer</span><span class='period'>.</span><span class='id identifier rubyid_get_request_token'>get_request_token</span><span class='lparen'>(</span><span class='symbol'>:oauth_callback</span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>oob</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
399
+
400
+ <span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Please open </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_request_token'>request_token</span><span class='period'>.</span><span class='id identifier rubyid_authorize_url'>authorize_url</span><span class='embexpr_end'>}</span><span class='tstring_content'> in your browser, authorize Retjilp, and enter the PIN code below:</span><span class='tstring_end'>&quot;</span></span>
401
+ <span class='id identifier rubyid_verifier'>verifier</span> <span class='op'>=</span> <span class='const'>STDIN</span><span class='period'>.</span><span class='id identifier rubyid_gets'>gets</span><span class='period'>.</span><span class='id identifier rubyid_chomp'>chomp</span>
402
+
403
+ <span class='kw'>begin</span>
404
+ <span class='id identifier rubyid_access_token'>access_token</span> <span class='op'>=</span> <span class='id identifier rubyid_request_token'>request_token</span><span class='period'>.</span><span class='id identifier rubyid_get_access_token'>get_access_token</span><span class='lparen'>(</span><span class='symbol'>:oauth_verifier</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_verifier'>verifier</span><span class='rparen'>)</span>
405
+ <span class='kw'>rescue</span> <span class='const'>OAuth</span><span class='op'>::</span><span class='const'>Unauthorized</span>
406
+ <span class='id identifier rubyid_fatal_exit'>fatal_exit</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Invalid PIN verification!</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
407
+ <span class='kw'>end</span>
408
+ <span class='id identifier rubyid_user_info'>user_info</span> <span class='op'>=</span> <span class='id identifier rubyid_verify_token'>verify_token</span><span class='lparen'>(</span><span class='id identifier rubyid_access_token'>access_token</span><span class='rparen'>)</span> <span class='kw'>or</span> <span class='id identifier rubyid_fatal_exit'>fatal_exit</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Access token not authorized!</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
409
+ <span class='ivar'>@log</span><span class='period'>.</span><span class='id identifier rubyid_info'>info</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Caching token in </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_access_token_filename'>access_token_filename</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
410
+ <span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_open'>open</span><span class='lparen'>(</span><span class='id identifier rubyid_access_token_filename'>access_token_filename</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>w+</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_f'>f</span><span class='op'>|</span>
411
+ <span class='id identifier rubyid_access_token_data'>access_token_data</span> <span class='op'>=</span> <span class='lbrace'>{</span>
412
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>token</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_access_token'>access_token</span><span class='period'>.</span><span class='id identifier rubyid_token'>token</span><span class='comma'>,</span>
413
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>secret</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_access_token'>access_token</span><span class='period'>.</span><span class='id identifier rubyid_secret'>secret</span>
414
+ <span class='rbrace'>}</span>
415
+ <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_dump'>dump</span><span class='lparen'>(</span><span class='id identifier rubyid_access_token_data'>access_token_data</span><span class='comma'>,</span> <span class='id identifier rubyid_f'>f</span><span class='rparen'>)</span>
416
+ <span class='kw'>end</span>
417
+ <span class='kw'>end</span>
418
+
419
+ <span class='ivar'>@log</span><span class='period'>.</span><span class='id identifier rubyid_info'>info</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Logged in as </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_user_info'>user_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>screen_name</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
420
+
421
+ <span class='comment'># Get a list of retweeted ids
422
+ </span> <span class='ivar'>@log</span><span class='period'>.</span><span class='id identifier rubyid_info'>info</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Fetching retweets</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
423
+ <span class='id identifier rubyid_retweets'>retweets</span> <span class='op'>=</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='id identifier rubyid_access_token'>access_token</span><span class='period'>.</span><span class='id identifier rubyid_get'>get</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/</span><span class='embexpr_beg'>#{</span><span class='const'>API_VERSION</span><span class='embexpr_end'>}</span><span class='tstring_content'>/statuses/user_timeline.json?trim_user=true&amp;include_rts=true</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_body'>body</span><span class='rparen'>)</span>
424
+ <span class='ivar'>@log</span><span class='period'>.</span><span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_pretty_generate'>pretty_generate</span><span class='lparen'>(</span><span class='id identifier rubyid_retweets'>retweets</span><span class='rparen'>)</span><span class='rparen'>)</span>
425
+ <span class='kw'>not</span> <span class='id identifier rubyid_retweets'>retweets</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>error</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>or</span> <span class='id identifier rubyid_fatal_exit'>fatal_exit</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Error fetching retweets: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_retweets'>retweets</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
426
+
427
+ <span class='id identifier rubyid_retweeted_ids'>retweeted_ids</span> <span class='op'>=</span> <span class='id identifier rubyid_retweets'>retweets</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_retweet'>retweet</span><span class='op'>|</span> <span class='id identifier rubyid_retweet'>retweet</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>retweeted_status</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>id</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span> <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_sort!'>sort!</span>
428
+
429
+ <span class='comment'># Fetch the statuses
430
+ </span> <span class='ivar'>@log</span><span class='period'>.</span><span class='id identifier rubyid_info'>info</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Fetching friends statuses</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
431
+ <span class='kw'>if</span> <span class='id identifier rubyid_config'>config</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>retweet_from_list</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span>
432
+ <span class='id identifier rubyid_status_uri'>status_uri</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/</span><span class='embexpr_beg'>#{</span><span class='const'>API_VERSION</span><span class='embexpr_end'>}</span><span class='tstring_content'>/lists/statuses.json?slug=</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_config'>config</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>retweet_from_list</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_content'>&amp;owner_screen_name=</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_user_info'>user_info</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>screen_name</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_content'>&amp;include_rts=true</span><span class='tstring_end'>&quot;</span></span>
433
+ <span class='kw'>else</span>
434
+ <span class='id identifier rubyid_status_uri'>status_uri</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/</span><span class='embexpr_beg'>#{</span><span class='const'>API_VERSION</span><span class='embexpr_end'>}</span><span class='tstring_content'>/statuses/home_timeline.json?trim_user=true</span><span class='tstring_end'>&quot;</span></span>
435
+ <span class='kw'>end</span>
436
+ <span class='id identifier rubyid_status_uri'>status_uri</span> <span class='op'>+=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>&amp;since_id=</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_retweeted_ids'>retweeted_ids</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>unless</span> <span class='id identifier rubyid_retweeted_ids'>retweeted_ids</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
437
+ <span class='id identifier rubyid_statuses'>statuses</span> <span class='op'>=</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='id identifier rubyid_access_token'>access_token</span><span class='period'>.</span><span class='id identifier rubyid_get'>get</span><span class='lparen'>(</span><span class='id identifier rubyid_status_uri'>status_uri</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_body'>body</span><span class='rparen'>)</span>
438
+ <span class='ivar'>@log</span><span class='period'>.</span><span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_pretty_generate'>pretty_generate</span><span class='lparen'>(</span><span class='id identifier rubyid_statuses'>statuses</span><span class='rparen'>)</span><span class='rparen'>)</span>
439
+ <span class='kw'>not</span> <span class='id identifier rubyid_statuses'>statuses</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>error</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>or</span> <span class='id identifier rubyid_fatal_exit'>fatal_exit</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Error fetching statuses: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_statuses'>statuses</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
440
+
441
+ <span class='comment'># Retweet statuses
442
+ </span> <span class='id identifier rubyid_statuses'>statuses</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_status'>status</span><span class='op'>|</span>
443
+ <span class='id identifier rubyid_should_retweet'>should_retweet</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='id identifier rubyid_config'>config</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>match</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span> <span class='kw'>or</span> <span class='id identifier rubyid_config'>config</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>match</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_any?'>any?</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_match'>match</span><span class='op'>|</span>
444
+ <span class='id identifier rubyid_status'>status</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>text</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_downcase'>downcase</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span> <span class='id identifier rubyid_match'>match</span><span class='period'>.</span><span class='id identifier rubyid_downcase'>downcase</span>
445
+ <span class='rbrace'>}</span><span class='rparen'>)</span>
446
+ <span class='kw'>if</span> <span class='id identifier rubyid_should_retweet'>should_retweet</span>
447
+ <span class='id identifier rubyid_id_to_retweet'>id_to_retweet</span> <span class='op'>=</span> <span class='id identifier rubyid_status'>status</span><span class='period'>.</span><span class='id identifier rubyid_has_key?'>has_key?</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>retweeted_status</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_status'>status</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>retweeted_status</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>id</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span> <span class='op'>:</span> <span class='id identifier rubyid_status'>status</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>id</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span>
448
+ <span class='kw'>if</span> <span class='id identifier rubyid_retweeted_ids'>retweeted_ids</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span> <span class='id identifier rubyid_id_to_retweet'>id_to_retweet</span>
449
+ <span class='ivar'>@log</span><span class='period'>.</span><span class='id identifier rubyid_debug'>debug</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Already retweeted: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_status'>status</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>text</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
450
+ <span class='kw'>else</span>
451
+ <span class='ivar'>@log</span><span class='period'>.</span><span class='id identifier rubyid_info'>info</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Retweeting: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_status'>status</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>text</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
452
+ <span class='id identifier rubyid_result'>result</span> <span class='op'>=</span> <span class='id identifier rubyid_access_token'>access_token</span><span class='period'>.</span><span class='id identifier rubyid_post'>post</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/</span><span class='embexpr_beg'>#{</span><span class='const'>API_VERSION</span><span class='embexpr_end'>}</span><span class='tstring_content'>/statuses/retweet/</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_id_to_retweet'>id_to_retweet</span><span class='embexpr_end'>}</span><span class='tstring_content'>.json</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
453
+ <span class='id identifier rubyid_result'>result</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span> <span class='op'>==</span> <span class='const'>Net</span><span class='op'>::</span><span class='const'>HTTPOK</span> <span class='kw'>or</span> <span class='ivar'>@log</span><span class='period'>.</span><span class='id identifier rubyid_error'>error</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Error retweeting </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_result'>result</span><span class='period'>.</span><span class='id identifier rubyid_body'>body</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
454
+ <span class='kw'>end</span>
455
+ <span class='kw'>end</span>
456
+ <span class='kw'>end</span>
457
+ <span class='kw'>end</span></pre>
458
+ </td>
459
+ </tr>
460
+ </table>
461
+ </div>
462
+
463
+ </div>
464
+
465
+ </div>
466
+
467
+ <div id="footer">
468
+ Generated on Sat Mar 2 22:44:52 2013 by
469
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
470
+ 0.8.5.2 (ruby-2.0.0).
471
+ </div>
472
+
473
+ </body>
474
+ </html>