module GroupDocs::Signature::ResourceMethods

Envelope and template entities share the same set of resource methods.

@see GroupDocs::Signature::Envelope @see GroupDocs::Signature::Form @see GroupDocs::Signature::Template

Public Instance Methods

resources!(options = {}, access = {}) click to toggle source

Returns a list of resources.

@example

resources = GroupDocs::Signature::Envelope.resources!
resources[:documents]
#=> [#<GroupDocs::Document>]
resources[:recipients]
#=> [#<GroupDocs::Signature::Recipient>]
resources[:dates]
#=> ["2012-09-25T00:00:00.0000000"]

@param [Hash] options Hash of options @option options [Array<Integer>] :status_ids List of status identifiers to filter. Doesn’t work for template @param [Hash] access Access credentials @option access [String] :client_id @option access [String] :private_key @return [Hash]

# File lib/groupdocs/signature/shared/resource_methods.rb, line 31
def resources!(options = {}, access = {})
  class_name = self.name.split('::').last.downcase

  # filter doesn't work for template
  unless class_name == 'template'
    ids = options.delete(:status_ids)
    options[:statusIds] = ids.join(?,) if ids
  end

  api = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = "/signature/{{client_id}}/#{class_name}s/resources"
  end
  api.add_params(options)
  json = api.execute!

  resources = {}
  json.each do |key, value|
    resources[key] = case key
                     when :documents
                       value.map { |doc| Document.new(:file => Storage::File.new(doc)) }
                     when :recipients
                       value.map { |recipient| Signature::Recipient.new(recipient) }
                     else
                       value
                     end
  end

  resources
end