murlsh 1.4.1 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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