murlsh 1.4.1 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. data/.gitignore +4 -0
  2. data/.htaccess +0 -3
  3. data/Gemfile +41 -0
  4. data/README.textile +68 -6
  5. data/Rakefile +65 -152
  6. data/config.ru +13 -2
  7. data/config.yaml +9 -4
  8. data/db/migrate/20110213023123_init.rb +20 -0
  9. data/lib/murlsh/atom_body.rb +78 -0
  10. data/lib/murlsh/atom_server.rb +38 -0
  11. data/lib/murlsh/auth.rb +12 -0
  12. data/lib/murlsh/build_query.rb +1 -1
  13. data/lib/murlsh/cat_files.rb +17 -0
  14. data/lib/murlsh/delicious_parse.rb +1 -0
  15. data/lib/murlsh/dispatch.rb +25 -11
  16. data/lib/murlsh/etag_add_encoding.rb +1 -1
  17. data/lib/murlsh/feed_body.rb +36 -0
  18. data/lib/murlsh/img_store.rb +27 -28
  19. data/lib/murlsh/install.rb +1 -0
  20. data/lib/murlsh/json_body.rb +5 -2
  21. data/lib/murlsh/json_server.rb +9 -13
  22. data/lib/murlsh/m3u_body.rb +28 -0
  23. data/lib/murlsh/m3u_server.rb +50 -0
  24. data/lib/murlsh/markup.rb +1 -1
  25. data/lib/murlsh/plugin.rb +5 -0
  26. data/lib/murlsh/podcast_server.rb +44 -0
  27. data/lib/murlsh/pop_server.rb +78 -0
  28. data/lib/murlsh/random_server.rb +41 -0
  29. data/lib/murlsh/rss_body.rb +46 -0
  30. data/lib/murlsh/rss_server.rb +38 -0
  31. data/lib/murlsh/search_conditions.rb +2 -2
  32. data/lib/murlsh/uri_ask.rb +2 -2
  33. data/lib/murlsh/url_body.rb +21 -6
  34. data/lib/murlsh/url_result_set.rb +2 -2
  35. data/lib/murlsh/url_server.rb +19 -16
  36. data/lib/murlsh/write_ordered_hash.rb +17 -0
  37. data/lib/murlsh.rb +13 -2
  38. data/murlsh.gemspec +41 -194
  39. data/plugins/add_post_60_notify_hubs.rb +3 -2
  40. data/plugins/add_pre_30_unajax_twitter.rb +1 -1
  41. data/plugins/add_pre_40_thumbnail_shortcuts.rb +23 -0
  42. data/plugins/add_pre_45_supplied_thumbnail.rb +4 -9
  43. data/plugins/add_pre_50_media_thumbnail.rb +4 -9
  44. data/plugins/add_pre_50_open_graph_image.rb +4 -8
  45. data/plugins/add_pre_60_github_title.rb +1 -1
  46. data/plugins/add_pre_65_html_thumb.rb +3 -8
  47. data/plugins/add_pre_65_img_thumb.rb +4 -9
  48. data/plugins/avatar_50_gravatar.rb +2 -1
  49. data/plugins/store_asset_40_s3.rb +40 -0
  50. data/plugins/store_asset_50_local.rb +22 -0
  51. data/public/js/js.js +0 -7
  52. data/spec/auth_spec.rb +7 -0
  53. data/spec/cat_files_spec.rb +49 -0
  54. data/spec/img_store_spec.rb +24 -8
  55. metadata +119 -76
  56. data/VERSION +0 -1
  57. data/lib/murlsh/build_md5.rb +0 -12
  58. data/lib/murlsh/head_from_get.rb +0 -15
  59. data/plugins/add_post_50_update_feed.rb +0 -84
  60. data/plugins/add_post_50_update_m3u.rb +0 -35
  61. data/plugins/add_post_50_update_podcast.rb +0 -44
  62. data/plugins/add_post_50_update_rss.rb +0 -51
  63. data/plugins/add_pre_60_s3_image.rb +0 -35
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: murlsh
3
3
  version: !ruby/object:Gem::Version
