Sha256: 30816ebbf9149836fbf047665180258acacb4e9df1afaaf8079cdaee8b4e8924

Contents?: true

Size: 1.37 KB

Versions: 77

Compression:

Stored size: 1.37 KB

Contents

module RunLoop
  module HTTP

    # A representation of an HTTP request that can be passed passed to the HTTP
    # client as an argument for `get` or `post`.
    # @!visibility private
    class Request
      attr_reader :route, :params

      def initialize(route, params={})
        @route = route
        @params = params
      end

      # Create a new Request from `route` and `parameters`.
      #
      # @param [String] route The http route for the new request.
      # @param [Array, Hash] parameters An Array or Hash of parameters.
      # @return [Request] A new Request for `route` with `parameters`.
      # @raise [RequestError] Raises an error if the parameters cannot be
      #   converted to JSON
      def self.request(route, parameters)
        Request.new(route, Request.data(parameters))
      end

      private

      # Converts `parameters` to JSON.
      #
      # @param [Array, Hash] parameters An Array or Hash of parameters.
      # @return [String] A JSON formatted string that represents the parameters.
      # @raise [RequestError] Raises an error if the parameters cannot be
      #   converted to JSON
      def self.data(parameters)
        begin
          JSON.generate(parameters)
        rescue *[TypeError, JSON::GeneratorError] => e
          raise RequestError, "#{e}: could not generate JSON from '#{parameters}'"
        end
      end
    end
  end
end

Version data entries

77 entries across 77 versions & 2 rubygems

Version Path
run_loop-4.9.1 lib/run_loop/http/request.rb
run_loop-4.9.0 lib/run_loop/http/request.rb
run_loop-4.8.1 lib/run_loop/http/request.rb
run_loop-4.8.0 lib/run_loop/http/request.rb
run_loop-4.7.0 lib/run_loop/http/request.rb
run_loop-4.6.3 lib/run_loop/http/request.rb
run_loop-4.6.1 lib/run_loop/http/request.rb
run_loop-4.6.0 lib/run_loop/http/request.rb
run_loop-4.5.7 lib/run_loop/http/request.rb
run_loop-4.5.6 lib/run_loop/http/request.rb
run_loop-4.5.5 lib/run_loop/http/request.rb
run_loop-4.5.4 lib/run_loop/http/request.rb
run_loop-4.5.3 lib/run_loop/http/request.rb
run_loop-4.5.2 lib/run_loop/http/request.rb
run_loop-4.5.1 lib/run_loop/http/request.rb
run_loop-4.5.0 lib/run_loop/http/request.rb
run_loop-4.4.2 lib/run_loop/http/request.rb
run_loop-4.4.1 lib/run_loop/http/request.rb
run_loop-2.3.2 lib/run_loop/http/request.rb
run_loop-4.3.0 lib/run_loop/http/request.rb