module Tiller::HttpCommon

Public Instance Methods

get_uri(uri, interpolate={}) click to toggle source

Interpolate the placeholders and return content from a URI

# File lib/tiller/http.rb, line 45
def get_uri(uri, interpolate={})
  uri.gsub!('%e', Tiller::config[:environment])
  uri.gsub!('%t', interpolate[:template]) if interpolate[:template]

  Tiller::log.debug("HTTP: Fetching #{uri}")
  resp = @client.get(uri, :follow_redirect => true)
  raise "HTTP: Server responded with status #{resp.status} for #{uri}" if resp.status != 200
  resp.body
end
parse(content) click to toggle source

Wrap parsing here, so we can implement XML and other parsers later

# File lib/tiller/http.rb, line 57
def parse(content)
  case @http_config['parser']
    when 'json'
      Tiller::log.debug("HTTP: Using JSON parser")
      JSON.parse(content)
    else
      raise "HTTP: Unsupported parser '#{@http_config['parser']}'"
  end
end
setup() click to toggle source
# File lib/tiller/http.rb, line 11
def setup
  # Set our defaults if not specified
  @http_config = Tiller::Http.defaults

  unless Tiller::config.has_key?('http')
    Tiller::log.info('No HTTP configuration block for this environment')
    return
  end

  @http_config.merge!(Tiller::config['http'])

  # Sanity check
  ['uri'].each {|c| raise "HTTP: Missing HTTP configuration #{c}" unless @http_config.has_key?(c)}

  # Create the client used for all requests
  @client = HTTPClient.new(@http_config['proxy'])

  # Basic auth for resource
  if @http_config.has_key?('username')
    Tiller::log.debug('HTTP: Using basic authentication')
    raise 'HTTP: Missing password for authentication' unless @http_config.has_key?('password')
    @client.set_auth(nil, @http_config['username'], @http_config['password'])
  end

  # Basic auth for proxy
  if @http_config.has_key?('proxy_username')
    Tiller::log.debug('HTTP: Using proxy basic authentication')
    raise 'HTTP: Missing password for proxy authentication' unless @http_config.has_key?('proxy_password')
    @client.set_proxy_auth(@http_config['proxy_username'], @http_config['proxy_password'])
  end
end