Sha256: b7d3a7962d87917a01bc80a047c486e6447afc2d1d1fec4661cf9583675ece38

Contents?: true

Size: 922 Bytes

Versions: 1

Compression:

Stored size: 922 Bytes

Contents

require 'active_support/core_ext/string'

module ApipieBindings

  class Resource

    attr_reader :name

    def initialize(name, api)
      raise NameError.new("Resource '#{name}' does not exist in the API") unless api.apidoc[:docs][:resources].key?(name)
      @name = name
      @api = api
    end

    def call(action, params={}, headers={}, options={})
      @api.call(@name, action, params, headers, options)
    end

    def apidoc
      @api.apidoc[:docs][:resources][@name]
    end

    def actions
      apidoc[:methods].map { |a| action(a[:name].to_sym) }
    end

    def has_action?(name)
      apidoc[:methods].any? { |action| action[:name].to_sym == name }
    end

    def action(name)
      ApipieBindings::Action.new(@name, name, @api)
    end

    def singular_name
      @name.to_s.singularize
    end

    def to_s
      "<Resource :#{@name}>"
    end

    def inspect
      to_s
    end

  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
apipie-bindings-0.0.1 lib/apipie_bindings/resource.rb