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
store_cookies() click to toggle source
# File lib/apist/method.rb, line 46
def store_cookies
  cookie = @content.headers['Set-Cookie']
  unless cookie.nil?
    @resource.requester.class.default_cookies.add_cookies cookie
  end
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