Module: WebPackage

Defined in:
lib/web_package/cbor.rb,
lib/web_package/mice.rb,
lib/web_package/signer.rb,
lib/web_package/helpers.rb,
lib/web_package/version.rb,
lib/web_package/settings.rb,
lib/web_package/middleware.rb,
lib/web_package/inner_response.rb,
lib/web_package/configuration_hash.rb,
lib/web_package/signed_http_exchange.rb,
lib/web_package/errors/body_encoding_error.rb

Defined Under Namespace

Modules: Errors, Helpers Classes: CBOR, ConfigurationHash, InnerResponse, MICE, Middleware, SignedHttpExchange, Signer

Constant Summary collapse

VERSION =
'0.3.0'.freeze
OPTIONS =
%i[headers expires_in sub_extension filter cert_url cert_path priv_path].freeze
ENV_KEYS =
Set.new(%w[SXG_CERT_URL SXG_CERT_PATH SXG_PRIV_PATH]).freeze
DEFAULTS =
{
  headers: { 'Content-Type'           => 'application/signed-exchange;v=b3',
             'Cache-Control'          => 'no-transform',
             'X-Content-Type-Options' => 'nosniff' },
  expires_in:    60 * 60 * 24 * 7, # 7.days
  sub_extension: nil, # proxy as default format (html)
  filter: ->(_env) { true } # all requests are permitted
}.freeze
Settings =
ConfigurationHash.new(OPTIONS) do |config, key|
  env_key = "SXG_#{key.upcase}"
  config[key] = ENV.fetch env_key if ENV_KEYS.include? env_key
end.tap { |config| config.merge! DEFAULTS }
SXG_EXT =
'.sxg'.freeze
SXG_FLAG =
'web_package.sxg'.freeze