module Roda::RodaPlugins::SecFetchSiteCsrf

def self.configure(app, opts=OPTS, &block)

def self.configure(app, opts=OPTS, &block)
  options = app.opts[:sec_fetch_site_csrf] = (app.opts[:sec_fetch_site_csrf] || DEFAULTS).merge(opts)
  allowed_values = options[:allowed_values] = ["same-origin"]
  allowed_values << "same-site" if opts[:allow_same_site]
  allowed_values << "none" if opts[:allow_none]
  allowed_values << nil if opts[:allow_missing]
  allowed_values.freeze
  if block
    options[:csrf_failure] = :method
    app.define_roda_method(:_roda_sec_fetch_site_csrf_failure, 1, &app.send(:convert_route_block, block))
  end
  case options[:csrf_failure]
  when :raise, :empty_403, :clear_session, :method
    # nothing
  else
    raise RodaError, "Unsupported :csrf_failure plugin option: #{options[:csrf_failure].inspect}"
  end
  options.freeze
end