feedbag 0.10.1 → 0.10.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README.markdown +25 -0
  3. data/lib/feedbag.rb +11 -8
  4. metadata +18 -18
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 221831541154a34ade903d403c0c546cd01d7a683c69d27dee92eadd9c6bd2be
4
- data.tar.gz: a633436162c4eb75fcb7222267d533a4bc05fa08506e55bd66865eb2b6bf29a2
3
+ metadata.gz: 90acb0f6598522043d717b5fbba5f9675408b4f06c45659416a02581d64adecb
4
+ data.tar.gz: 71077f0a64463a4cae1bb8bd6d3af48bdf2efd9afdfecc1b5041161c97e1c638
5
5
  SHA512:
6
- metadata.gz: d18f37165eb5b0d8ee2095bc6f0d0e7356b8b4247722cb02d115899664fbb97898b4d216ff52f0691c63d5c828e0ddd6c4cdc1bf61e9ae37963e19b3ee641c75
7
- data.tar.gz: 77c58a1de3a75ec6d0075d2ac98893d47a8711250fdb48259fab329e846424532ebb3858bef3f5923f18a2b75a029da52e7eb5cb144d26b4964bf6f0f09d843a
6
+ metadata.gz: faa0ef3f90c3fb9d73f6f64253f6a3e7a3ecc4be7220017277a2c8d598b82ec09209b85cfcc39077925fd801e8034e98835a4514d1a8cc899d63a65c2a8c254c
7
+ data.tar.gz: 31ec8d217ac7b30f6180ac3c9447ef3f79cdb8a2baea2aee9d1e96dc203d7366af2ae494287fb4cc8291c57a7aa0537bcb677c5db2ae639d8da62990985e1cd0
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
 
data/lib/feedbag.rb CHANGED
@@ -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.2'
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 = URI.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,8 @@ 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
+ puts url
172
+ if url =~ /(\.(rdf|xml|rss)(\?([\w'\-%]?(=[\w'\-%.]*)?(&|#|\+|\;)?)+)?(:[\w'\-%]+)?$|feed=(rss|atom)|(atom|feed)\/?$)/i
170
173
  true
171
174
  else
172
175
  false
metadata CHANGED
@@ -1,11 +1,11 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: feedbag
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.1
4
+ version: 0.10.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Moreno
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
  date: 2020-11-28 00:00:00.000000000 Z
@@ -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
@@ -128,7 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
128
128
  version: '0'
129
129
  requirements: []
130
130
  rubygems_version: 3.1.4
131
- signing_key:
131
+ signing_key:
132
132
  specification_version: 4
133
133
  summary: RSS/Atom feed auto-discovery tool
134
134
  test_files: []