Sha256: 3507dd1b4c08745c23415281a5cecbbbd9d7bf76320bc334e1d92dd7469aafbb

Contents?: true

Size: 835 Bytes

Versions: 1

Compression:

Stored size: 835 Bytes

Contents

module Relax
  class Action
    include Contextable

    attr_reader :name

    def initialize(endpoint, name, options, &block)
      @endpoint = endpoint
      @name = name
      @options = options

      extend_context(endpoint)
      context.evaluate(&block) if block_given?
    end

    def execute(values, credentials, *args)
      args.unshift(values) if values
      instance = Instance.new(*args)
      response = performer(instance, credentials).perform
      context.parse(response)
    end

    def method
      @options[:method] || :get
    end
    private :method

    def url
      [@endpoint.url, @options[:url]].join
    end
    private :url

    def performer(instance, credentials)
      values = instance.values(context)
      Performer.new(method, url, values, credentials)
    end
    private :performer
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
relax-0.1.0 lib/relax/action.rb