Sha256: 699b4c0540a6e820af460e8e144447a931634f6d97e652f033dbe3f2eca19358

Contents?: true

Size: 1.15 KB

Versions: 2

Compression:

Stored size: 1.15 KB

Contents

require 'open-uri'
require 'nokogiri'

require_relative './parser'
require_relative './recipe'

module Epilicious
  class Fetcher
    attr_reader :recipes

    def initialize
      @recipes ||= []
      @base_url = "http://www.epicurious.com"
    end

    def fetch_recipes(index_url = default_index_url)
      recipes_page = fetch_page(index_url)
      recipes_urls = parser.parse_recipes_page(recipes_page)
      recipes = recipes_urls.map do |url|
        fetch_recipe(url)
      end
      recipes
    end 

    def fetch_recipe(url = default_recipe_url)
      recipe_page = fetch_page(url)
      recipe = parser.parse_recipe_page(recipe_page)
      Recipe.new(recipe)
    end
    
    private

    def fetch_page(url)
      Nokogiri::HTML(open(@base_url + url))
    end


    def default_index_url
      "/articlesguides/bestof/toprecipes/bestburgerrecipes"
    end

    def default_recipe_url
      "/articlesguides/bestof/toprecipes/bestburgerrecipes/recipes/food/views/Grilled-Turkey-Burgers-with-Cheddar-and-Smoky-Aioli-354289"
    end

    def parser
      @parser ||= Parser.new
    end
  end
end



class Recipe
  def initialize(args)
    @name = args[:name]
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
epilicious-0.1.2 lib/epilicious/fetcher.rb
epilicious-0.1.1 lib/epilicious/fetcher.rb