class Apist::Method
Attributes
blueprint[R]
content[R]
crawler[R]
method[RW]
resource[R]
url[R]
Public Class Methods
new(resource, url, blueprint)
click to toggle source
@param [Apist] resource @param [String] url
# File lib/apist/method.rb, line 17 def initialize(resource, url, blueprint) @resource = resource @url = url @blueprint = blueprint end
Public Instance Methods
get(options)
click to toggle source
# File lib/apist/method.rb, line 23 def get(options) begin make_request options parse_blueprint @blueprint rescue Apist::Error::Http => e error_response e.code, e.reason, e.url rescue SocketError => e error_response 0, e.message, @url end end
make_request(options = {})
click to toggle source
# File lib/apist/method.rb, line 34 def make_request(options = {}) @content = @resource.requester.class.send method, @url, options if @content.code != 200 code = @content.code message = @content.response.message url = @content.request.last_uri.to_s raise Apist::Error::Http.new(code, message, url) end store_cookies set_content @content.body end
parse_blueprint(blueprint, node = nil)
click to toggle source
# File lib/apist/method.rb, line 57 def parse_blueprint(blueprint, node = nil) return @content if blueprint.nil? return parse_blueprint_value(blueprint, node) unless blueprint.is_a? Hash blueprint.each do |key, value| if value.is_a? Hash blueprint[key] = parse_blueprint value.clone, node else blueprint[key] = parse_blueprint_value value, node end end blueprint end
set_content(content)
click to toggle source
# File lib/apist/method.rb, line 53 def set_content(content) @crawler = Nokogiri::HTML content end
Private Instance Methods
error_response(code, reason, url)
click to toggle source
# File lib/apist/method.rb, line 77 def error_response(code, reason, url) { url: url, error: { status: code, reason: reason } } end
parse_blueprint_value(value, node)
click to toggle source
# File lib/apist/method.rb, line 72 def parse_blueprint_value(value, node) return value.get_value(self, node) if value.is_a? Apist::Selector return value end