def call(env)
      request = Rack::Request.new(env)
      assign_device_type(request)

      status, headers, body = @app.call(env)

      response = Rack::Response.new(body, status, headers)
      response_callback(request, response)

      [status, headers, body]
    end
def call(env)
      request = Rack::Request.new(env)
      assign_device_type(request)

      status, headers, body = @app.call(env)

      response = Rack::Response.new(body, status, headers)
      response_callback(request, response)

      [status, headers, body]
    end
Create a new instance of this rack middleware.

 @param app Rack application that can be called.
 Perform the device type detection and call the inner Rack application.

 @param env Rack environment.
 @return rack response `[status, headers, body]`