Skip to content
/ ur Public

Ur: Unified Request/Response Representation in Ruby

License

Notifications You must be signed in to change notification settings

notEthan/ur

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ur ᚒ

Ur: Unified Request/Response Representation in Ruby

Properties

An ur primarily consists of a request, a response, and additional metadata.

The request consists of the request method, uri, headers, and body.

The response consists of the response status, headers, and body.

The metadata consist of the time the request began, the duration of the request, or tag strings. This is optional.

Other attributes may be present, and are ignored by this library.

Usage with middleware

Rack middleware:

class MyRackMiddleware
  def initialize(app)
    @app = app
  end

  def call(env)
    # do things before the request

    ur = Ur.from_rack_request(env)

    # set additional properties of the ur, for example:
    ur.logger_tags(my_logger)

    rack_response = ur.with_rack_response(@app, env) do
      # do things after the response
    end
    rack_response
  end
end

Faraday middleware:

class MyFaradayMiddleware < ::Faraday::Middleware
  def call(request_env)
    # do things before the request

    ur = Ur.from_faraday_request(request_env)

    # set additional properties of the ur, for example:
    ur.logger_tags(my_logger)

    ur.faraday_on_complete(@app, request_env) do |response_env|
      # do things after the response
    end
  end
end

License

Ur is licensed under the terms of the GNU Lesser General Public License version 3.

About

Ur: Unified Request/Response Representation in Ruby

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages