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.
- checksums.yaml +4 -4
- data/README.markdown +30 -6
- data/Rakefile +30 -0
- data/doc/Retjilp.html +134 -0
- data/doc/Retjilp/Options.html +308 -0
- data/doc/Retjilp/Retweeter.html +474 -0
- data/doc/Retjilp/Runner.html +260 -0
- data/doc/_index.html +145 -0
- data/doc/class_list.html +53 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +57 -0
- data/doc/css/style.css +338 -0
- data/doc/file.AUTHORS.html +75 -0
- data/doc/file.COPYING.html +100 -0
- data/doc/file.README.html +125 -0
- data/doc/file_list.html +61 -0
- data/doc/frames.html +28 -0
- data/doc/index.html +125 -0
- data/doc/js/app.js +214 -0
- data/doc/js/full_list.js +173 -0
- data/doc/js/jquery.js +4 -0
- data/doc/method_list.html +100 -0
- data/doc/top-level-namespace.html +112 -0
- data/lib/retjilp/log.rb +14 -0
- data/lib/retjilp/retweeter.rb +22 -114
- data/lib/retjilp/runner.rb +40 -3
- data/lib/retjilp/twitter.rb +118 -0
- data/retjilp.gemspec +8 -2
- data/test/spec/retweeter_spec.rb +82 -0
- metadata +86 -7
- data/config +0 -27
- data/lib/retjilp/options.rb +0 -24
@@ -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
|
+
— 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> »
|
35
|
+
<span class='title'><span class='object_link'><a href="../Retjilp.html" title="Retjilp (module)">Retjilp</a></span></span>
|
36
|
+
»
|
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'>"</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'>"</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'>"</span><span class='tstring_content'>Reading configuration file</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>~/.retjilp</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>config</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>access_token</span><span class='tstring_end'>"</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'>=></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'>"</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'>"</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'>"</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'>"</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'>"</span><span class='tstring_content'>consumer_key</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>consumer_secret</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='lbrace'>{</span> <span class='symbol'>:site</span> <span class='op'>=></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'>"</span><span class='tstring_content'>token</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>secret</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>Cached token not authorized</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>Cached token does not parse</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>This script must be run interactively the first time to be able to authenticate.</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>Requesting new access token</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>consumer_key</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>consumer_secret</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span><span class='comma'>,</span>
|
392
|
+
<span class='symbol'>:site</span> <span class='op'>=></span> <span class='const'>TWITTER_URI</span><span class='comma'>,</span>
|
393
|
+
<span class='symbol'>:scheme</span> <span class='op'>=></span> <span class='symbol'>:header</span><span class='comma'>,</span>
|
394
|
+
<span class='symbol'>:request_token_path</span> <span class='op'>=></span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>/oauth/request_token</span><span class='tstring_end'>"</span></span><span class='comma'>,</span>
|
395
|
+
<span class='symbol'>:authorize_path</span> <span class='op'>=></span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>/oauth/authorize</span><span class='tstring_end'>"</span></span><span class='comma'>,</span>
|
396
|
+
<span class='symbol'>:access_token_path</span> <span class='op'>=></span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>/oauth/access_token</span><span class='tstring_end'>"</span></span><span class='comma'>,</span>
|
397
|
+
<span class='symbol'>:http_method</span> <span class='op'>=></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'>=></span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>oob</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
399
|
+
|
400
|
+
<span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>"</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'>"</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'>=></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'>"</span><span class='tstring_content'>Invalid PIN verification!</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>Access token not authorized!</span><span class='tstring_end'>"</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'>"</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'>"</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'>'</span><span class='tstring_content'>w+</span><span class='tstring_end'>'</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'>"</span><span class='tstring_content'>token</span><span class='tstring_end'>"</span></span> <span class='op'>=></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'>"</span><span class='tstring_content'>secret</span><span class='tstring_end'>"</span></span> <span class='op'>=></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'>"</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'>"</span><span class='tstring_content'>screen_name</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>Fetching retweets</span><span class='tstring_end'>"</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'>"</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&include_rts=true</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>error</span><span class='tstring_end'>"</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'>"</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'>"</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'>"</span><span class='tstring_content'>retweeted_status</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>id</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>Fetching friends statuses</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>retweet_from_list</span><span class='tstring_end'>"</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'>"</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'>"</span><span class='tstring_content'>retweet_from_list</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_content'>&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'>"</span><span class='tstring_content'>screen_name</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_content'>&include_rts=true</span><span class='tstring_end'>"</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'>"</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'>"</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'>"</span><span class='tstring_content'>&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'>"</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'>"</span><span class='tstring_content'>error</span><span class='tstring_end'>"</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'>"</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'>"</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'>"</span><span class='tstring_content'>match</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>match</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>text</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>retweeted_status</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>retweeted_status</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>id</span><span class='tstring_end'>"</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'>"</span><span class='tstring_content'>id</span><span class='tstring_end'>"</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'>"</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'>"</span><span class='tstring_content'>text</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</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'>"</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'>"</span><span class='tstring_content'>text</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</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'>"</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'>"</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'>"</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'>"</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>
|