envelope-sample.rb | |
---|---|
GET request | get '/envelope-sample' do
haml :envelope_sample
end
|
POST request to handle callback when document was signed |
post '/envelope-sample/sign' do
|
Content Type of callback is application/json |
data = JSON.parse(request.body.read)
begin
raise 'Empty params!' if data.empty?
|
create empty file and write data as "key: value" to it |
out_file = File.new('signed', 'w')
data.each do |key, value|
out_file.write("#{key}: #{value} \n")
end
out_file.close
rescue Exception => e
err = e.message
end
end
|
POST request to handle callback and download envelop when document was signed |
post '/envelope-sample/sign-and-download' do
data = JSON.parse(request.body.read)
begin
raise 'Empty params!' if data.empty?
GroupDocs.configure do |groupdocs|
groupdocs.client_id = '' # Your client Client ID here
groupdocs.private_key = '' # Your API Key here
groupdocs.api_server = 'https://api.groupdocs.com'
end
data.each do |key, value|
if key == 'SourceId'
|
Create envelop with id and name as SourceId parameter from callback |
envelope = GroupDocs::Signature::Envelope.new id: value,
name: value
|
download signed documents as archive |
envelope.signed_documents! '.'
end
end
rescue Exception => e
err = e.message
end
end
|
GET request to check if envelop was signed |
get '/envelope-sample/check' do
if File.exist?('signed')
File.readlines('signed').each do |line|
end
else
'Have not signed yet'
end
end
|
POST request |
post '/envelope-sample' do
set :client_id, params[:client_id]
set :private_key, params[:private_key]
begin
raise 'Please enter all required parameters' if settings.client_id.empty? or settings.private_key.empty?
GroupDocs.configure do |groupdocs|
groupdocs.client_id = params[:client_id]
groupdocs.private_key = params[:private_key]
groupdocs.api_server = 'https://stage-api.groupdocs.com'
end
|
upload document |
filepath = "#{Dir.tmpdir}/#{params[:file][:filename]}"
File.open(filepath, 'wb') { |f| f.write(params[:file][:tempfile].read) }
file = GroupDocs::Storage::File.upload!(filepath, {}, client_id: settings.client_id, private_key: settings.private_key)
document = file.to_document
|
create envelope |
envelope = GroupDocs::Signature::Envelope.new
envelope.name = 'Envelope'
envelope.email_subject = 'Sing this!'
envelope.create!
|
add document to envelope |
envelope.add_document! document
|
update document object after it's created |
document = envelope.documents!.first
|
add new recipient to envelope |
roles = GroupDocs::Signature::Role.get!
recipient = GroupDocs::Signature::Recipient.new
recipient.email = 'john@smith.com'
recipient.first_name = 'John'
recipient.last_name = 'Smith'
recipient.role_id = roles.detect { |role| role.name == 'Signer' }.id
envelope.add_recipient! recipient
|
update recipient object after it's created |
recipient = envelope.recipients!.first
|
You can add fields manually. |
|
add city field to envelope field = GroupDocs::Signature::Field.get!.detect { |f| f.type == :singleline } field.name = 'City' field.location = { locationx: 0.3, locationy: 0.2, page: 1 } envelope.addfield! field, document, recipient |
|
add signature field to envelope field = GroupDocs::Signature::Field.get!.detect { |f| f.type == :signature } field.location = { locationx: 0.3, locationy: 0.3, page: 1 } envelope.add_field! field, document, recipient |
|
URL for callback webhook = 'http://groupdocs-ruby-samples.herokuapp.com/envelope-sample/sign' |
webhook = 'http://77.81.243.48/?q=groupdocs_signature/signature_callback'
|
send envelope |
envelope.send! webhook
|
construct embedded signature url |
url = "https://stage-apps.groupdocs.com/signature/signembed/#{envelope.id}/#{recipient.id}"
iframe = "<iframe src='#{url}' frameborder='0' width='720' height='600'></iframe>"
rescue Exception => e
err = e.message
end
haml :envelope_sample, :locals => {:client_id => settings.client_id, :private_key => settings.private_key, :err => err, :iframe => iframe}
end
|