class Weneedfeed::Scraping

Public Class Methods

faraday_connection() click to toggle source

@return [Faraday::Connection]

# File lib/weneedfeed/scraping.rb, line 10
def faraday_connection
  @faraday_connection ||= ::Faraday.new do |connection|
    connection.use ::Weneedfeed::FaradayResponseMiddleware
  end
end
new( description:, item_description_selector:, item_image_selector:, item_link_selector:, item_time_selector:, item_title_selector:, item_selector:, title:, url: ) click to toggle source

@param [String, nil] description @param [String, nil] item_description_selector @param [String, nil] item_image_selector @param [String] item_link_selector @param [String, nil] item_time_selector @param [String] item_title_selector @param [String] item_selector @param [String] title @param [String] url

# File lib/weneedfeed/scraping.rb, line 26
def initialize(
  description:,
  item_description_selector:,
  item_image_selector:,
  item_link_selector:,
  item_time_selector:,
  item_title_selector:,
  item_selector:,
  title:,
  url:
)
  @description = description
  @item_description_selector = item_description_selector
  @item_image_selector = item_image_selector
  @item_link_selector = item_link_selector
  @item_time_selector = item_time_selector
  @item_title_selector = item_title_selector
  @item_selector = item_selector
  @title = title
  @url = url
end

Public Instance Methods

call() click to toggle source

@return [Weneedfeed::Page]

# File lib/weneedfeed/scraping.rb, line 49
def call
  ::Weneedfeed::Page.new(
    description: @description,
    node: parsed_body,
    item_description_selector: @item_description_selector,
    item_image_selector: @item_image_selector,
    item_selector: @item_selector,
    item_link_selector: @item_link_selector,
    item_time_selector: @item_time_selector,
    item_title_selector: @item_title_selector,
    title: @title,
    url: @url
  )
end

Private Instance Methods

parsed_body() click to toggle source

@return [Nokogiri::Node]

# File lib/weneedfeed/scraping.rb, line 67
def parsed_body
  if response.headers['Content-Type']&.include?('application/json')
    ::Nokogiri::XML.parse(response.body)
  else
    ::Nokogiri::HTML.parse(response.body)
  end
end
response() click to toggle source

@return [Faraday::Response]

# File lib/weneedfeed/scraping.rb, line 76
def response
  @response ||= self.class.faraday_connection.get(@url)
end