Sha256: 6b841459a76db0af1bb74b14b32a17e4bd44dcdef73c2d68817fd07fbf6f3115

Contents?: true

Size: 1.73 KB

Versions: 23

Compression:

Stored size: 1.73 KB

Contents

require 'net/http'
require 'addressable/uri'

module Unimatrix

  class Request

    def initialize( default_parameters = {} )
      uri   = URI( Unimatrix.configuration.url )
      @http = Net::HTTP.new( uri.host, uri.port )

      @http.use_ssl = ( uri.scheme == 'https' )
      @http.verify_mode = OpenSSL::SSL::VERIFY_NONE

      @default_parameters = default_parameters.stringify_keys
    end

    def destroy( path, parameters = {} )

      begin
        request = Net::HTTP::Delete.new(
          compose_request_path( path, parameters ),
          { 'Content-Type' =>'application/json' }
        )
        response = Response.new( @http.request( request ) )
      rescue Timeout::Error
        response = nil
      end

      response
    end

    def get( path, parameters = {} )
      response = nil

      begin
        response = Response.new(
          @http.get( compose_request_path( path, parameters ) )
        )
      rescue Timeout::Error
        response = nil
      end

      response
    end

    def post( path, parameters = {}, body = {} )
      response = nil

      begin
        request = Net::HTTP::Post.new(
          compose_request_path( path, parameters ),
          { 'Content-Type' =>'application/json' }
        )
        request.body = body.to_json

        response = Response.new( @http.request( request ) )
      rescue Timeout::Error
        response = nil
      end

      response
    end

    protected; def compose_request_path( path, parameters = {} )
      parameters        = @default_parameters.merge( parameters.stringify_keys )
      addressable       = Addressable::URI.new

      addressable.path  = path
      addressable.query = parameters.to_param unless parameters.blank?

      addressable.to_s
    end

  end

end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
unimatrix-2.8.0 lib/unimatrix/request.rb
unimatrix-2.7.1 lib/unimatrix/request.rb
unimatrix-2.7.0 lib/unimatrix/request.rb
unimatrix-2.6.1 lib/unimatrix/request.rb
unimatrix-2.6.0 lib/unimatrix/request.rb
unimatrix-2.5.5 lib/unimatrix/request.rb
unimatrix-2.5.4 lib/unimatrix/request.rb
unimatrix-2.5.3 lib/unimatrix/request.rb
unimatrix-2.5.2 lib/unimatrix/request.rb
unimatrix-2.5.1 lib/unimatrix/request.rb
unimatrix-2.5.0 lib/unimatrix/request.rb
unimatrix-2.4.2 lib/unimatrix/request.rb
unimatrix-2.3.1 lib/unimatrix/request.rb
unimatrix-2.2.1 lib/unimatrix/request.rb
unimatrix-2.1.1 lib/unimatrix/request.rb
unimatrix-2.0.1 lib/unimatrix/request.rb
unimatrix-2.0.0 lib/unimatrix/request.rb
unimatrix-1.4.3 lib/unimatrix/request.rb
unimatrix-1.4.1 lib/unimatrix/request.rb
unimatrix-1.4.0 lib/unimatrix/request.rb