Sha256: d29d053209dd8c599ddfe8f4c37c6d52cf219e0baaec8abb589c77d209bf845d

Contents?: true

Size: 956 Bytes

Versions: 15

Compression:

Stored size: 956 Bytes

Contents

module PollEverywhere
  module HTTP
    autoload :RequestBuilder, 'polleverywhere/http/request_builder'
    autoload :Adapter,        'polleverywhere/http/adapter'

    # Shortcut for getting adapater instances
    def self.adapter(name, &block)
      Adapter.registry[name].new(&block)
    end
    
    # Simple HTTP request/response objects for our adapter and DSL
    class Request < Struct.new(:method, :url, :headers, :body)
      def to_curl
        case method.to_s
        when /^put|post$/i
          %(curl -X #{method.to_s.upcase} #{headers.map{|h,v| %(-H "#{h}: #{v}")}.join(" ")} -d "#{body.gsub(/[!"`'\n]/){|m| "\\#{m}" }}" "#{url}")
        when /^get$/i
          %(curl #{headers.map{|h,v| %(-H "#{h}: #{v}")}.join(" ")} "#{url}")
        else
          %(curl -X #{method.to_s.upcase} #{headers.map{|h,v| %(-H "#{h}: #{v}")}.join(" ")} "#{url}")
        end
      end
    end

    Response = Struct.new(:status, :headers, :body)
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
polleverywhere-0.0.21 lib/polleverywhere/http.rb
polleverywhere-0.0.20 lib/polleverywhere/http.rb
polleverywhere-0.0.19 lib/polleverywhere/http.rb
polleverywhere-0.0.18 lib/polleverywhere/http.rb
polleverywhere-0.0.17 lib/polleverywhere/http.rb
polleverywhere-0.0.16 lib/polleverywhere/http.rb
polleverywhere-0.0.15 lib/polleverywhere/http.rb
polleverywhere-0.0.14 lib/polleverywhere/http.rb
polleverywhere-0.0.13 lib/polleverywhere/http.rb
polleverywhere-0.0.12 lib/polleverywhere/http.rb
polleverywhere-0.0.11 lib/polleverywhere/http.rb
polleverywhere-0.0.10 lib/polleverywhere/http.rb
polleverywhere-0.0.9 lib/polleverywhere/http.rb
polleverywhere-0.0.8 lib/polleverywhere/http.rb
polleverywhere-0.0.7 lib/polleverywhere/http.rb