#ifndef THIRD_PARTY_MILOTIC_INTERNAL_CC_BMCWEB_ROUTER_H_
#define THIRD_PARTY_MILOTIC_INTERNAL_CC_BMCWEB_ROUTER_H_

#include <memory>

#include "dbus_utility.hpp" // NOLINT
#include "async_resp.hpp" // NOLINT
#include "http_request.hpp" // NOLINT

namespace crow {

class RouterInterface {
 public:
  RouterInterface() = default;
  RouterInterface(const RouterInterface&) = default;
  RouterInterface& operator=(const RouterInterface&) = default;
  RouterInterface(RouterInterface&&) = default;
  RouterInterface& operator=(RouterInterface&&) = default;

  virtual ~RouterInterface() = default;
  virtual void Handle(crow::Request& req,
                      const std::shared_ptr<bmcweb::AsyncResp>& async_resp) = 0;

  virtual void UpdateTlbmcOwnedUrls() {};
};

}  // namespace crow

#endif  // THIRD_PARTY_MILOTIC_INTERNAL_CC_BMCWEB_ROUTER_H_
