feedbag 0.10 → 0.10.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. checksums.yaml +5 -5
  2. data/COPYING +1 -1
  3. data/README.markdown +29 -0
  4. data/lib/feedbag.rb +11 -9
  5. metadata +20 -21
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 2f4a18f05a16a8b2b8bc186f4fe114c3257f9fb5
4
- data.tar.gz: f37fbb42c262877603597a7aa302641611099aa1
2
+ SHA256:
3
+ metadata.gz: c5439ea287031a4c8aa34a87ade233f73c89acaffb8c03e05f4a1bc9fc1f9eb7
4
+ data.tar.gz: 043fd828e69509b5a15260c8dc0e0991a70dbc2c01c7128176f74680b640d6f6
5
5
  SHA512:
6
- metadata.gz: f3690a18905ace1fd0abf19c6b1c9cc47e20a696e51865a5cfb7ffb03ccbd884f9ff4a75a6da6feba48a07627ceb5d451daf2afb079cc33ffe13714bfae0615c
7
- data.tar.gz: babb742f5e7a301bc59de0cdfefd28eb8b7df73b0640bed71033ae1a8d95434f56a9164279eb231af1c4d2737b7a2c1a5e2a668cd4945b58d1c4becd65036b8e
6
+ metadata.gz: 9b3d6f64e975c623f8bc8046670fef214a0209cd09fb33e81b6a27e9684175f48fa950a1803609bb7334b31160df5cd107eaf3af525fcb423bba2b06f8986102
7
+ data.tar.gz: a5c04f3e465f4e36c570e6a6f42f4c75246d4ef94fbb1e815530d1b9c9efd5e5cdbb7b248eca2ab97044ae18a7630b820aacdfcf8538721d59299ecfc40e82f7
data/COPYING CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (C) 2008-2014 David Moreno <david@axiombox.com>
1
+ Copyright (C) 2008-2021 David Moreno <damog@damog.net>
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.markdown CHANGED
@@ -29,6 +29,31 @@ You can also use the command line tool for quick queries, if you install the gem
29
29
  » feedbag https://www.ruby-lang.org/en/
30
30
  == https://www.ruby-lang.org/en/:
31
31
  - https://www.ruby-lang.org/en/feeds/news.rss
