Sha256: 89e429864b7389c579f604efed3c082703c5504925fee46b716b2e63e2b041e5

Contents?: true

Size: 1.54 KB

Versions: 4

Compression:

Stored size: 1.54 KB

Contents

module Onebox
  module Helpers
    def self.symbolize_keys(hash)
      return {} if hash.nil?

      hash.inject({}){|result, (key, value)|
        new_key = case key
                  when String then key.to_sym
                  else key
                  end
        new_value = case value
                    when Hash then symbolize_keys(value)
                    else value
                    end
        result[new_key] = new_value
        result
      }
    end

    def self.clean(html)
      html.gsub(/<[^>]+>/, ' ').gsub(/\n/, '')
    end

    def self.fetch_response(location, limit = 5, domain = nil, headers = nil)
      raise Net::HTTPError.new('HTTP redirect too deep', location) if limit == 0

      uri = URI(location)
      if !uri.host
        uri = URI("#{domain}#{location}")
      end
      http = Net::HTTP.new(uri.host, uri.port)
      http.open_timeout = Onebox.options.connect_timeout
      http.read_timeout = Onebox.options.timeout
      if uri.is_a?(URI::HTTPS)
        http.use_ssl = true
        http.verify_mode = OpenSSL::SSL::VERIFY_NONE
      end

      response = http.request_get(uri.request_uri,headers)

      cookie = response.get_fields('set-cookie')
      if (cookie)
        header = {'cookie' => cookie.join("")}
      end
      header = nil unless header.is_a? Hash

      case response
        when Net::HTTPSuccess     then response
        when Net::HTTPRedirection then fetch_response(response['location'], limit - 1, "#{uri.scheme}://#{uri.host}",header)
        else
          response.error!
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
onebox-1.5.16 lib/onebox/helpers.rb
onebox-1.5.14 lib/onebox/helpers.rb
onebox-1.5.13 lib/onebox/helpers.rb
onebox-1.5.12 lib/onebox/helpers.rb