4
- hash: 5
4
+ hash: 3
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
- - 4
9
- - 1
10
- version: 1.4.1
8
+ - 5
9
+ - 0
10
+ version: 1.5.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Matthew M. Boedicker
@@ -15,8 +15,8 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-02-01 00:00:00 -05:00
19
- default_executable: murlsh
18
+ date: 2011-02-21 00:00:00 -05:00
19
+ default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  name: activerecord
@@ -35,23 +35,22 @@ dependencies:
35
35
  type: :runtime
36
36
  version_requirements: *id001
37
37
  - !ruby/object:Gem::Dependency
38
- name: bcrypt-ruby
38
+ name: aws-s3
39
39
  prerelease: false
40
40
  requirement: &id002 !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
- - - ">="
43
+ - - ~>
44
44
  - !ruby/object:Gem::Version
45
- hash: 15
45
+ hash: 7
46
46
  segments:
47
- - 2
48
- - 1
49
- - 2
50
- version: 2.1.2
47
+ - 0
48
+ - 6
49
+ version: "0.6"
51
50
  type: :runtime
52
51
  version_requirements: *id002
53
52
  - !ruby/object:Gem::Dependency
54
- name: builder
53
+ name: bcrypt-ruby
55
54
  prerelease: false
56
55
  requirement: &id003 !ruby/object:Gem::Requirement
57
56
  none: false
@@ -67,9 +66,23 @@ dependencies:
67
66
  type: :runtime
68
67
  version_requirements: *id003
69
68
  - !ruby/object:Gem::Dependency
70
- name: htmlentities
69
+ name: builder
71
70
  prerelease: false
72
71
  requirement: &id004 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ">"
75
+ - !ruby/object:Gem::Version
76
+ hash: 3
77
+ segments:
78
+ - 0
79
+ version: "0"
80
+ type: :runtime
81
+ version_requirements: *id004
82
+ - !ruby/object:Gem::Dependency
83
+ name: htmlentities
84
+ prerelease: false
85
+ requirement: &id005 !ruby/object:Gem::Requirement
73
86
  none: false
74
87
  requirements:
75
88
  - - ">="
@@ -81,11 +94,11 @@ dependencies:
81
94
  - 0
82
95
  version: 4.2.0
83
96
  type: :runtime
84
- version_requirements: *id004
97
+ version_requirements: *id005
85
98
  - !ruby/object:Gem::Dependency
86
99
  name: json
87
100
  prerelease: false
88
- requirement: &id005 !ruby/object:Gem::Requirement
101
+ requirement: &id006 !ruby/object:Gem::Requirement
89
102
  none: false
90
103
  requirements:
91
104
  - - ">="
@@ -97,11 +110,11 @@ dependencies:
97
110
  - 3
98
111
  version: 1.2.3
99
112
  type: :runtime
100
- version_requirements: *id005
113
+ version_requirements: *id006
101
114
  - !ruby/object:Gem::Dependency
102
115
  name: nokogiri
103
116
  prerelease: false
104
- requirement: &id006 !ruby/object:Gem::Requirement
117
+ requirement: &id007 !ruby/object:Gem::Requirement
105
118
  none: false
106
119
  requirements:
107
120
  - - ~>
@@ -112,27 +125,27 @@ dependencies:
112
125
  - 0
113
126
  version: "1.0"
114
127
  type: :runtime
115
- version_requirements: *id006
128
+ version_requirements: *id007
116
129
  - !ruby/object:Gem::Dependency
117
130
  name: plumnailer
118
131
  prerelease: false
119
- requirement: &id007 !ruby/object:Gem::Requirement
132
+ requirement: &id008 !ruby/object:Gem::Requirement
120
133
  none: false
121
134
  requirements:
122
135
  - - ">="
123
136
  - !ruby/object:Gem::Version
124
- hash: 27
137
+ hash: 29
125
138
  segments:
126
139
  - 0
127
140
  - 1
128
- - 0
129
- version: 0.1.0
141
+ - 3
142
+ version: 0.1.3
130
143
  type: :runtime
131
- version_requirements: *id007
144
+ version_requirements: *id008
132
145
  - !ruby/object:Gem::Dependency
133
146
  name: postrank-uri
134
147
  prerelease: false
135
- requirement: &id008 !ruby/object:Gem::Requirement
148
+ requirement: &id009 !ruby/object:Gem::Requirement
136
149
  none: false
137
150
  requirements:
138
151
  - - ~>
@@ -143,11 +156,11 @@ dependencies:
143
156
  - 0
144
157
  version: "1.0"
145
158
  type: :runtime
146
- version_requirements: *id008
159
+ version_requirements: *id009
147
160
  - !ruby/object:Gem::Dependency
148
161
  name: public_suffix_service
149
162
  prerelease: false
150
- requirement: &id009 !ruby/object:Gem::Requirement
163
+ requirement: &id010 !ruby/object:Gem::Requirement
151
164
  none: false
152
165
  requirements:
153
166
  - - ~>
@@ -158,11 +171,11 @@ dependencies:
158
171
  - 0
159
172
  version: "0.0"
160
173
  type: :runtime
161
- version_requirements: *id009
174
+ version_requirements: *id010
162
175
  - !ruby/object:Gem::Dependency
163
176
  name: push-notify
164
177
  prerelease: false
165
- requirement: &id010 !ruby/object:Gem::Requirement
178
+ requirement: &id011 !ruby/object:Gem::Requirement
166
179
  none: false
167
180
  requirements:
168
181
  - - ">="
@@ -174,11 +187,11 @@ dependencies:
174
187
  - 0
175
188
  version: 0.1.0
176
189
  type: :runtime
177
- version_requirements: *id010
190
+ version_requirements: *id011
178
191
  - !ruby/object:Gem::Dependency
179
192
  name: rack
180
193
  prerelease: false
181
- requirement: &id011 !ruby/object:Gem::Requirement
194
+ requirement: &id012 !ruby/object:Gem::Requirement
182
195
  none: false
183
196
  requirements:
184
197
  - - ">="
@@ -190,11 +203,11 @@ dependencies:
190
203
  - 0
191
204
  version: 1.0.0
192
205
  type: :runtime
193
- version_requirements: *id011
206
+ version_requirements: *id012
194
207
  - !ruby/object:Gem::Dependency
195
208
  name: rack-cache
196
209
  prerelease: false
197
- requirement: &id012 !ruby/object:Gem::Requirement
210
+ requirement: &id013 !ruby/object:Gem::Requirement
198
211
  none: false
199
212
  requirements:
200
213
  - - ">="
@@ -206,11 +219,11 @@ dependencies:
206
219
  - 2
207
220
  version: 0.5.2
208
221
  type: :runtime
209
- version_requirements: *id012
222
+ version_requirements: *id013
210
223
  - !ruby/object:Gem::Dependency
211
224
  name: rack-rewrite
212
225
  prerelease: false
213
- requirement: &id013 !ruby/object:Gem::Requirement
226
+ requirement: &id014 !ruby/object:Gem::Requirement
214
227
  none: false
215
228
  requirements:
216
229
  - - ">="
@@ -222,11 +235,11 @@ dependencies:
222
235
  - 2
223
236
  version: 1.0.2
224
237
  type: :runtime
225
- version_requirements: *id013
238
+ version_requirements: *id014
226
239
  - !ruby/object:Gem::Dependency
227
240
  name: rack-throttle
228
241
  prerelease: false
229
- requirement: &id014 !ruby/object:Gem::Requirement
242
+ requirement: &id015 !ruby/object:Gem::Requirement
230
243
  none: false
231
244
  requirements:
232
245
  - - ">="
@@ -238,11 +251,11 @@ dependencies:
238
251
  - 0
239
252
  version: 0.3.0
240
253
  type: :runtime
241
- version_requirements: *id014
254
+ version_requirements: *id015
242
255
  - !ruby/object:Gem::Dependency
243
256
  name: rmagick
244
257
  prerelease: false
