Sha256: da58092ed7ddcd5e2f5466c6b99f7f69a58fd9e04a5fddf33d748ab362e6bd81

Contents?: true

Size: 1.09 KB

Versions: 2

Compression:

Stored size: 1.09 KB

Contents

require "net/http"
require "uri"

module Roar
  module Representer
    module Feature
      # Implements the HTTP verbs with Net::HTTP.
      module Transport
        # TODO: generically handle return codes/let Restfulie do it.
        def get_uri(uri, as)
          do_request(Net::HTTP::Get, uri, as)
        end
        
        def post_uri(uri, body, as)
          do_request(Net::HTTP::Post, uri, as)
        end
        
        def put_uri(uri, body, as)
          do_request(Net::HTTP::Put, uri, as)
        end
        
        def patch_uri(uri, body, as)
          do_request(Net::HTTP::Patch, uri, as)
        end
        
        def delete_uri(uri, as)
          do_request(Net::HTTP::Delete, uri, as)
        end
      
      private
        def do_request(what, uri, as, body="")
          # DISCUSS: can this be made easier?
          uri   = URI.parse(uri)
          http  = Net::HTTP.new(uri.host, uri.port)
          req   = what.new(uri.request_uri)
          req.content_type  = as
          req.body          = body if body
          http.request(req)
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
roar-0.8.3 lib/roar/representer/feature/transport.rb
roar-0.8.2 lib/roar/representer/feature/transport.rb