Sha256: 6377415b6e2eaa68286518147ec040204c8812024777ff7c94de1b4c4aed7ef2

Contents?: true

Size: 754 Bytes

Versions: 2

Compression:

Stored size: 754 Bytes

Contents

# Proxy class for simplified more user friendly render
#
# UserApi.render.login(123, foo: 'bar') -> UserApi.render :login, id: 133, params: { foo: 'bar' }
# 
# spec/tests/proxy_spec.rb
# UserApi.render.login(user: 'foo', pass: 'bar')
# CompanyApi.render.show(1)

class Joshua
  class RenderProxy
    def initialize api
      @api = api
    end

    def method_missing method_name, *args
      # if first param present, it must be resource ID
      api_id = args.shift unless args.first.is_a?(Hash)

      # convinience, second param is params hash, options follw
      params, opts = [args[0], args[1] || {}]
      
      # merge id and params to options
      opts.merge! params: params, id: api_id

      @api.render method_name, opts
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
joshua-0.2.7 ./lib/joshua/render_proxy.rb
joshua-0.2.4 ./lib/joshua/render_proxy.rb