45 lines
713 B
Ruby
45 lines
713 B
Ruby
# require "pry"
|
|
# require "colorize"
|
|
# require "yaml"
|
|
require "nokogiri"
|
|
require "net/http"
|
|
|
|
require_relative "./cache"
|
|
|
|
class Page
|
|
include Cache
|
|
BASE_URL = "https://www.d20pfsrd.com"
|
|
|
|
attr_accessor :uri
|
|
|
|
def initialize(uri: nil)
|
|
@uri = uri
|
|
@uri = URI.join(BASE_URL, uri) if !@uri.start_with?("https://")
|
|
end
|
|
|
|
def get
|
|
raise "No URI provided" unless @uri
|
|
uri = URI(@uri)
|
|
|
|
if uri != @page_uri
|
|
@page = cache(uri) { Net::HTTP.get(uri) }
|
|
@page_uri = uri
|
|
end
|
|
|
|
self
|
|
end
|
|
|
|
def parse
|
|
raise "Nothing to parse" unless @uri && @page
|
|
Nokogiri::HTML.parse(@page)
|
|
end
|
|
|
|
def to_ruby
|
|
raise "Not implemented"
|
|
end
|
|
|
|
def inspect
|
|
"<@uri=#{@uri}>"
|
|
end
|
|
end
|