#ifndef seafire__resources__handle_update_hxx_
#define seafire__resources__handle_update_hxx_

#include <seafire/common/invoke.hxx>
#include <seafire/protocol/media-type.hxx>
#include <seafire/protocol/rfc7231/content-type.hxx>
#include <seafire/protocol/rfc7231/location.hxx>
#include <seafire/protocol/rfc7232/etag.hxx>
#include <seafire/protocol/rfc7232/last-modified.hxx>
#include <seafire/representation/representation.hxx>
#include <seafire/resources/concepts.hxx>
#include <seafire/resources/handle-get.hxx>
#include <seafire/resources/metadata.hxx>
#include <seafire/resources/preconditions.hxx>
#include <seafire/server/request.hxx>
#include <seafire/server/response.hxx>

#include <optional>

namespace seafire::resources
{

  template<UpdatableResource R>
  void
  handle_update(server::request_t& req,
                server::response_t& res,
                R const& resource,
                std::optional<protocol::media_type_t> const& accepted_type);

} // namespace seafire::resources

#include <seafire/resources/handle-update.txx>

#endif