groupdocs 1.5.8 → 1.5.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.md +9 -0
- data/examples/api-samples/public/docs/sample01.html +34 -15
- data/examples/api-samples/public/docs/sample02.html +36 -15
- data/examples/api-samples/public/docs/sample03.html +55 -34
- data/examples/api-samples/public/docs/sample04.html +33 -14
- data/examples/api-samples/public/docs/sample05.html +51 -33
- data/examples/api-samples/public/docs/sample06.html +86 -40
- data/examples/api-samples/public/docs/sample07.html +32 -13
- data/examples/api-samples/public/docs/sample08.html +39 -20
- data/examples/api-samples/public/docs/sample09.html +93 -39
- data/examples/api-samples/public/docs/sample10.html +39 -21
- data/examples/api-samples/public/docs/sample11.html +133 -88
- data/examples/api-samples/public/docs/sample12.html +33 -14
- data/examples/api-samples/public/docs/sample13.html +14 -7
- data/examples/api-samples/public/docs/sample14.html +37 -18
- data/examples/api-samples/public/docs/sample15.html +29 -10
- data/examples/api-samples/public/docs/sample16.html +58 -25
- data/examples/api-samples/public/docs/sample17.html +71 -38
- data/examples/api-samples/public/docs/sample18.html +98 -71
- data/examples/api-samples/public/docs/sample19.html +74 -42
- data/examples/api-samples/public/docs/sample20.html +39 -21
- data/examples/api-samples/public/docs/sample21.html +113 -69
- data/examples/api-samples/public/docs/sample22.html +89 -43
- data/examples/api-samples/public/docs/sample23.html +50 -32
- data/examples/api-samples/public/docs/sample24.html +64 -31
- data/examples/api-samples/public/docs/sample25.html +107 -60
- data/examples/api-samples/public/docs/sample26.html +29 -10
- data/examples/api-samples/public/docs/sample27.html +107 -61
- data/examples/api-samples/public/docs/sample28.html +158 -9
- data/examples/api-samples/public/docs/sample29.html +13 -8
- data/examples/api-samples/public/docs/sample30.html +34 -15
- data/examples/api-samples/public/docs/sample31.html +107 -76
- data/examples/api-samples/public/docs/sample32.html +104 -40
- data/examples/api-samples/public/docs/sample33.html +85 -36
- data/examples/api-samples/public/docs/sample34.html +30 -11
- data/examples/api-samples/public/docs/sample35.html +90 -27
- data/examples/api-samples/public/docs/sample36.html +36 -16
- data/examples/api-samples/public/docs/sample37.html +144 -265
- data/examples/api-samples/public/docs/sample38.html +113 -64
- data/examples/api-samples/public/docs/sample39.html +118 -45
- data/examples/api-samples/public/docs/sample40.html +81 -46
- data/examples/api-samples/public/docs/sample41.html +562 -90
- data/examples/api-samples/public/docs/sample42.html +94 -39
- data/examples/api-samples/public/docs/sample43.html +669 -0
- data/examples/api-samples/samples/sample01.rb +17 -10
- data/examples/api-samples/samples/sample02.rb +21 -12
- data/examples/api-samples/samples/sample03.rb +35 -29
- data/examples/api-samples/samples/sample04.rb +19 -12
- data/examples/api-samples/samples/sample05.rb +24 -17
- data/examples/api-samples/samples/sample06.rb +38 -32
- data/examples/api-samples/samples/sample07.rb +19 -12
- data/examples/api-samples/samples/sample08.rb +22 -15
- data/examples/api-samples/samples/sample09.rb +31 -29
- data/examples/api-samples/samples/sample10.rb +22 -15
- data/examples/api-samples/samples/sample11.rb +78 -81
- data/examples/api-samples/samples/sample12.rb +19 -21
- data/examples/api-samples/samples/sample13.rb +19 -21
- data/examples/api-samples/samples/sample14.rb +18 -12
- data/examples/api-samples/samples/sample15.rb +17 -10
- data/examples/api-samples/samples/sample16.rb +25 -17
- data/examples/api-samples/samples/sample17.rb +31 -23
- data/examples/api-samples/samples/sample18.rb +60 -55
- data/examples/api-samples/samples/sample19.rb +48 -42
- data/examples/api-samples/samples/sample20.rb +20 -13
- data/examples/api-samples/samples/sample21.rb +62 -54
- data/examples/api-samples/samples/sample22.rb +37 -31
- data/examples/api-samples/samples/sample23.rb +24 -17
- data/examples/api-samples/samples/sample24.rb +29 -22
- data/examples/api-samples/samples/sample25.rb +47 -40
- data/examples/api-samples/samples/sample26.rb +16 -9
- data/examples/api-samples/samples/sample27.rb +46 -39
- data/examples/api-samples/samples/sample28.rb +42 -11
- data/examples/api-samples/samples/sample29.rb +13 -8
- data/examples/api-samples/samples/sample30.rb +19 -12
- data/examples/api-samples/samples/sample31.rb +63 -58
- data/examples/api-samples/samples/sample32.rb +45 -42
- data/examples/api-samples/samples/sample33.rb +36 -25
- data/examples/api-samples/samples/sample34.rb +16 -9
- data/examples/api-samples/samples/sample35.rb +66 -53
- data/examples/api-samples/samples/sample36.rb +19 -15
- data/examples/api-samples/samples/sample37.rb +61 -99
- data/examples/api-samples/samples/sample38.rb +51 -43
- data/examples/api-samples/samples/sample39.rb +78 -62
- data/examples/api-samples/samples/sample40.rb +48 -38
- data/examples/api-samples/samples/sample41.rb +189 -67
- data/examples/api-samples/samples/sample42.rb +37 -29
- data/examples/api-samples/samples/sample43.rb +127 -0
- data/examples/api-samples/views/_others_samples.haml +4 -2
- data/examples/api-samples/views/index.haml +4 -2
- data/examples/api-samples/views/sample11.haml +1 -1
- data/examples/api-samples/views/sample28.haml +8 -0
- data/examples/api-samples/views/sample31.haml +1 -6
- data/examples/api-samples/views/sample39.haml +7 -2
- data/examples/api-samples/views/sample41.haml +78 -33
- data/examples/api-samples/views/sample42.haml +0 -1
- data/examples/api-samples/views/sample43.haml +91 -0
- data/lib/groupdocs/api/helpers/access_rights_helper.rb +6 -5
- data/lib/groupdocs/api/helpers/url_helper.rb +2 -1
- data/lib/groupdocs/document.rb +3 -3
- data/lib/groupdocs/version.rb +1 -1
- metadata +5 -2
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
#
|
|
1
|
+
#GET request
|
|
2
2
|
get '/sample19' do
|
|
3
3
|
haml :sample19
|
|
4
4
|
end
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
#POST request
|
|
7
7
|
post '/sample19/compere_callback' do
|
|
8
|
-
#
|
|
8
|
+
#Set download path
|
|
9
9
|
downloads_path = "#{File.dirname(__FILE__)}/../public/downloads"
|
|
10
10
|
|
|
11
|
-
#
|
|
11
|
+
#Get callback request
|
|
12
12
|
data = JSON.parse(request.body.read)
|
|
13
13
|
begin
|
|
14
14
|
raise 'Empty params!' if data.empty?
|
|
@@ -16,14 +16,14 @@ post '/sample19/compere_callback' do
|
|
|
16
16
|
client_id = nil
|
|
17
17
|
private_key = nil
|
|
18
18
|
|
|
19
|
-
#
|
|
19
|
+
#Get value of SourceId
|
|
20
20
|
data.each do |key, value|
|
|
21
21
|
if key == 'SourceId'
|
|
22
22
|
source_id = value
|
|
23
23
|
end
|
|
24
24
|
end
|
|
25
25
|
|
|
26
|
-
#
|
|
26
|
+
#Get private key and client_id from file user_info.txt
|
|
27
27
|
if File.exist?("#{File.dirname(__FILE__)}/../public/user_info.txt")
|
|
28
28
|
contents = File.read("#{File.dirname(__FILE__)}/../public/user_info.txt")
|
|
29
29
|
contents = contents.split(' ')
|
|
@@ -31,13 +31,13 @@ post '/sample19/compere_callback' do
|
|
|
31
31
|
private_key = contents.last
|
|
32
32
|
end
|
|
33
33
|
|
|
34
|
-
#
|
|
34
|
+
#Create Job instance
|
|
35
35
|
job = GroupDocs::Job.new({:id => source_id})
|
|
36
36
|
|
|
37
|
-
#
|
|
37
|
+
#Get document by job id
|
|
38
38
|
documents = job.documents!({:client_id => client_id, :private_key => private_key})
|
|
39
39
|
|
|
40
|
-
#
|
|
40
|
+
#Download converted file
|
|
41
41
|
documents[:inputs].first.outputs.first.download!(downloads_path, {:client_id => client_id, :private_key => private_key})
|
|
42
42
|
|
|
43
43
|
rescue Exception => e
|
|
@@ -45,15 +45,15 @@ post '/sample19/compere_callback' do
|
|
|
45
45
|
end
|
|
46
46
|
end
|
|
47
47
|
|
|
48
|
-
#
|
|
48
|
+
#GET request
|
|
49
49
|
get '/sample19/check' do
|
|
50
50
|
|
|
51
|
-
#
|
|
51
|
+
#Check is there download directory
|
|
52
52
|
unless File.directory?("#{File.dirname(__FILE__)}/../public/downloads")
|
|
53
53
|
return 'Directory was not found.'
|
|
54
54
|
end
|
|
55
55
|
|
|
56
|
-
#
|
|
56
|
+
#Get file name from download directory
|
|
57
57
|
name = nil
|
|
58
58
|
Dir.entries("#{File.dirname(__FILE__)}/../public/downloads").each do |file|
|
|
59
59
|
name = file if file != '.' && file != '..'
|
|
@@ -62,15 +62,15 @@ get '/sample19/check' do
|
|
|
62
62
|
name
|
|
63
63
|
end
|
|
64
64
|
|
|
65
|
-
#
|
|
65
|
+
#GET request
|
|
66
66
|
get '/sample19/downloads/:filename' do |filename|
|
|
67
|
-
#
|
|
67
|
+
#Send file with header to download it
|
|
68
68
|
send_file "#{File.dirname(__FILE__)}/../public/downloads/#{filename}", :filename => filename, :type => 'Application/octet-stream'
|
|
69
69
|
end
|
|
70
70
|
|
|
71
|
-
#
|
|
71
|
+
#POST request
|
|
72
72
|
post '/sample19' do
|
|
73
|
-
#
|
|
73
|
+
#Set variables
|
|
74
74
|
set :client_id, params[:clientId]
|
|
75
75
|
set :private_key, params[:privateKey]
|
|
76
76
|
set :sourceFileId, params[:sourceFileId]
|
|
@@ -78,10 +78,10 @@ post '/sample19' do
|
|
|
78
78
|
set :callback, params[:callback]
|
|
79
79
|
set :base_path, params[:basePath]
|
|
80
80
|
|
|
81
|
-
#
|
|
81
|
+
#Set download path
|
|
82
82
|
downloads_path = "#{File.dirname(__FILE__)}/../public/downloads"
|
|
83
83
|
|
|
84
|
-
#
|
|
84
|
+
#Remove all files from download directory or create folder if it not there
|
|
85
85
|
if File.directory?(downloads_path)
|
|
86
86
|
Dir.foreach(downloads_path) { |f| fn = File.join(downloads_path, f); File.delete(fn) if f != '.' && f != '..' }
|
|
87
87
|
else
|
|
@@ -90,35 +90,42 @@ post '/sample19' do
|
|
|
90
90
|
|
|
91
91
|
begin
|
|
92
92
|
|
|
93
|
-
#
|
|
93
|
+
#Check required variables
|
|
94
94
|
raise 'Please enter all required parameters' if settings.client_id.empty? or settings.private_key.empty? or settings.sourceFileId.empty? or settings.targetFileId.empty?
|
|
95
95
|
|
|
96
|
-
|
|
96
|
+
#Prepare base path
|
|
97
|
+
if settings.base_path.empty?
|
|
98
|
+
base_path = 'https://api.groupdocs.com'
|
|
99
|
+
elsif settings.base_path.match('/v2.0')
|
|
100
|
+
base_path = settings.base_path.split('/v2.0')[0]
|
|
101
|
+
else
|
|
102
|
+
base_path = settings.base_path
|
|
103
|
+
end
|
|
97
104
|
|
|
98
|
-
#
|
|
105
|
+
#Configure your access to API server
|
|
99
106
|
GroupDocs.configure do |groupdocs|
|
|
100
107
|
groupdocs.client_id = settings.client_id
|
|
101
108
|
groupdocs.private_key = settings.private_key
|
|
102
|
-
#
|
|
103
|
-
groupdocs.api_server =
|
|
109
|
+
#Optionally specify API server and version
|
|
110
|
+
groupdocs.api_server = base_path # default is 'https://api.groupdocs.com'
|
|
104
111
|
end
|
|
105
112
|
|
|
106
|
-
#
|
|
113
|
+
#Write client and private key to the file for callback job
|
|
107
114
|
if settings.callback
|
|
108
115
|
out_file = File.new("#{File.dirname(__FILE__)}/../public/user_info.txt", 'w')
|
|
109
|
-
#
|
|
116
|
+
#White space is required
|
|
110
117
|
out_file.write("#{settings.client_id} ")
|
|
111
118
|
out_file.write("#{settings.private_key}")
|
|
112
119
|
out_file.close
|
|
113
120
|
end
|
|
114
121
|
|
|
115
|
-
#
|
|
122
|
+
#Make a request to API using client_id and private_key
|
|
116
123
|
files_list = GroupDocs::Storage::Folder.list!('/', {})
|
|
117
124
|
|
|
118
125
|
source_document = ''
|
|
119
126
|
target_document = ''
|
|
120
127
|
|
|
121
|
-
#
|
|
128
|
+
#Get source and target documents by file ID
|
|
122
129
|
files_list.each do |element|
|
|
123
130
|
if element.respond_to?('guid') == true and element.guid == settings.sourceFileId
|
|
124
131
|
source_document = element
|
|
@@ -142,37 +149,36 @@ post '/sample19' do
|
|
|
142
149
|
i += 1
|
|
143
150
|
end
|
|
144
151
|
|
|
145
|
-
|
|
146
|
-
# Get job by ID
|
|
152
|
+
#Get job by ID
|
|
147
153
|
job = GroupDocs::Job.new(id: info.id)
|
|
148
154
|
|
|
149
|
-
#
|
|
155
|
+
#Get all job documents
|
|
150
156
|
documents = job.documents!()
|
|
151
|
-
#
|
|
157
|
+
#Get compared file giud
|
|
152
158
|
guid = documents[:outputs].first.file.guid
|
|
153
159
|
|
|
154
|
-
#
|
|
160
|
+
#Prepare to sign url
|
|
161
|
+
iframe = "/document-viewer/embed/#{guid}"
|
|
162
|
+
# Construct result string
|
|
163
|
+
url = GroupDocs::Api::Request.new(:path => iframe).prepare_and_sign_url
|
|
164
|
+
#Generate iframe URL
|
|
155
165
|
case settings.base_path
|
|
156
|
-
|
|
157
166
|
when 'https://stage-api-groupdocs.dynabic.com'
|
|
158
|
-
|
|
167
|
+
iframe = "https://stage-api-groupdocs.dynabic.com#{url}"
|
|
159
168
|
when 'https://dev-api-groupdocs.dynabic.com'
|
|
160
|
-
|
|
169
|
+
iframe = "https://dev-apps.groupdocs.com#{url}"
|
|
161
170
|
else
|
|
162
|
-
|
|
171
|
+
iframe = "https://apps.groupdocs.com#{url}"
|
|
163
172
|
end
|
|
164
173
|
|
|
165
|
-
#
|
|
166
|
-
iframe =
|
|
167
|
-
# Construct result iframe
|
|
168
|
-
iframe = "<iframe src='#{iframe}' frameborder='0' width='100%' height='600'></iframe>"
|
|
169
|
-
|
|
174
|
+
#Construct result iframe
|
|
175
|
+
iframe = "<iframe id='downloadframe' src='#{iframe}' width='800' height='1000'></iframe>"
|
|
170
176
|
end
|
|
171
177
|
|
|
172
178
|
rescue Exception => e
|
|
173
179
|
err = e.message
|
|
174
180
|
end
|
|
175
181
|
|
|
176
|
-
#
|
|
182
|
+
#Set variables for template
|
|
177
183
|
haml :sample19, :locals => {:userId => settings.client_id, :privateKey => settings.private_key, :sourceFileId => settings.sourceFileId, :targetFileId => settings.targetFileId, :callback => settings.callback, :iframe => iframe, :err => err}
|
|
178
184
|
end
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
#
|
|
1
|
+
#GET request
|
|
2
2
|
get '/sample20' do
|
|
3
3
|
haml :sample20
|
|
4
4
|
end
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
#POST request
|
|
7
7
|
post '/sample20' do
|
|
8
|
-
#
|
|
8
|
+
#Set variables
|
|
9
9
|
set :client_id, params[:clientId]
|
|
10
10
|
set :private_key, params[:privateKey]
|
|
11
11
|
set :resultFileId, params[:resultFileId]
|
|
@@ -13,26 +13,33 @@ post '/sample20' do
|
|
|
13
13
|
|
|
14
14
|
begin
|
|
15
15
|
|
|
16
|
-
#
|
|
16
|
+
#Check required variables
|
|
17
17
|
raise 'Please enter all required parameters' if settings.client_id.empty? or settings.private_key.empty? or settings.resultFileId.empty?
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
#Prepare base path
|
|
20
|
+
if settings.base_path.empty?
|
|
21
|
+
base_path = 'https://api.groupdocs.com'
|
|
22
|
+
elsif settings.base_path.match('/v2.0')
|
|
23
|
+
base_path = settings.base_path.split('/v2.0')[0]
|
|
24
|
+
else
|
|
25
|
+
base_path = settings.base_path
|
|
26
|
+
end
|
|
20
27
|
|
|
21
|
-
#
|
|
28
|
+
#Configure your access to API server
|
|
22
29
|
GroupDocs.configure do |groupdocs|
|
|
23
30
|
groupdocs.client_id = settings.client_id
|
|
24
31
|
groupdocs.private_key = settings.private_key
|
|
25
|
-
#
|
|
26
|
-
groupdocs.api_server =
|
|
32
|
+
#Optionally specify API server and version
|
|
33
|
+
groupdocs.api_server = base_path # default is 'https://api.groupdocs.com'
|
|
27
34
|
end
|
|
28
35
|
|
|
29
|
-
#
|
|
36
|
+
#Construct new storage file
|
|
30
37
|
file = GroupDocs::Storage::File.new(guid: settings.resultFileId)
|
|
31
|
-
#
|
|
38
|
+
#Construct new document
|
|
32
39
|
document = GroupDocs::Document.new(file: file)
|
|
33
|
-
# get compare changes
|
|
34
|
-
changes = document.changes!()
|
|
35
40
|
|
|
41
|
+
#Get compare changes
|
|
42
|
+
changes = document.changes!()
|
|
36
43
|
result = ''
|
|
37
44
|
result += "<table class='border'>"
|
|
38
45
|
result += "<tr><td><font color='green'>Change Name</font></td><td><font color='green'>Change</font></td></tr>"
|
|
@@ -56,6 +63,6 @@ post '/sample20' do
|
|
|
56
63
|
err = e.message
|
|
57
64
|
end
|
|
58
65
|
|
|
59
|
-
#
|
|
66
|
+
#Set variables for template
|
|
60
67
|
haml :sample20, :locals => {:userId => settings.client_id, :privateKey => settings.private_key, :resultFileId => settings.resultFileId, :result => result, :err => err}
|
|
61
68
|
end
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
#
|
|
1
|
+
#GET request
|
|
2
2
|
get '/sample21' do
|
|
3
3
|
haml :sample21
|
|
4
4
|
end
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
#POST request
|
|
7
7
|
post '/sample21/signature_callback' do
|
|
8
|
-
#
|
|
8
|
+
#Set download path
|
|
9
9
|
downloads_path = "#{File.dirname(__FILE__)}/../public/downloads"
|
|
10
10
|
|
|
11
|
-
#
|
|
11
|
+
#Get callback request
|
|
12
12
|
data = JSON.parse(request.body.read)
|
|
13
13
|
begin
|
|
14
14
|
raise 'Empty params!' if data.empty?
|
|
@@ -16,14 +16,14 @@ post '/sample21/signature_callback' do
|
|
|
16
16
|
client_id = nil
|
|
17
17
|
private_key = nil
|
|
18
18
|
|
|
19
|
-
#
|
|
19
|
+
#Get value of SourceId
|
|
20
20
|
data.each do |key, value|
|
|
21
21
|
if key == 'SourceId'
|
|
22
22
|
source_id = value
|
|
23
23
|
end
|
|
24
24
|
end
|
|
25
25
|
|
|
26
|
-
#
|
|
26
|
+
#Get private key and client_id from file user_info.txt
|
|
27
27
|
if File.exist?("#{File.dirname(__FILE__)}/../public/user_info.txt")
|
|
28
28
|
contents = File.read("#{File.dirname(__FILE__)}/../public/user_info.txt")
|
|
29
29
|
contents = contents.split(' ')
|
|
@@ -31,13 +31,13 @@ post '/sample21/signature_callback' do
|
|
|
31
31
|
private_key = contents.last
|
|
32
32
|
end
|
|
33
33
|
|
|
34
|
-
#
|
|
34
|
+
#Create Job instance
|
|
35
35
|
job = GroupDocs::Signature::Envelope.new({:id => source_id})
|
|
36
36
|
|
|
37
|
-
#
|
|
37
|
+
#Get document by job id
|
|
38
38
|
documents = job.documents!({}, {:client_id => client_id, :private_key => private_key})
|
|
39
39
|
|
|
40
|
-
#
|
|
40
|
+
#Download converted file
|
|
41
41
|
documents[0].file.download!(downloads_path, {:client_id => client_id, :private_key => private_key})
|
|
42
42
|
|
|
43
43
|
rescue Exception => e
|
|
@@ -46,15 +46,15 @@ post '/sample21/signature_callback' do
|
|
|
46
46
|
end
|
|
47
47
|
|
|
48
48
|
|
|
49
|
-
#
|
|
49
|
+
#GET request
|
|
50
50
|
get '/sample21/check' do
|
|
51
51
|
|
|
52
|
-
#
|
|
52
|
+
#Check is there download directory
|
|
53
53
|
unless File.directory?("#{File.dirname(__FILE__)}/../public/downloads")
|
|
54
54
|
return 'Directory was not found.'
|
|
55
55
|
end
|
|
56
56
|
|
|
57
|
-
#
|
|
57
|
+
#Get file name from download directory
|
|
58
58
|
name = nil
|
|
59
59
|
Dir.entries("#{File.dirname(__FILE__)}/../public/downloads").each do |file|
|
|
60
60
|
name = file if file != '.' && file != '..'
|
|
@@ -63,15 +63,15 @@ get '/sample21/check' do
|
|
|
63
63
|
name
|
|
64
64
|
end
|
|
65
65
|
|
|
66
|
-
#
|
|
66
|
+
#GET request
|
|
67
67
|
get '/sample21/downloads/:filename' do |filename|
|
|
68
|
-
#
|
|
68
|
+
#Send file with header to download it
|
|
69
69
|
send_file "#{File.dirname(__FILE__)}/../public/downloads/#{filename}", :filename => filename, :type => 'Application/octet-stream'
|
|
70
70
|
end
|
|
71
71
|
|
|
72
|
-
#
|
|
72
|
+
#POST request
|
|
73
73
|
post '/sample21' do
|
|
74
|
-
#
|
|
74
|
+
#Set variables
|
|
75
75
|
set :client_id, params[:clientId]
|
|
76
76
|
set :private_key, params[:privateKey]
|
|
77
77
|
set :email, params[:email]
|
|
@@ -83,10 +83,10 @@ post '/sample21' do
|
|
|
83
83
|
set :url, params[:url]
|
|
84
84
|
set :source, params[:source]
|
|
85
85
|
|
|
86
|
-
#
|
|
86
|
+
#Set download path
|
|
87
87
|
downloads_path = "#{File.dirname(__FILE__)}/../public/downloads"
|
|
88
88
|
|
|
89
|
-
#
|
|
89
|
+
#Remove all files from download directory or create folder if it not there
|
|
90
90
|
if File.directory?(downloads_path)
|
|
91
91
|
Dir.foreach(downloads_path) { |f| fn = File.join(downloads_path, f); File.delete(fn) if f != '.' && f != '..' }
|
|
92
92
|
else
|
|
@@ -94,111 +94,119 @@ post '/sample21' do
|
|
|
94
94
|
end
|
|
95
95
|
|
|
96
96
|
begin
|
|
97
|
-
#
|
|
97
|
+
#Check required variables
|
|
98
98
|
raise 'Please enter all required parameters' if settings.client_id.empty? or settings.private_key.empty? or settings.email.empty? or settings.name.empty? or settings.lastName.empty?
|
|
99
99
|
|
|
100
|
-
|
|
100
|
+
#Prepare base path
|
|
101
|
+
if settings.base_path.empty?
|
|
102
|
+
base_path = 'https://api.groupdocs.com'
|
|
103
|
+
elsif settings.base_path.match('/v2.0')
|
|
104
|
+
base_path = settings.base_path.split('/v2.0')[0]
|
|
105
|
+
else
|
|
106
|
+
base_path = settings.base_path
|
|
107
|
+
end
|
|
101
108
|
|
|
102
|
-
#
|
|
109
|
+
#Configure your access to API server
|
|
103
110
|
GroupDocs.configure do |groupdocs|
|
|
104
111
|
groupdocs.client_id = settings.client_id
|
|
105
112
|
groupdocs.private_key = settings.private_key
|
|
106
|
-
#
|
|
107
|
-
groupdocs.api_server =
|
|
113
|
+
#Optionally specify API server and version
|
|
114
|
+
groupdocs.api_server = base_path # default is 'https://api.groupdocs.com'
|
|
108
115
|
end
|
|
109
116
|
|
|
110
|
-
#
|
|
117
|
+
#Write client and private key to the file for callback job
|
|
111
118
|
if settings.callback
|
|
112
119
|
out_file = File.new("#{File.dirname(__FILE__)}/../public/user_info.txt", 'w')
|
|
113
|
-
#
|
|
120
|
+
#White space is required
|
|
114
121
|
out_file.write("#{settings.client_id} ")
|
|
115
122
|
out_file.write("#{settings.private_key}")
|
|
116
123
|
out_file.close
|
|
117
124
|
end
|
|
118
125
|
|
|
119
126
|
file = nil
|
|
120
|
-
#
|
|
127
|
+
#Get document by file GUID
|
|
121
128
|
case settings.source
|
|
122
129
|
when 'guid'
|
|
123
|
-
#
|
|
130
|
+
#Create instance of File
|
|
124
131
|
file = GroupDocs::Storage::File.new({:guid => settings.fileId}).to_document.metadata!()
|
|
125
132
|
file = file.last_view.document.file.to_document
|
|
126
133
|
when 'local'
|
|
127
|
-
#
|
|
134
|
+
#Construct path
|
|
128
135
|
file_path = "#{Dir.tmpdir}/#{params[:file][:filename]}"
|
|
129
|
-
|
|
136
|
+
|
|
137
|
+
#Open file
|
|
130
138
|
File.open(file_path, 'wb') { |f| f.write(params[:file][:tempfile].read) }
|
|
131
|
-
#
|
|
139
|
+
#Make a request to API using client_id and private_key
|
|
132
140
|
file = GroupDocs::Storage::File.upload!(file_path, {}).to_document
|
|
133
141
|
when 'url'
|
|
134
|
-
#
|
|
142
|
+
#Upload file from defined url
|
|
135
143
|
file = GroupDocs::Storage::File.upload_web!(settings.url).to_document
|
|
136
144
|
else
|
|
137
145
|
raise 'Wrong GUID source.'
|
|
138
146
|
end
|
|
139
147
|
|
|
140
148
|
name = file.name
|
|
141
|
-
#
|
|
149
|
+
#Create envelope using user id and entered by user name
|
|
142
150
|
envelope = GroupDocs::Signature::Envelope.new
|
|
143
151
|
envelope.name = file.name
|
|
144
152
|
envelope.email_subject = 'Sing this!'
|
|
145
153
|
envelope.create!({})
|
|
146
154
|
|
|
147
|
-
#
|
|
155
|
+
#Add uploaded document to envelope
|
|
148
156
|
envelope.add_document!(file, {})
|
|
149
157
|
|
|
150
|
-
#
|
|
158
|
+
#Get role list for current user
|
|
151
159
|
roles = GroupDocs::Signature::Role.get!({})
|
|
152
160
|
|
|
153
|
-
#
|
|
161
|
+
#Create new recipient
|
|
154
162
|
recipient = GroupDocs::Signature::Recipient.new
|
|
155
163
|
recipient.email = settings.email
|
|
156
164
|
recipient.first_name = settings.name
|
|
157
165
|
recipient.last_name = settings.lastName
|
|
158
166
|
recipient.role_id = roles.detect { |role| role.name == 'Signer' }.id
|
|
159
167
|
|
|
160
|
-
#
|
|
161
|
-
|
|
168
|
+
#Add recipient to envelope
|
|
169
|
+
recipient = envelope.add_recipient!(recipient)
|
|
162
170
|
|
|
163
|
-
# Get recipient id
|
|
164
|
-
recipient.id = add[:recipient][:id]
|
|
165
171
|
|
|
166
|
-
#
|
|
172
|
+
#Get document id
|
|
167
173
|
document = envelope.documents!({})
|
|
168
174
|
|
|
169
175
|
|
|
170
|
-
#
|
|
176
|
+
#Get field and add the location to field
|
|
171
177
|
field = GroupDocs::Signature::Field.get!({}).detect { |f| f.type == :signature }
|
|
172
178
|
field.location = {:location_x => 0.15, :location_y => 0.73, :location_w => 150, :location_h => 50, :page => 1}
|
|
173
179
|
field.name = 'EMPLOYEE SIGNATURE'
|
|
174
180
|
|
|
175
|
-
#
|
|
181
|
+
#Add field to envelope
|
|
176
182
|
envelope.add_field!(field, document[0], recipient, {})
|
|
177
183
|
|
|
178
184
|
|
|
179
|
-
#
|
|
185
|
+
#Send envelop
|
|
180
186
|
envelope.send!({:callbackUrl => settings.callback})
|
|
181
187
|
|
|
182
|
-
#
|
|
183
|
-
|
|
184
|
-
|
|
188
|
+
#Prepare to sign url
|
|
189
|
+
iframe = "/signature2/signembed/#{envelope.id}/#{recipient.id}"
|
|
190
|
+
#Construct result string
|
|
191
|
+
url = GroupDocs::Api::Request.new(:path => iframe).prepare_and_sign_url
|
|
192
|
+
#Generate iframe URL
|
|
193
|
+
case base_path
|
|
185
194
|
when 'https://stage-api-groupdocs.dynabic.com'
|
|
186
|
-
|
|
195
|
+
iframe = "https://stage-api-groupdocs.dynabic.com#{url}"
|
|
187
196
|
when 'https://dev-api-groupdocs.dynabic.com'
|
|
188
|
-
|
|
197
|
+
iframe = "https://dev-apps.groupdocs.com#{url}"
|
|
189
198
|
else
|
|
190
|
-
|
|
199
|
+
iframe = "https://apps.groupdocs.com#{url}"
|
|
191
200
|
end
|
|
192
201
|
|
|
193
|
-
|
|
194
|
-
iframe =
|
|
195
|
-
#
|
|
196
|
-
iframe = "<iframe src='#{iframe}' frameborder='0' width='720' height='600'></iframe>"
|
|
202
|
+
#Make iframe
|
|
203
|
+
iframe = "<iframe id='downloadframe' src='#{iframe}' width='800' height='1000'></iframe>"
|
|
204
|
+
#Create message
|
|
197
205
|
message = "<p>File was uploaded to GroupDocs. Here you can see your <strong>#{name}</strong> file in the GroupDocs Embedded Viewer.</p>"
|
|
198
206
|
rescue Exception => e
|
|
199
207
|
err = e.message
|
|
200
208
|
end
|
|
201
209
|
|
|
202
|
-
#
|
|
210
|
+
#Set variables for template
|
|
203
211
|
haml :sample21, :locals => {:userId => settings.client_id, :privateKey => settings.private_key, :email => settings.email, :name => settings.name, :lastName => settings.lastName, :iframe => iframe, :massage => message, :err => err, :callback => settings.callback,}
|
|
204
212
|
end
|