Sha256: 20ab8a8ddd3cb765850ca453627e3537e274fbbc057d0f58cc2e4a08bd4c27d3
Contents?: true
Size: 1.26 KB
Versions: 1
Compression:
Stored size: 1.26 KB
Contents
# frozen_string_literal: true require 'forwardable' class Roda module Endpoints # Generic HTTP endpoint abstraction. class Endpoint # Accessing data inside of endpoint. module Verbs extend Forwardable # @param [<Symbol>] only # @param [<Symbol>] except # @param attributes [{Symbol=>Object}] def initialize(only: implemented_verbs, except: [], **attributes) only = Array(only).flatten except = Array(except).flatten if ((unknown_only = only - implemented_verbs) + (unknown_except = except - implemented_verbs)).any? params = { only: unknown_only, except: unknown_except } raise ArgumentError, "unknown verbs in params: #{params}" end @verbs = only - except super(**attributes) end # @return [<Symbol>] def implemented_verbs self.class.verbs.to_a end # @return [<Symbol>] attr_reader :verbs def verb(name, **kwargs, &block) key = "operations.#{ns}.#{name}" container.register key, &block singleton_class.verb(name, **kwargs, &container[key]) end def_delegator :singleton_class, :verb end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
roda-endpoints-0.1.0 | lib/roda/endpoints/endpoint/verbs.rb |