Sha256: d657e5b1da75a09886f53773d0ed62560a6b419f47fe6001f236ec4bca927d0e
Contents?: true
Size: 1.11 KB
Versions: 2
Compression:
Stored size: 1.11 KB
Contents
require 'uri' require 'curb' module Parsable class Remote # uses the response from a remote location attr_accessor :secure def initialize options={} self.secure = options.fetch(:secure, false) end def method_missing(method_sym, *arguments, &block) if uri = uri?(method_sym) get_response(uri) end end private def perform url, headers={} begin Curl::Easy.perform(url) do |http| headers.each { |header, value| http.headers[header] = value } http.connect_timeout = 2 http.on_success { |easy| @body = easy.body_str } end rescue Curl::Err::CurlError end end def get_response uri transformer = Parsable::UriHelper.new(uri) url = transformer.to_s headers = transformer.secrets 0.upto(2) do |i| perform(url, headers) break if @body end @body end def uri? string uri = URI.parse(string) if uri && uri.kind_of?(URI::HTTP) uri else false end rescue URI::InvalidURIError false end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
parsable-0.2.2 | lib/parsable/remote.rb |
parsable-0.2.1 | lib/parsable/remote.rb |