Sha256: 693c14c8f1148de0897ed0be6d0e486d49d56b6305f7b0109517c10b30aa702d

Contents?: true

Size: 1.44 KB

Versions: 2

Compression:

Stored size: 1.44 KB

Contents

# frozen_string_literal: true

require 'faraday'
require 'nokogiri'

module Weneedfeed
  class Scraping
    # @param [String, nil] item_description_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
    def initialize(
      item_description_selector:,
      item_link_selector:,
      item_time_selector:,
      item_title_selector:,
      item_selector:,
      title:,
      url:
    )
      @item_description_selector = item_description_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

    # @return [Weneedfeed::Page]
    def call
      ::Weneedfeed::Page.new(
        node: parsed_body,
        item_description_selector: @item_description_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

    # @return [Nokogiri::Node]
    def parsed_body
      ::Nokogiri::HTML.parse(response.body)
    end

    # @return [Faraday::Response]
    def response
      ::Faraday.get(@url)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
weneedfeed-0.6.1 lib/weneedfeed/scraping.rb
weneedfeed-0.6.0 lib/weneedfeed/scraping.rb