Module: Acfs::Resource::Locatable::ClassMethods

Defined in:
lib/acfs/resource/locatable.rb

Instance Method Summary collapse

Instance Method Details

#location(**opts) ⇒ Location

Return a location object able to build the URL for this resource and given action.

Examples:

class Identity < ::Acfs::Resource
  service MyService, path: 'users/:user_id/identities'
end

location = Identity.location(action: :read)
location.arguments
=> [:user_id, :id]

location.raw_url
=> 'http://service/users/:user_id/identities/:id'

location = Identity.location(action: :list)
location.arguments
=> [:user_id]

location.build(user_id: 42)
=> 'http://service/users/42/identities'

Parameters:

  • opts (Hash)

    Options.

Options Hash (**opts):

  • :action (Symbol)

    Operation action, usually `:list`, `:create`, `:read`, `:update` or`:delete`.

Returns:



87
88
89
# File 'lib/acfs/resource/locatable.rb', line 87

def location(**opts)
  service.location(self, **opts)
end

#location_default_path(action, path) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



92
93
94
95
96
97
98
99
# File 'lib/acfs/resource/locatable.rb', line 92

def location_default_path(action, path)
  case action
    when :list, :create
      path
    when :read, :update, :delete
      "#{path}/:id"
  end
end

#url(suffix) ⇒ String #url(opts = {}) ⇒ String

Overloads:

  • #url(suffix) ⇒ String
    Deprecated.

    Return URL for this class of resource. Given suffix will be appended.

    Examples:

    User.url    # => "http://users.srv.org/users"
    User.url(5) # => "http://users.srv.org/users/5"

    Parameters:

    • suffix (String)

      Suffix to append to URL.

    Returns:

  • #url(opts = {}) ⇒ String

    Return URL for this class of resources. Given options will be used to replace URL path arguments and to determine the operation action.

    Examples:

    User.url(id: 5, action: :read) # => "http://users.srv.org/users/5"
    User.url(action: :list) # => "http://users.srv.org/users"

    Parameters:

    • opts (Hash) (defaults to: {})

      Options.

    Options Hash (opts):

    • :action (Symbol)

      Operation action, usually `:list`, `:create`, `:read`, `:update` or`:delete`.

    Returns:



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/acfs/resource/locatable.rb', line 43

def url(suffix = nil, **opts)
  if suffix.is_a? Hash
    opts = suffix
    suffix = nil
  end

  kwargs = {}
  kwargs[:path] = opts[:path] if opts.key?(:path)
  kwargs[:action] = opts.delete(:action) if opts.key?(:action)
  kwargs[:action] = :list if suffix

  url  = location(**kwargs).build(opts.stringify_keys).str
  url += "/#{suffix}" if suffix.to_s.present?
  url
end