32
+
33
+
34
+ ### Usage
35
+ Feedbag will find all RSS feed types. Here's an example of finding ATOM and JSON Feed
36
+
37
+ ```ruby
38
+ > Feedbag.find('https://daringfireball.net')
39
+ => ["https://daringfireball.net/feeds/main", "https://daringfireball.net/feeds/json", "https://daringfireball.net/linked/2021/02/17/bookfeed"]
40
+ ```
41
+
42
+ Feedbag defaults to a User-Agent string of **Feedbag/1.10.2**, however you can override this
43
+
44
+ ```ruby
45
+ 0> Feedbag.find('https://kottke.org', 'User-Agent' => "My Personal Agent/1.0.1")
46
+ => ["http://feeds.kottke.org/main", "http://feeds.kottke.org/json"]
47
+ ````
48
+
49
+ The other options passed to find, will be passed to OpenURI. For example:
50
+
51
+ ```ruby
52
+ Feedbag.find("https://kottke.org", 'User-Agent' => "My Personal Agent/1.0.1", open_timeout: 1000)
53
+ ```
54
+
55
+ You can find the other options to OpenURI [here](https://rubyapi.org/o/openuri/openread#method-i-open).
56
+
32
57
 
33
58
  ### Why should you use it?
34
59
 
@@ -37,6 +62,10 @@ You can also use the command line tool for quick queries, if you install the gem
37
62
  - Because it's a single file you can embed easily in your application.
38
63
  - Because it's faster than anything else.
39
64
 
65
+ ### Web Service
66
+
67
+ Now you can also POST directly into an AWS Lambda function webservice that runs `Feedbag.find()`. Don't overuse it. It's [here](https://github.com/damog/aws-lambda-feedbag).
68
+
40
69
  ### Author
41
70
 
42
71
  [David Moreno](http://damog.net/) <[damog@damog.net](mailto:damog@damog.net)>.
data/lib/feedbag.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/ruby
2
2
 
3
- # Copyright (c) 2008-2019 David Moreno <david@axiombox.com>
3
+ # Copyright (c) 2008-2019 David Moreno <damog@damog.net>
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining
6
6
  # a copy of this software and associated documentation files (the
@@ -25,10 +25,9 @@ require "rubygems"
25
25
  require "nokogiri"
26
26
  require "open-uri"
27
27
  require "net/http"
28
- require "open_uri_redirections"
29
28
 
30
29
  class Feedbag
31
-
30
+ VERSION = '0.10.3'
32
31
  CONTENT_TYPES = [
33
32
  'application/x.atom+xml',
34
33
  'application/atom+xml',
@@ -37,18 +36,21 @@ class Feedbag
37
36
  'application/rss+xml',
38
37
  'application/rdf+xml',
39
38
  'application/json',
39
+ 'application/feed+json'
40
40
  ].freeze
41
41
 
42
42
  def self.feed?(url)
43
43
  new.feed?(url)
44
44
  end
45
45
 
46
- def self.find(url, args = {})
47
- new.find(url, args = {})
46
+ def self.find(url, options = {})
47
+ new(options: options).find(url, **options)
48
48
  end
49
49
 
50
- def initialize
50
+ def initialize(options: nil)
51
51
  @feeds = []
52
+ @options = options || {}
53
+ @options["User-Agent"] ||= "Feedbag/#{VERSION}"
52
54
  end
53
55
 
54
56
  def feed?(url)
@@ -68,7 +70,7 @@ class Feedbag
68
70
  end
69
71
  end
70
72
 
71
- def find(url, args = {})
73
+ def find(url, options = {})
72
74
  url_uri = URI.parse(url)
73
75
  url = nil
74
76
  if url_uri.scheme.nil?
@@ -97,7 +99,7 @@ class Feedbag
97
99
  end
98
100
 
99
101
  begin
100
- html = open(url, :allow_redirections => :all) do |f|
102
+ html = URI.open(url, **@options) do |f|
101
103
  content_type = f.content_type.downcase
102
104
  if content_type == "application/octet-stream" # open failed
103
105
  content_type = f.meta["content-type"].gsub(/;.*$/, '')
@@ -166,7 +168,7 @@ class Feedbag
166
168
  end
167
169
 
168
170
  def looks_like_feed?(url)
169
- if url =~ /(\.(rdf|xml|rss)(\?([\w'\-%]?(=[\w'\-%.]*)?(&|#)?)+)?(:[\w'\-%]+)?$|feed=(rss|atom)|(atom|feed)\/?$)/i
171
+ if url =~ /(\.(rdf|xml|rss)(\?([\w'\-%]?(=[\w'\-%.]*)?(&|#|\+|\;)?)+)?(:[\w'\-%]+)?$|feed=(rss|atom)|(atom|feed)\/?$)/i
170
172
  true
171
173
  else
172
174
  false
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: feedbag
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.10'
4
+ version: 0.10.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Moreno
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-01-13 00:00:00.000000000 Z
11
+ date: 2020-11-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -30,20 +30,6 @@ dependencies:
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
32
  version: 1.8.2
33
- - !ruby/object:Gem::Dependency
34
- name: open_uri_redirections
35
- requirement: !ruby/object:Gem::Requirement
36
- requirements:
37
- - - "~>"
38
- - !ruby/object:Gem::Version
39
- version: '0.2'
40
- type: :runtime
41
- prerelease: false
42
- version_requirements: !ruby/object:Gem::Requirement
43
- requirements:
44
- - - "~>"
45
- - !ruby/object:Gem::Version
46
- version: '0.2'
47
33
  - !ruby/object:Gem::Dependency
48
34
  name: shoulda
49
35
  requirement: !ruby/object:Gem::Requirement
@@ -92,6 +78,20 @@ dependencies:
92
78
  - - "~>"
93
79
  - !ruby/object:Gem::Version
94
80
  version: '3'
81
+ - !ruby/object:Gem::Dependency
82
+ name: byebug
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: '11'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - "~>"
93
+ - !ruby/object:Gem::Version
94
+ version: '11'
95
95
  description: Ruby's favorite feed auto-discovery tool
96
96
  email: damog@damog.net
97
97
  executables:
@@ -110,7 +110,7 @@ homepage: http://github.com/damog/feedbag
110
110
  licenses:
111
111
  - MIT
112
112
  metadata: {}
113
- post_install_message:
113
+ post_install_message:
114
114
  rdoc_options:
115
115
  - "--main"
116
116
  - README.markdown
@@ -127,9 +127,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
127
127
  - !ruby/object:Gem::Version
128
128
  version: '0'
129
129
  requirements: []
130
- rubyforge_project: feedbag
131
- rubygems_version: 2.6.11
132
- signing_key:
130
+ rubygems_version: 3.1.4
131
+ signing_key:
133
132
  specification_version: 4
134
133
  summary: RSS/Atom feed auto-discovery tool
135
134
  test_files: []