Sha256: cc67fe1cbe8595510c1b8fe007b9f6b98ed90ea51102125f7ed7c39bcb2e905c

Contents?: true

Size: 1.2 KB

Versions: 25

Compression:

Stored size: 1.2 KB

Contents

module MxHero
  module API
    module Communication
      
      # Make a HTTP call 
      # @param method [Symbol] indicate the HTTP verb (:get, :post, :put, etc)
      # @param url [String]
      # @param body [String] (default: nil)
      # @param [Hash] more_options
      # @option more_options [Boolean] :throw_exception (default: true) throw exception if the response status are between 500 and 600
      def call(method, url, body = nil, more_options = {})
        unless @client
          @client ||= HTTPClient.new
        end
        @client.set_auth(url, @username, @password)
        response = @client.request(method, url, nil, body, headers)
        raise "Unauthorized" if response.status == 401
        unless more_options[:throw_exception] == false
          raise "An error ocurred when try to communicate with the API\nError: #{response.inspect}" if (500..600).include?(response.status)
        end
        response
      end

      # Default headers
      def headers
        @headers ||= { 'Accept' => 'application/json', 'Content-Type' => 'application/json' }
      end
      
      # @return [Hash]
      def json_parse(json)
        JSON.parse(json, symbolize_names: true)
      end

    end
  end
end

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
mxhero-api-1.1.1 lib/communication.rb
mxhero-api-1.1.0 lib/communication.rb
mxhero-api-1.0.5 lib/communication.rb
mxhero-api-1.0.4 lib/communication.rb
mxhero-api-1.0.3 lib/communication.rb
mxhero-api-1.0.2 lib/communication.rb
mxhero-api-1.0.1 lib/communication.rb
mxhero-api-1.0.0 lib/communication.rb
mxhero-api-0.1.56 lib/communication.rb
mxhero-api-0.1.55 lib/communication.rb
mxhero-api-0.1.54 lib/communication.rb
mxhero-api-0.1.53 lib/communication.rb
mxhero-api-0.1.52 lib/communication.rb
mxhero-api-0.1.42 lib/communication.rb
mxhero-api-0.1.41 lib/communication.rb
mxhero-api-0.1.40 lib/communication.rb
mxhero-api-0.1.39 lib/communication.rb
mxhero-api-0.1.38 lib/communication.rb
mxhero-api-0.1.37 lib/communication.rb
mxhero-api-0.1.36 lib/communication.rb