module Universign::Service::Transaction::ClassMethods

Public Instance Methods

create(documents:, signers:, options: {}) click to toggle source

Signs a document

@param [Array<Universign::Document>] documents Documents to sign @param [Array<Universign::SignerTransaction>] signers @param [Hash] options @option options: [String] :custom_id Custom ID of the document @option options: [String] :description Description of the signature @option options: [String] :handwritten_signature_mode Type of signature @option options: [String] :certificate_type Type of certificate @option options: [String] :language Document's language @option options: [String] :identification_type @option options: [Boolean] :handwritten_signature @option options: [String] :profile @option options: [Boolean] :final_doc_sent @option options: [Boolean] :final_doc_requester_sent

@raise [ArgumentError] Raised if unknown_key passed in options

@return [Universign::Transaction]

# File lib/universign/service/transaction.rb, line 61
def create(documents:, signers:, options: {})
  @client = Universign::Client.new

  sign_options = DEFAULT_OPTIONS.merge(
    documents: documents.map(&:params),
    signers:   signers.map(&:params),
  )

  options.each do |key, value|
    known_key = AVAILABLE_OPTIONS[key]

    if known_key
      sign_options[known_key] = value
    else
      raise "Unknown Key"
    end
  end

  safeguard do
    result = @client.call("requester.requestTransaction", sign_options)
    Universign::Transaction.new(result['id'], result['url'])
  end
end