245
- requirement: &id015 !ruby/object:Gem::Requirement
258
+ requirement: &id016 !ruby/object:Gem::Requirement
246
259
  none: false
247
260
  requirements:
248
261
  - - ">="
@@ -254,11 +267,26 @@ dependencies:
254
267
  - 14
255
268
  version: 1.15.14
256
269
  type: :runtime
257
- version_requirements: *id015
270
+ version_requirements: *id016
271
+ - !ruby/object:Gem::Dependency
272
+ name: rmail
273
+ prerelease: false
274
+ requirement: &id017 !ruby/object:Gem::Requirement
275
+ none: false
276
+ requirements:
277
+ - - ~>
278
+ - !ruby/object:Gem::Version
279
+ hash: 15
280
+ segments:
281
+ - 1
282
+ - 0
283
+ version: "1.0"
284
+ type: :runtime
285
+ version_requirements: *id017
258
286
  - !ruby/object:Gem::Dependency
259
287
  name: sqlite3
260
288
  prerelease: false
261
- requirement: &id016 !ruby/object:Gem::Requirement
289
+ requirement: &id018 !ruby/object:Gem::Requirement
262
290
  none: false
263
291
  requirements:
264
292
  - - ~>
@@ -269,27 +297,27 @@ dependencies:
269
297
  - 3
270
298
  version: "1.3"
271
299
  type: :runtime
272
- version_requirements: *id016
300
+ version_requirements: *id018
273
301
  - !ruby/object:Gem::Dependency
274
302
  name: tinyatom
275
303
  prerelease: false
276
- requirement: &id017 !ruby/object:Gem::Requirement
304
+ requirement: &id019 !ruby/object:Gem::Requirement
277
305
  none: false
278
306
  requirements:
279
307
  - - ">="
280
308
  - !ruby/object:Gem::Version
281
- hash: 21
309
+ hash: 27
282
310
  segments:
283
311
  - 0
284
312
  - 3
285
- - 3
286
- version: 0.3.3
313
+ - 4
314
+ version: 0.3.4
287
315
  type: :runtime
288
- version_requirements: *id017
316
+ version_requirements: *id019
289
317
  - !ruby/object:Gem::Dependency
290
318
  name: treetop
291
319
  prerelease: false
292
- requirement: &id018 !ruby/object:Gem::Requirement
320
+ requirement: &id020 !ruby/object:Gem::Requirement
293
321
  none: false
294
322
  requirements:
295
323
  - - ~>
@@ -300,11 +328,11 @@ dependencies:
300
328
  - 4
301
329
  version: "1.4"
302
330
  type: :runtime
303
- version_requirements: *id018
331
+ version_requirements: *id020
304
332
  - !ruby/object:Gem::Dependency
305
333
  name: twitter
306
334
  prerelease: false
307
- requirement: &id019 !ruby/object:Gem::Requirement
335
+ requirement: &id021 !ruby/object:Gem::Requirement
308
336
  none: false
309
337
  requirements:
310
338
  - - ">="
@@ -316,11 +344,11 @@ dependencies:
316
344
  - 12
317
345
  version: 0.9.12
318
346
  type: :runtime
319
- version_requirements: *id019
347
+ version_requirements: *id021
320
348
  - !ruby/object:Gem::Dependency
321
349
  name: fakeweb
322
350
  prerelease: false
323
- requirement: &id020 !ruby/object:Gem::Requirement
351
+ requirement: &id022 !ruby/object:Gem::Requirement
324
352
  none: false
325
353
  requirements:
326
354
  - - ~>
@@ -331,11 +359,11 @@ dependencies:
331
359
  - 3
332
360
  version: "1.3"
333
361
  type: :development
334
- version_requirements: *id020
362
+ version_requirements: *id022
335
363
  - !ruby/object:Gem::Dependency
336
364
  name: flog
337
365
  prerelease: false
338
- requirement: &id021 !ruby/object:Gem::Requirement
366
+ requirement: &id023 !ruby/object:Gem::Requirement
339
367
  none: false
340
368
  requirements:
341
369
  - - ">="
