Sha256: 04bbfae194e18db59b9f94fbf023dea8d050c4c56bb580f14e9dae0a5c3962c7

Contents?: true

Size: 1.06 KB

Versions: 29

Compression:

Stored size: 1.06 KB

Contents

module Praxis

  class ResponseTemplate
    attr_reader :name, :block

    def initialize(response_name, &block)
      @name = response_name
      @block = block
    end

    def compile(action=nil, **args)
      # Default media_type to the resource_definition one, if the block has it in
      # its required args but no value is passed (funky, but can help in the common case)
      if block.parameters.any? { |(type, name)| name == :media_type && type == :keyreq } && action
        unless args.has_key? :media_type
          media_type = action.resource_definition.media_type
          unless media_type
            raise Exceptions::InvalidConfiguration.new(
              "Could not default :media_type argument for response template #{@name}." +
               " Resource #{action.resource_definition} does not have an associated mediatype and none was passed"
            )
          end
          args[:media_type] = media_type
        end
      end
      Praxis::ResponseDefinition.new(name, **args, &block)   
    end

    def describe
      puts "TODO!!!!!!"
    end
  end

end

Version data entries

29 entries across 29 versions & 1 rubygems

Version Path
praxis-2.0.pre.9 lib/praxis/response_template.rb
praxis-2.0.pre.8 lib/praxis/response_template.rb
praxis-2.0.pre.7 lib/praxis/response_template.rb
praxis-2.0.pre.6 lib/praxis/response_template.rb
praxis-2.0.pre.5 lib/praxis/response_template.rb
praxis-2.0.pre.4 lib/praxis/response_template.rb
praxis-2.0.pre.3 lib/praxis/response_template.rb
praxis-2.0.pre.2 lib/praxis/response_template.rb
praxis-2.0.pre.1 lib/praxis/response_template.rb
praxis-0.21 lib/praxis/response_template.rb
praxis-0.20.1 lib/praxis/response_template.rb
praxis-0.20.0 lib/praxis/response_template.rb
praxis-0.19.0 lib/praxis/response_template.rb
praxis-0.18.1 lib/praxis/response_template.rb
praxis-0.18.0 lib/praxis/response_template.rb
praxis-0.17.1 lib/praxis/response_template.rb
praxis-0.17.0 lib/praxis/response_template.rb
praxis-0.16.1 lib/praxis/response_template.rb
praxis-0.16.0 lib/praxis/response_template.rb
praxis-0.15.0 lib/praxis/response_template.rb