Class: SimpleRSS::Discovery
- Inherits:
-
Object
- Object
- SimpleRSS::Discovery
- Defined in:
- lib/simple-rss/discovery.rb
Constant Summary collapse
- MEDIA_TYPES =
{ "application/rss+xml" => :rss, "application/rdf+xml" => :rss, "application/atom+xml" => :atom, "application/feed+json" => :json_feed, "application/json" => :json_feed }.freeze
Instance Method Summary collapse
- #discover(url) ⇒ Object
-
#initialize(options) ⇒ Discovery
constructor
A new instance of Discovery.
Constructor Details
#initialize(options) ⇒ Discovery
Returns a new instance of Discovery.
15 16 17 18 19 20 21 22 23 24 |
# File 'lib/simple-rss/discovery.rb', line 15 def initialize() @options = { network_policy: :public }.merge() require "nokogiri" @parser = Object.const_get(:Nokogiri) unless @parser.const_defined?(:HTML5) raise SimpleRSS::DiscoveryDependencyError, "Discovery requires Nokogiri HTML5 support (available on CRuby)" end rescue LoadError raise SimpleRSS::DiscoveryDependencyError, 'Install the optional "nokogiri" gem (>= 1.16, < 2) to use SimpleRSS.discover' end |
Instance Method Details
#discover(url) ⇒ Object
27 28 29 30 31 32 33 34 35 36 |
# File 'lib/simple-rss/discovery.rb', line 27 def discover(url) raise SimpleRSS::PolicyError, "Expected a website URL string" unless url.is_a?(String) url = "https:#{url}" if url.start_with?("//") url = "https://#{url}" unless url.match?(/\A[a-z][a-z\d+.-]*:/i) response, uri = SimpleRSS::HTTPClient.new(@options).get(url) raise SimpleRSS::HTTPError, response.code.to_i unless response.is_a?(Net::HTTPSuccess) candidates(response.body.to_s, uri, response.content_type, response.type_params["charset"]) end |