@@ -347,11 +375,11 @@ dependencies:
347
375
  - 0
348
376
  version: 2.5.0
349
377
  type: :development
350
- version_requirements: *id021
378
+ version_requirements: *id023
351
379
  - !ruby/object:Gem::Dependency
352
380
  name: rack-test
353
381
  prerelease: false
354
- requirement: &id022 !ruby/object:Gem::Requirement
382
+ requirement: &id024 !ruby/object:Gem::Requirement
355
383
  none: false
356
384
  requirements:
357
385
  - - ~>
@@ -362,11 +390,11 @@ dependencies:
362
390
  - 5
363
391
  version: "0.5"
364
392
  type: :development
365
- version_requirements: *id022
393
+ version_requirements: *id024
366
394
  - !ruby/object:Gem::Dependency
367
395
  name: rspec
368
396
  prerelease: false
369
- requirement: &id023 !ruby/object:Gem::Requirement
397
+ requirement: &id025 !ruby/object:Gem::Requirement
370
398
  none: false
371
399
  requirements:
372
400
  - - ~>
@@ -377,29 +405,34 @@ dependencies:
377
405
  - 0
378
406
  version: "2.0"
379
407
  type: :development
380
- version_requirements: *id023
408
+ version_requirements: *id025
381
409
  description: Host your bookmarks or maintain a link blog
382
- email: matthewm@boedicker.org
410
+ email:
411
+ - matthewm@boedicker.org
383
412
  executables:
384
413
  - murlsh
385
414
  extensions: []
386
415
 
387
- extra_rdoc_files:
388
- - README.textile
416
+ extra_rdoc_files: []
417
+
389
418
  files:
419
+ - .gitignore
390
420
  - .htaccess
391
421
  - COPYING
422
+ - Gemfile
392
423
  - README.textile
393
424
  - Rakefile
394
- - VERSION
395
425
  - bin/murlsh
396
426
  - config.ru
397
427
  - config.yaml
428
+ - db/migrate/20110213023123_init.rb
398
429
  - lib/murlsh.rb
399
430
  - lib/murlsh/ask.rb
431
+ - lib/murlsh/atom_body.rb
432
+ - lib/murlsh/atom_server.rb
400
433
  - lib/murlsh/auth.rb
401
- - lib/murlsh/build_md5.rb
402
434
  - lib/murlsh/build_query.rb
435
+ - lib/murlsh/cat_files.rb
403
436
  - lib/murlsh/cp_r_safe.rb
404
437
  - lib/murlsh/delicious_parse.rb
405
438
  - lib/murlsh/dispatch.rb
@@ -407,17 +440,24 @@ files:
407
440
  - lib/murlsh/etag_add_encoding.rb
408
441
  - lib/murlsh/failproof.rb
409
442
  - lib/murlsh/far_future_expires.rb
410
- - lib/murlsh/head_from_get.rb
443
+ - lib/murlsh/feed_body.rb
411
444
  - lib/murlsh/image_list.rb
412
445
  - lib/murlsh/img_store.rb
413
446
  - lib/murlsh/install.rb
414
447
  - lib/murlsh/json_body.rb
415
448
  - lib/murlsh/json_server.rb
416
449
  - lib/murlsh/jsonp_body.rb
450
+ - lib/murlsh/m3u_body.rb
451
+ - lib/murlsh/m3u_server.rb
417
452
  - lib/murlsh/markup.rb
418
453
  - lib/murlsh/must_revalidate.rb
419
454
  - lib/murlsh/openlock.rb
420
455
  - lib/murlsh/plugin.rb
456
+ - lib/murlsh/podcast_server.rb
457
+ - lib/murlsh/pop_server.rb
458
+ - lib/murlsh/random_server.rb
459
+ - lib/murlsh/rss_body.rb
460
+ - lib/murlsh/rss_server.rb
421
461
  - lib/murlsh/search_conditions.rb
422
462
  - lib/murlsh/search_grammar.rb
423
463
  - lib/murlsh/search_grammar.treetop
