code: def middleware(self, middleware_or_request):
          
          # Detect which way this was called, @middleware or @middleware('AT')
          if callable(middleware_or_request):
              return self.register_middleware(middleware_or_request)
  
          else:
              return partial(
                  self.register_middleware, attach_to=middleware_or_request
              )
docs: Decorate and register middleware to be called before a request.
          Can either be called as *@app.middleware* or
          *@app.middleware('request')*
  
          :param: middleware_or_request: Optional parameter to use for
              identifying which type of middleware is being registered.