class RubyGemReader

Attributes

uri[R]

Public Class Methods

new(uri) click to toggle source
# File support.rb, line 8
def initialize(uri)
  @connection = nil
  @uri = uri.kind_of?(URI::Generic) ? uri : URI(uri.to_s)
end

Public Instance Methods

get(path, data={}, content_type='application/x-www-form-urlencoded') click to toggle source

May raise SourceUnavailableError if the source can’t be accessed

# File support.rb, line 14
def get(path, data={}, content_type='application/x-www-form-urlencoded')
  begin
    request = Net::HTTP::Get.new(path)
    request.add_field 'Connection', 'keep-alive'
    request.add_field 'Keep-Alive', '30'
    request.add_field 'User-Agent', 'github.com/jonathannen/gemfresh'
    response = connection.request request
    response.body  
  rescue StandardError => se
    # For now we assume this is an unavailable repo
    raise SourceUnavailableError.new(se.message)
  end
end

Private Instance Methods

connection() click to toggle source

A persistent connection

# File support.rb, line 30
def connection
  return @connection unless @connection.nil?
  @connection = Net::HTTP.new self.uri.host, self.uri.port
  @connection.use_ssl = (uri.scheme == 'https')
  @connection.start 
  @connection
end