@@ -429,16 +469,14 @@ files:
429
469
  - lib/murlsh/url_body.rb
430
470
  - lib/murlsh/url_result_set.rb
431
471
  - lib/murlsh/url_server.rb
472
+ - lib/murlsh/write_ordered_hash.rb
432
473
  - lib/murlsh/yaml_ordered_hash.rb
433
474
  - murlsh.gemspec
434
- - plugins/add_post_50_update_feed.rb
435
- - plugins/add_post_50_update_m3u.rb
436
- - plugins/add_post_50_update_podcast.rb
437
- - plugins/add_post_50_update_rss.rb
438
475
  - plugins/add_post_60_notify_hubs.rb
439
476
  - plugins/add_pre_30_unajax_twitter.rb
440
477
  - plugins/add_pre_35_url_clean.rb
441
478
  - plugins/add_pre_40_convert_mobile.rb
479
+ - plugins/add_pre_40_thumbnail_shortcuts.rb
442
480
  - plugins/add_pre_45_supplied_thumbnail.rb
443
481
  - plugins/add_pre_50_lookup_content_type_title.rb
444
482
  - plugins/add_pre_50_media_thumbnail.rb
@@ -446,11 +484,12 @@ files:
446
484
  - plugins/add_pre_60_github_title.rb
447
485
  - plugins/add_pre_60_google_code_title.rb
448
486
  - plugins/add_pre_60_imgur.rb
449
- - plugins/add_pre_60_s3_image.rb
450
487
  - plugins/add_pre_60_twitter.rb
451
488
  - plugins/add_pre_65_html_thumb.rb
452
489
  - plugins/add_pre_65_img_thumb.rb
453
490
  - plugins/avatar_50_gravatar.rb
491
+ - plugins/store_asset_40_s3.rb
492
+ - plugins/store_asset_50_local.rb
454
493
  - plugins/url_display_add_45_audio.rb
455
494
  - plugins/url_display_add_50_hostrec.rb
456
495
  - plugins/url_display_add_55_content_type.rb
@@ -464,6 +503,7 @@ files:
464
503
  - public/js/js.js
465
504
  - public/js/twitter-text-1.3.1.js
466
505
  - spec/auth_spec.rb
506
+ - spec/cat_files_spec.rb
467
507
  - spec/dispatch_spec.rb
468
508
  - spec/doc_spec.rb
469
509
  - spec/img_store_spec.rb
@@ -473,7 +513,7 @@ files:
473
513
  - spec/url_spec.rb
474
514
  - spec/yaml_ordered_hash_spec.rb
475
515
  has_rdoc: true
476
- homepage: http://github.com/mmb/murlsh
516
+ homepage: https://github.com/mmb/murlsh
477
517
  licenses: []
478
518
 
479
519
  post_install_message:
@@ -495,19 +535,22 @@ required_rubygems_version: !ruby/object:Gem::Requirement
495
535
  requirements:
496
536
  - - ">="
497
537
  - !ruby/object:Gem::Version
498
- hash: 3
538
+ hash: 23
499
539
  segments:
500
- - 0
501
- version: "0"
540
+ - 1
541
+ - 3
542
+ - 6
543
+ version: 1.3.6
502
544
  requirements: []
503
545
 
504
546
  rubyforge_project:
505
- rubygems_version: 1.4.2
547
+ rubygems_version: 1.5.2
506
548
  signing_key:
507
549
  specification_version: 3
508
550
  summary: Host your bookmarks or maintain a link blog
509
551
  test_files:
510
552
  - spec/auth_spec.rb
553
+ - spec/cat_files_spec.rb
511
554
  - spec/dispatch_spec.rb
512
555
  - spec/doc_spec.rb
