Sha256: 4bf2e3a96a09fc67907076b148cb1ff6c9444fb4ecbe4c5e12d09c49fd0cd0b9

Contents?: true

Size: 1.29 KB

Versions: 3

Compression:

Stored size: 1.29 KB

Contents

require "net/http"

module Auger

  class Project
    def http(port = 80, &block)
      @connections << Http.load(port, &block)
    end
    
    def https(port = 443, &block)
      http = Http.load(port, &block)
      http.ssl(true)
      @connections << http
    end

  end

  class Http < Auger::Connection
    def get(url, &block)
      @url = url
      @requests << Auger::HttpRequest.load(url, &block)
    end

    def open(host, options)
      http = Net::HTTP.new(host, options[:port])
      http.use_ssl = options[:ssl]
      http.verify_mode = OpenSSL::SSL::VERIFY_NONE if options[:insecure]
      http.open_timeout = options[:timeout]
      http.read_timeout = options[:timeout]
      http.start
      http
    end

    def close(http)
      http.finish
    end

  end

  class HttpRequest < Auger::Request
    attr_accessor :headers, :user, :password

    def initialize(url)
      @headers = {}
      super
    end

    def header(h)
      key, value = h.split /\s*:\s*/
      @headers[key] = value
    end

    def user(user)
      @user = user
    end

    def password(password)
      @password = password
    end

    def run(http)
      get = Net::HTTP::Get.new(@arg)
      get.basic_auth(@user, @password||'') if @user
      @headers.each { |k,v| get[k] = v }
      http.request(get)
    end

  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
auger-1.3.1 lib/plugins/http.rb
auger-1.3.0 lib/plugins/http.rb
auger-1.2.4 lib/plugins/http.rb