513
556
  - spec/img_store_spec.rb
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 1.4.1
@@ -1,12 +0,0 @@
1
- require 'digest/md5'
2
-
3
- module Murlsh
4
-
5
- module BuildMd5
6
-
7
- # Return the md5 sum of the result of the build method.
8
- def md5; Digest::MD5.hexdigest(build); end
9
-
10
- end
11
-
12
- end
@@ -1,15 +0,0 @@
1
- module Murlsh
2
-
3
- # Mixin for adding head() that calls get() and removed the body.
4
- module HeadFromGet
5
-
6
- # Call get() and remove the body.
7
- def head(req)
8
- resp = get(req)
9
- resp.body = ''
10
- resp
11
- end
12
-
13
- end
14
-
15
- end
@@ -1,84 +0,0 @@
1
- require 'uri'
2
-
3
- require 'tinyatom'
4
-
5
- require 'murlsh'
6
-
7
- module Murlsh
8
-
9
- # Regenerate atom feed after a new url has been added.
10
- class AddPost50UpdateFeed < Plugin
11
-
12
- @hook = 'add_post'
13
-
14
- # Content types to add an enclosure for.
15
- EnclosureContentTypes = %w{
16
- application/pdf
17
- audio/mpeg
18
- image/gif
19
- image/jpeg
20
- image/png
21
- }
22
-
23
- def self.run(url, config)
24
- feed = TinyAtom::Feed.new(config['root_url'], config.fetch('page_title'),
25
- URI.join(config['root_url'], config['feed_file']),
26
- :hubs => config.fetch('pubsubhubbub_hubs', []).
27
- map { |x| x['subscribe_url'] } )
28
-
29
- latest = Murlsh::Url.all(:order => 'time DESC',
30
- :limit => config.fetch('num_posts_feed', 25))
31
-
32
- latest.each do |mu|
33
- options = {
34
- :author_name => mu.name,
35
- :summary => mu.title_stripped
36
- }
37
-
38
- if EnclosureContentTypes.include?(mu.content_type)
39
- options.merge!(
40
- :enclosure_type => mu.content_type,
41
- :enclosure_href => mu.url,
42
- :enclosure_title => mu.title
43
- )
44
- if mu.content_length
45
- options.merge! :enclosure_length => mu.content_length
46
- end
47
- end
48
-
49
- if mu.thumbnail_url
50
- begin
51
- # Add root url to relative urls.
52
- tu = URI(mu.thumbnail_url)
53
- abs_url = if tu.is_a?(URI::HTTP)
54
- tu
55
- else
56
- URI.join config['root_url'], tu
57
- end
58
- options.merge! :media_thumbnail_url => abs_url
59
- rescue URI::InvalidURIError
60
- end
61
- end
62
-
63
- Murlsh::failproof do
64
- if mu.via
65
- options.merge!(
66
- :via_type => 'text/html',
67
- :via_href => mu.via,
68
- :via_title => URI(mu.via).extend(Murlsh::URIDomain).domain
69
- )
70
- end
71
- end
72
-
73
- feed.add_entry mu.id, mu.title_stripped, mu.time, mu.url, options
74
- end
75
-
76
- Murlsh::openlock(config.fetch('feed_file'), 'w') do |f|
77
- feed.make :target => f
78
- end
79
-
80
- end
81
-
82
- end
83
-
84
- end
@@ -1,35 +0,0 @@
1
- require 'murlsh'
2
-
3
- module Murlsh
4
-
5
- # Regenerate m3u file after a new audio url has been added.
6
- class AddPost50UpdateM3u < Plugin
7
-
8
- @hook = 'add_post'
9
-
10
- AudioContentTypes = %w{
11
- application/ogg
12
- audio/mpeg
13
- audio/ogg
14
- }
15
-
16
- OutputFile = 'm3u.m3u'
17
-
18
- def self.run(url, config)
19
- if AudioContentTypes.include?(url.content_type) or
20
- not File.exists?(OutputFile)
21
-
22
- Murlsh::openlock(OutputFile, 'w') do |f|
23
- f.write "# #{config['root_url']}\r\n\r\n"
24
- Murlsh::Url.all(:conditions =>
25
- ["content_type IN (?)", AudioContentTypes],
26
- :order => 'time DESC').each do |mu|
27
- f.write "#{mu.url}\r\n"
28
- end
29
- end
30
- end
31
- end
32
-
33
- end
34
-
35
- end