groupdocs 1.5.3 → 1.5.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (118) hide show
  1. data/.travis.yml +0 -1
  2. data/README.md +2 -0
  3. data/examples/api-samples/public/docs/annotation-sample.html +167 -57
  4. data/examples/api-samples/public/docs/docco.css +459 -151
  5. data/examples/api-samples/public/docs/envelope-sample.html +373 -131
  6. data/examples/api-samples/public/docs/sample1.html +126 -26
  7. data/examples/api-samples/public/docs/sample10.html +213 -50
  8. data/examples/api-samples/public/docs/sample11.html +319 -87
  9. data/examples/api-samples/public/docs/sample12.html +165 -40
  10. data/examples/api-samples/public/docs/sample13.html +166 -41
  11. data/examples/api-samples/public/docs/sample14.html +142 -30
  12. data/examples/api-samples/public/docs/sample15.html +127 -27
  13. data/examples/api-samples/public/docs/sample16.html +125 -25
  14. data/examples/api-samples/public/docs/sample17.html +188 -37
  15. data/examples/api-samples/public/docs/sample18.html +614 -157
  16. data/examples/api-samples/public/docs/sample19.html +221 -59
  17. data/examples/api-samples/public/docs/sample2.html +142 -30
  18. data/examples/api-samples/public/docs/sample20.html +176 -51
  19. data/examples/api-samples/public/docs/sample21.html +287 -66
  20. data/examples/api-samples/public/docs/sample22.html +224 -53
  21. data/examples/api-samples/public/docs/sample23.html +256 -0
  22. data/examples/api-samples/public/docs/sample24.html +143 -0
  23. data/examples/api-samples/public/docs/sample25.html +429 -0
  24. data/examples/api-samples/public/docs/sample26.html +113 -0
  25. data/examples/api-samples/public/docs/sample27.html +433 -0
  26. data/examples/api-samples/public/docs/sample28.html +185 -0
  27. data/examples/api-samples/public/docs/sample29.html +175 -0
  28. data/examples/api-samples/public/docs/sample3.html +172 -34
  29. data/examples/api-samples/public/docs/sample30.html +144 -0
  30. data/examples/api-samples/public/docs/sample31.html +734 -0
  31. data/examples/api-samples/public/docs/sample4.html +204 -52
  32. data/examples/api-samples/public/docs/sample5.html +241 -63
  33. data/examples/api-samples/public/docs/sample6.html +209 -48
  34. data/examples/api-samples/public/docs/sample7.html +155 -43
  35. data/examples/api-samples/public/docs/sample8.html +235 -62
  36. data/examples/api-samples/public/docs/sample9.html +200 -49
  37. data/examples/api-samples/public/templates/merge_field1_doc.docx +0 -0
  38. data/examples/api-samples/public/templates/merge_field2_doc.docx +0 -0
  39. data/examples/api-samples/samples/sample23.rb +54 -0
  40. data/examples/api-samples/samples/sample24.rb +30 -0
  41. data/examples/api-samples/samples/sample25.rb +4 -4
  42. data/examples/api-samples/samples/sample26.rb +25 -0
  43. data/examples/api-samples/samples/sample27.rb +100 -0
  44. data/examples/api-samples/samples/sample28.rb +47 -0
  45. data/examples/api-samples/samples/sample29.rb +52 -0
  46. data/examples/api-samples/samples/sample30.rb +39 -0
  47. data/examples/api-samples/samples/sample31.rb +204 -0
  48. data/examples/api-samples/samples/sample5.rb +5 -3
  49. data/examples/api-samples/samples/sample6.rb +2 -0
  50. data/examples/api-samples/views/_others_samples.haml +12 -0
  51. data/examples/api-samples/views/index.haml +12 -0
  52. data/examples/api-samples/views/layout.haml +1 -0
  53. data/examples/api-samples/views/sample1.haml +3 -2
  54. data/examples/api-samples/views/sample10.haml +3 -2
  55. data/examples/api-samples/views/sample11.haml +4 -0
  56. data/examples/api-samples/views/sample12.haml +4 -0
  57. data/examples/api-samples/views/sample13.haml +4 -0
  58. data/examples/api-samples/views/sample14.haml +4 -0
  59. data/examples/api-samples/views/sample15.haml +4 -0
  60. data/examples/api-samples/views/sample16.haml +4 -0
  61. data/examples/api-samples/views/sample17.haml +4 -0
  62. data/examples/api-samples/views/sample19.haml +4 -0
  63. data/examples/api-samples/views/sample2.haml +3 -2
  64. data/examples/api-samples/views/sample20.haml +4 -0
  65. data/examples/api-samples/views/sample21.haml +4 -0
  66. data/examples/api-samples/views/sample22.haml +4 -0
  67. data/examples/api-samples/views/sample23.haml +87 -0
  68. data/examples/api-samples/views/sample24.haml +44 -0
  69. data/examples/api-samples/views/sample26.haml +54 -0
  70. data/examples/api-samples/views/sample27.haml +122 -0
  71. data/examples/api-samples/views/sample28.haml +47 -0
  72. data/examples/api-samples/views/sample29.haml +70 -0
  73. data/examples/api-samples/views/sample3.haml +3 -2
  74. data/examples/api-samples/views/sample30.haml +46 -0
  75. data/examples/api-samples/views/sample31.haml +114 -0
  76. data/examples/api-samples/views/sample4.haml +3 -2
  77. data/examples/api-samples/views/sample5.haml +3 -2
  78. data/examples/api-samples/views/sample6.haml +3 -2
  79. data/examples/api-samples/views/sample7.haml +3 -2
  80. data/examples/api-samples/views/sample8.haml +3 -2
  81. data/examples/api-samples/views/sample9.haml +3 -2
  82. data/examples/viewer/Gemfile +1 -1
  83. data/groupdocs.gemspec +3 -3
  84. data/lib/groupdocs/datasource.rb +22 -0
  85. data/lib/groupdocs/document.rb +493 -43
  86. data/lib/groupdocs/document/annotation.rb +73 -0
  87. data/lib/groupdocs/job.rb +82 -1
  88. data/lib/groupdocs/post.rb +83 -0
  89. data/lib/groupdocs/questionnaire.rb +41 -0
  90. data/lib/groupdocs/signature.rb +342 -0
  91. data/lib/groupdocs/signature/envelope.rb +56 -0
  92. data/lib/groupdocs/signature/form.rb +47 -5
  93. data/lib/groupdocs/signature/shared/field_methods.rb +37 -0
  94. data/lib/groupdocs/storage/file.rb +83 -0
  95. data/lib/groupdocs/subscription.rb +218 -0
  96. data/lib/groupdocs/user.rb +422 -1
  97. data/lib/groupdocs/version.rb +1 -1
  98. data/spec/groupdocs/job_spec.rb +4 -5
  99. data/spec/groupdocs/user_spec.rb +157 -0
  100. data/spec/support/json/annotation_resize.json +11 -0
  101. data/spec/support/json/annotation_text_color.json +10 -0
  102. data/spec/support/json/annotation_text_info.json +11 -0
  103. data/spec/support/json/document_content_get.json +8 -0
  104. data/spec/support/json/document_edit_lock_get.json +10 -0
  105. data/spec/support/json/document_editlock_remove.json +8 -0
  106. data/spec/support/json/document_page_html_urls_get.json +14 -0
  107. data/spec/support/json/document_password_set.json +19 -0
  108. data/spec/support/json/document_representations.json +25 -0
  109. data/spec/support/json/document_shared_documents_get.json +32 -0
  110. data/spec/support/json/document_tags_get.json +9 -0
  111. data/spec/support/json/document_tags_remove.json +8 -0
  112. data/spec/support/json/document_tags_set.json +8 -0
  113. data/spec/support/json/document_user_status_set.json +12 -0
  114. data/spec/support/json/job_documents.json +103 -35
  115. data/spec/support/json/job_xml_get.json +30 -0
  116. data/spec/support/json/jobs_documents.json +40 -0
  117. data/spec/support/json/user_get_profile.json +73 -0
  118. metadata +49 -177
@@ -4,8 +4,9 @@
4
4
  .samplecontent{:style => 'padding:10px;'}
5
5
  %i This sample will show how to list thumbnails for documents in the GroupDocs account using Ruby SDK
6
6
  %br/
7
- %i You can find documentation for this sample
8
- %a{:href => '/docs/sample7.html'} here
7
+ %br/
8
+ %span.documentation
9
+ %a{:href => '/docs/sample7.html'} Builtin documentation for this sample
9
10
  %br/
10
11
  %br/
11
12
  %p
@@ -4,8 +4,9 @@
4
4
  .samplecontent{:style => 'padding:10px;'}
5
5
  %i This sample will show how to return a URL representing a single page of particular Document in the GroupDocs account using Ruby SDK
6
6
  %br/
7
- %i You can find documentation for this sample
8
- %a{:href => '/docs/sample8.html'} here
7
+ %br/
8
+ %span.documentation
9
+ %a{:href => '/docs/sample8.html'} Builtin documentation for this sample
9
10
  %br/
10
11
  %br/
11
12
  %p
@@ -4,8 +4,9 @@
4
4
  .samplecontent{:style => 'padding:10px;'}
5
5
  %i This sample will show how to generate an embedded Viewer URL for particular Document in the GroupDocs account using Ruby SDK
6
6
  %br/
7
- %i You can find documentation for this sample
8
- %a{:href => '/docs/sample9.html'} here
7
+ %br/
8
+ %span.documentation
9
+ %a{:href => '/docs/sample9.html'} Builtin documentation for this sample
9
10
  %br/
10
11
  %br/
11
12
  %p
@@ -1,4 +1,4 @@
1
- source :rubygems
1
+ source 'https://rubygems.org'
2
2
 
3
3
  gem 'sinatra'
4
4
  gem 'groupdocs'
data/groupdocs.gemspec CHANGED
@@ -4,8 +4,8 @@ require 'groupdocs/version'
4
4
  Gem::Specification.new do |s|
5
5
  s.name = 'groupdocs'
6
6
  s.version = GroupDocs::VERSION
7
- s.authors = 'Alex Rodionov'
8
- s.email = 'p0deje@gmail.com'
7
+ s.authors = 'Marketplace Team'
8
+ s.email = 'marketplace@groupdocs.com'
9
9
  s.homepage = 'https://github.com/groupdocs/groupdocs-ruby'
10
10
  s.summary = 'Ruby SDK for GroupDocs REST API'
11
11
  s.description = 'Ruby SDK for GroupDocs REST API'
@@ -18,7 +18,7 @@ Gem::Specification.new do |s|
18
18
  s.add_runtime_dependency 'rest-client' , '~> 1.6'
19
19
  s.add_runtime_dependency 'json' , '~> 1.7'
20
20
  s.add_runtime_dependency 'mime-types' , '~> 1.19'
21
- s.add_runtime_dependency 'activesupport'
21
+ s.add_runtime_dependency 'activesupport' , '>= 3.0'
22
22
 
23
23
  s.add_development_dependency 'rspec' , '~> 2.12'
24
24
  s.add_development_dependency 'fuubar' , '~> 1.1'
@@ -139,6 +139,28 @@ module GroupDocs
139
139
  end.execute!
140
140
  end
141
141
 
142
+ #
143
+ # Updates datasource.
144
+ #
145
+ # @example
146
+ # field = GroupDocs::DataSource::Field.new(field: 'test', values: %w(test test))
147
+ # datasource = GroupDocs::DataSource.get!(180)
148
+ # datasource.add_field(field)
149
+ # datasource.update_fields!
150
+ #
151
+ # @param [Hash] access Access credentials
152
+ # @option access [String] :client_id
153
+ # @option access [String] :private_key
154
+ #
155
+ def update_fields!(access = {})
156
+ Api::Request.new do |request|
157
+ request[:access] = access
158
+ request[:method] = :PUT
159
+ request[:path] = "/merge/{{client_id}}/datasources/#{id}/fields"
160
+ request[:request_body] = to_hash
161
+ end.execute!
162
+ end
163
+
142
164
  #
143
165
  # Removes datasource.
144
166
  #
@@ -9,11 +9,11 @@ module GroupDocs
9
9
  require 'groupdocs/document/view'
10
10
 
11
11
  ACCESS_MODES = {
12
- :private => 0,
13
- :restricted => 1,
14
- :public => 2,
15
- :inherited => 254,
16
- :denied => 255,
12
+ :private => 0,
13
+ :restricted => 1,
14
+ :public => 2,
15
+ :inherited => 254,
16
+ :denied => 255,
17
17
  }
18
18
 
19
19
  include Api::Helpers::AccessMode
@@ -141,6 +141,24 @@ module GroupDocs
141
141
  signed_documents
142
142
  end
143
143
 
144
+ #
145
+ # Get sign documents status
146
+ #
147
+ # @param [String] job_guid
148
+ # @param [Hash] access Access credentials
149
+ # @option access [String] :client_id
150
+ # @option access [String] :private_key
151
+ #
152
+ def document_status!(job_guid, access = {})
153
+ json = Api::Request.new do |request|
154
+ request[:access] = access
155
+ request[:method] = :PUT
156
+ request[:path] = "/signature/{{client_id}}/documents/#{job_guid}"
157
+ end.execute!
158
+
159
+ json[:documents]
160
+ end
161
+
144
162
  #
145
163
  # Returns a document metadata by given path.
146
164
  #
@@ -184,40 +202,40 @@ module GroupDocs
184
202
  # @attr [Integer] field_count
185
203
  attr_accessor :field_count
186
204
  [
187
- :news ,
188
- :alerts ,
189
- :support ,
190
- :is_real_time_broadcast ,
191
- :is_scroll_broadcast ,
192
- :is_zoom_broadcast ,
193
- :is_annotation_navigation_widget ,
194
- :is_annotation_zoom_widget ,
195
- :is_annotation_download_widget ,
196
- :is_annotation_print_widget ,
197
- :is_annotation_help_widget ,
198
- :is_right_panel ,
199
- :is_thumbnails_panel ,
200
- :is_toolbar ,
201
- :is_text_annotation_button ,
202
- :is_rectangle_annotation_button ,
203
- :is_point_annotation_button ,
204
- :is_strikeout_annotation_button ,
205
- :is_polyline_annotation_button ,
206
- :is_typewriter_annotation_button ,
207
- :is_watermark_annotation_button ,
208
- :is_viewer_navigation_widget ,
209
- :is_viewer_zoom_widget ,
210
- :is_viewer_download_widget ,
211
- :is_viewer_print_widget ,
212
- :is_viewer_help_widget ,
205
+ :news ,
206
+ :alerts ,
207
+ :support ,
208
+ :is_real_time_broadcast ,
209
+ :is_scroll_broadcast ,
210
+ :is_zoom_broadcast ,
211
+ :is_annotation_navigation_widget ,
212
+ :is_annotation_zoom_widget ,
213
+ :is_annotation_download_widget ,
214
+ :is_annotation_print_widget ,
215
+ :is_annotation_help_widget ,
216
+ :is_right_panel ,
217
+ :is_thumbnails_panel ,
218
+ :is_toolbar ,
219
+ :is_text_annotation_button ,
220
+ :is_rectangle_annotation_button ,
221
+ :is_point_annotation_button ,
222
+ :is_strikeout_annotation_button ,
223
+ :is_polyline_annotation_button ,
224
+ :is_typewriter_annotation_button ,
225
+ :is_watermark_annotation_button ,
226
+ :is_viewer_navigation_widget ,
227
+ :is_viewer_zoom_widget ,
228
+ :is_viewer_download_widget ,
229
+ :is_viewer_print_widget ,
230
+ :is_viewer_help_widget ,
213
231
  ].each do |option|
214
232
  # @attr [Boolean] option
215
233
  attr_accessor :"#{option}_enabled"
216
234
  end
217
235
  [
218
- :standard_header_always ,
219
- :annotation_document_name ,
220
- :viewer_document_name ,
236
+ :standard_header_always ,
237
+ :annotation_document_name ,
238
+ :viewer_document_name ,
221
239
  ].each do |option|
222
240
  # @attr [Boolean] option
223
241
  attr_accessor :"is_#{option}_shown"
@@ -277,7 +295,101 @@ module GroupDocs
277
295
  def initialize(options = {}, &blk)
278
296
  super(options, &blk)
279
297
  file.is_a?(GroupDocs::Storage::File) or raise ArgumentError,
280
- "You have to pass GroupDocs::Storage::File object: #{file.inspect}."
298
+ "You have to pass GroupDocs::Storage::File object: #{file.inspect}."
299
+ end
300
+
301
+ #
302
+ # Returns a stream of bytes representing a particular document page image.
303
+ #
304
+ #
305
+ # @param [Integer] page_number Document page number to get image for
306
+ # @param [Integer] dimension Image dimension "<width>x<height>"(500x600)
307
+ # @param [Hash] options
308
+ # @option options [Integer] :quality Image quality in range 1-100.
309
+ # @option options [Boolean] :use_pdf A flag indicating whether a document should be converted to PDF format before generating the image.
310
+ # @option options [Boolean] :expires The date and time in milliseconds since epoch the URL expires.
311
+ # @param [Hash] access Access credentials
312
+ # @option access [String] :client_id
313
+ # @option access [String] :private_key
314
+ # @return []
315
+ #
316
+ def page_image!(path, name, page_number, dimension, options = {}, access = {})
317
+ api = Api::Request.new do |request|
318
+ request[:access] = access
319
+ request[:method] = :DOWNLOAD
320
+ request[:path] = "/doc/{{client_id}}/files/#{file.guid}/pages/#{page_number}/images/#{dimension}"
321
+ end
322
+ api.add_params(options)
323
+ response = api.execute!
324
+
325
+ filepath = "#{path}/#{name}"
326
+ Object::File.open(filepath, 'wb') do |file|
327
+ file.write(response)
328
+ end
329
+
330
+ filepath
331
+
332
+ end
333
+
334
+
335
+ #
336
+ # Returns an HTML Fixed representation of a particular document page
337
+ #
338
+ #
339
+ # @param [Integer] page_number Document page number to get html for
340
+ # @param [Hash] options
341
+ # @option options [Boolean] :expires The date and time in milliseconds since epoch the URL expires.
342
+ # @param [Hash] access Access credentials
343
+ # @option access [String] :client_id
344
+ # @option access [String] :private_key
345
+ # @return []
346
+ #
347
+ def page_fixed_html!(path, name, page_number, options = {}, access = {})
348
+ api = Api::Request.new do |request|
349
+ request[:access] = access
350
+ request[:method] = :DOWNLOAD
351
+ request[:path] = "/doc/{{client_id}}/files/#{file.guid}/pages/#{page_number}/htmlFixed"
352
+ end
353
+ api.add_params(options)
354
+ response = api.execute!
355
+
356
+ filepath = "#{path}/#{name}"
357
+ Object::File.open(filepath, 'wb') do |file|
358
+ file.write(response)
359
+ end
360
+
361
+ filepath
362
+
363
+ end
364
+
365
+ #
366
+ # Returns an HTML representation of a particular document page
367
+ #
368
+ #
369
+ # @param [Integer] page_number Document page number to get html for
370
+ # @param [Hash] options
371
+ # @option options [Boolean] :expires The date and time in milliseconds since epoch the URL expires.
372
+ # @param [Hash] access Access credentials
373
+ # @option access [String] :client_id
374
+ # @option access [String] :private_key
375
+ # @return []
376
+ #
377
+ def page_html!(path, name, page_number, options = {}, access = {})
378
+ api = Api::Request.new do |request|
379
+ request[:access] = access
380
+ request[:method] = :DOWNLOAD
381
+ request[:path] = "/doc/{{client_id}}/files/#{file.guid}/pages/#{page_number}/htmlRepresentations"
382
+ end
383
+ api.add_params(options)
384
+ response = api.execute!
385
+
386
+ filepath = "#{path}/#{name}"
387
+ Object::File.open(filepath, 'wb') do |file|
388
+ file.write(response)
389
+ end
390
+
391
+ filepath
392
+
281
393
  end
282
394
 
283
395
  #
@@ -313,6 +425,143 @@ module GroupDocs
313
425
  json[:url]
314
426
  end
315
427
 
428
+ #
429
+ # Returns array of URLs to html representing document pages.
430
+ #
431
+ # @example
432
+ # file = GroupDocs::Storage::Folder.list!.last
433
+ # document = file.to_document
434
+ # document.page_html_urls! 1024, 768, first_page: 0, page_count: 1
435
+ #
436
+ # @param [Hash] options
437
+ # @option options [Integer] :first_page Start page to return image for (starting with 0)
438
+ # @option options [Integer] :page_count Number of pages to return image for
439
+ # @param [Hash] access Access credentials
440
+ # @option access [String] :client_id
441
+ # @option access [String] :private_key
442
+ # @return [Array<String>]
443
+ #
444
+ def page_html_urls!(options = {}, access = {})
445
+ api = Api::Request.new do |request|
446
+ request[:access] = access
447
+ request[:method] = :GET
448
+ request[:path] = "/doc/{{client_id}}/files/#{file.guid}/pages/htmlRepresentationUrls"
449
+ end
450
+ api.add_params(options)
451
+ json = api.execute!
452
+
453
+ json[:url]
454
+ end
455
+
456
+ #
457
+ # Returns editing metadata.
458
+ #
459
+ # @param [Hash] access Access credentials
460
+ # @option access [String] :client_id
461
+ # @option access [String] :private_key
462
+ #
463
+ def editlock!(access = {})
464
+ json = Api::Request.new do |request|
465
+ request[:access] = access
466
+ request[:method] = :GET
467
+ request[:path] = "/doc/{{client_id}}/files/#{file.guid}/editlock"
468
+ end.execute!
469
+
470
+ json[:edit_url]
471
+ end
472
+
473
+ #
474
+ # Removes edit lock for a document and replaces the document with its edited copy
475
+ #
476
+ # @param [Hash] options
477
+ # @option options [String] :lockId Start page to return image for (starting with 0)
478
+ # @param [Hash] access Access credentials
479
+ # @option access [String] :client_id
480
+ # @option access [String] :private_key
481
+ # @return [Integer]
482
+ #
483
+ def editlock_clear!(options = {}, access = {})
484
+ api = Api::Request.new do |request|
485
+ request[:access] = access
486
+ request[:method] = :DELETE
487
+ request[:path] = "/doc/{{client_id}}/files/#{file.guid}/editlock"
488
+ end
489
+ api.add_params(options).execute!
490
+
491
+ end
492
+
493
+ #
494
+ # Returns tags assigned to the document
495
+ #
496
+ # @param [Hash] access Access credentials
497
+ # @option access [String] :client_id
498
+ # @option access [String] :private_key
499
+ # @return [Array<String>]
500
+ #
501
+ def tags!(access = {})
502
+ Api::Request.new do |request|
503
+ request[:access] = access
504
+ request[:method] = :GET
505
+ request[:path] = "/doc/{{client_id}}/files/#{file.guid}/tags"
506
+ end.execute!
507
+
508
+ end
509
+
510
+ #
511
+ # Assign tags to the document.
512
+ #
513
+ # @param [Hash] access Access credentials
514
+ # @option access [String] :client_id
515
+ # @option access [String] :private_key
516
+ # @return [String]
517
+ #
518
+ def tags_set!(access = {})
519
+ json = Api::Request.new do |request|
520
+ request[:access] = access
521
+ request[:method] = :PUT
522
+ request[:path] = "/doc/{{client_id}}/files/#{file.guid}/tags"
523
+ end.execute!
524
+
525
+ json[:document_id]
526
+ end
527
+
528
+ #
529
+ # Removes tags assigned to the document
530
+ #
531
+ # @param [Hash] access Access credentials
532
+ # @option access [String] :client_id
533
+ # @option access [String] :private_key
534
+ # @return [String]
535
+ #
536
+ def tags_clear!(access = {})
537
+ json = Api::Request.new do |request|
538
+ request[:access] = access
539
+ request[:method] = :DELETE
540
+ request[:path] = "/doc/{{client_id}}/files/#{file.guid}/tags"
541
+ end.execute!
542
+
543
+ json[:document_id]
544
+ end
545
+
546
+ #
547
+ # Returns document content
548
+ #
549
+ # @param [String] content_type Content type
550
+ # @param [Hash] access Access credentials
551
+ # @option access [String] :client_id
552
+ # @option access [String] :private_key
553
+ # @return [String]
554
+ #
555
+ def content!(content_type, access = {})
556
+ json = Api::Request.new do |request|
557
+ request[:access] = access
558
+ request[:method] = :GET
559
+ request[:path] = "/doc/{{client_id}}/files/#{file.guid}/content/#{content_type}"
560
+ end.execute!
561
+
562
+ json[:content]
563
+ end
564
+
316
565
  #
317
566
  # Returns array of URLs to images representing document pages thumbnails.
318
567
  #
@@ -344,6 +593,36 @@ module GroupDocs
344
593
  json[:image_urls]
345
594
  end
346
595
 
596
+ #
597
+ # Returns array of URLs to images representing document pages htmlRepresentations.
598
+ #
599
+ # @example
600
+ # file = GroupDocs::Storage::Folder.list!.last
601
+ # document = file.to_document
602
+ # document.thumbnails! first_page: 0, page_count: 1, passwordSalt: ***
603
+ #
604
+ # @param [Hash] options
605
+ # @option options [Integer] :page_number Start page to return image for (starting with 0)
606
+ # @option options [Integer] :page_count Number of pages to return image for
607
+ # @option options [Integer] :passwordSalt
608
+ # @param [Hash] access Access credentials
609
+ # @option access [String] :client_id
610
+ # @option access [String] :private_key
611
+ # @return [Array<String>]
612
+ #
613
+ def representations!(options = {}, access = {})
614
+ api = Api::Request.new do |request|
615
+ request[:access] = access
616
+ request[:method] = :POST
617
+ request[:path] = "/doc/{{client_id}}/files/#{file.guid}/htmlRepresentations"
618
+ end
619
+ api.add_params(options)
620
+ json = api.execute!
621
+
622
+ json[:pageHtml]
623
+ end
624
+
625
+
347
626
  #
348
627
  # Returns access mode of document.
349
628
  #
@@ -356,7 +635,7 @@ module GroupDocs
356
635
  json = Api::Request.new do |request|
357
636
  request[:access] = access
358
637
  request[:method] = :GET
359
- request[:path] = "/doc/{{client_id}}/files/#{file.id}/accessinfo"
638
+ request[:path] = "/doc/{{client_id}}/files/#{file.guid}/accessinfo"
360
639
  end.execute!
361
640
 
362
641
  parse_access_mode(json[:access])
@@ -375,7 +654,7 @@ module GroupDocs
375
654
  api = Api::Request.new do |request|
376
655
  request[:access] = access
377
656
  request[:method] = :PUT
378
- request[:path] = "/doc/{{client_id}}/files/#{file.id}/accessinfo"
657
+ request[:path] = "/doc/{{client_id}}/files/#{file.guid}/accessinfo"
379
658
  end
380
659
  api.add_params(:mode => ACCESS_MODES[mode])
381
660
  json = api.execute!
@@ -474,6 +753,29 @@ module GroupDocs
474
753
  end
475
754
  end
476
755
 
756
+ #
757
+ # Returns an array of users a document is shared with.
758
+ # @param [String] sharers_types
759
+ # @param [Hash] options
760
+ # @option options [String] :page_index
761
+ # @option options [String] :page_size
762
+ # @option options [String] :order_by
763
+ # @option options [Boolean] :order_ask
764
+ # @param [Hash] access Access credentials
765
+ # @option access [String] :client_id
766
+ # @option access [String] :private_key
767
+ # @return [Array<GroupDocs::User>]
768
+ #
769
+ def shared_documents!(sharers_types, options = {}, access = {})
770
+ api = Api::Request.new do |request|
771
+ request[:access] = access
772
+ request[:method] = :GET
773
+ request[:path] = "/doc/{{client_id}}/shares/#{sharers_types}"
774
+ end
775
+ api.add_params(options).execute!
776
+
777
+ end
778
+
477
779
  #
478
780
  # Sets document sharers to given emails.
479
781
  #
@@ -502,6 +804,44 @@ module GroupDocs
502
804
  end
503
805
  end
504
806
 
807
+ #
808
+ # Sets document password.
809
+ #
810
+ # @param [String] password New password for document
811
+ # @param [Hash] access Access credentials
812
+ # @option access [String] :client_id
813
+ # @option access [String] :private_key
814
+ # @return [Array<GroupDocs::User>]
815
+ #
816
+ def password_set!(password, access = {})
817
+ Api::Request.new do |request|
818
+ request[:access] = access
819
+ request[:method] = :PUT
820
+ request[:path] = "/doc/{{client_id}}/files/#{file.guid}/password"
821
+ request[:request_body] = password
822
+ end.execute!
823
+
824
+ end
825
+
826
+ #
827
+ # Sets document user status.
828
+ #
829
+ # @param [String] status
830
+ # @param [Hash] access Access credentials
831
+ # @option access [String] :client_id
832
+ # @option access [String] :private_key
833
+ # @return [String]
834
+ #
835
+ def user_status_set!(status, access = {})
836
+ Api::Request.new do |request|
837
+ request[:access] = access
838
+ request[:method] = :PUT
839
+ request[:path] = "/doc/{{client_id}}/files/#{file.guid}/sharer"
840
+ request[:request_body] = status
841
+ end.execute!
842
+
843
+ end
844
+
505
845
  #
506
846
  # Clears sharers list.
507
847
  #
@@ -516,6 +856,7 @@ module GroupDocs
516
856
  request[:method] = :DELETE
517
857
  request[:path] = "/doc/{{client_id}}/files/#{file.id}/sharers"
518
858
  end.execute![:shared_users]
859
+
519
860
  end
520
861
 
521
862
  #
@@ -570,7 +911,7 @@ module GroupDocs
570
911
  #
571
912
  def datasource!(datasource, options = {}, access = {})
572
913
  datasource.is_a?(GroupDocs::DataSource) or raise ArgumentError,
573
- "Datasource should be GroupDocs::DataSource object, received: #{datasource.inspect}"
914
+ "Datasource should be GroupDocs::DataSource object, received: #{datasource.inspect}"
574
915
 
575
916
  api = Api::Request.new do |request|
576
917
  request[:access] = access
@@ -583,6 +924,39 @@ module GroupDocs
583
924
  Job.new(:id => json[:job_id])
584
925
  end
585
926
 
927
+ #
928
+ # Creates new job to merge datasource fields into document.
929
+ #
930
+ # @param [GroupDocs::DataSource] datasource
931
+ # @param [Hash] options
932
+ # @option options [Boolean] :new_type New file format type
933
+ # @option options [Boolean] :email_results Set to true if converted document should be emailed
934
+ # @option options [Boolean] :assembly_name
935
+ # @param [Array] datasourceFields (:name [String], :value [String], :contentType [String], :type [String], :nested_fields [<Array> datasourceFields])
936
+ # @param [Hash] access Access credentials
937
+ # @option access [String] :client_id
938
+ # @option access [String] :private_key
939
+ # @return [GroupDocs::Job]
940
+ #
941
+ # @raise [ArgumentError] if datasource is not GroupDocs::DataSource object
942
+ #
943
+ def datasource_fields!(datasource, datasourceFields, options = {}, access = {})
944
+ datasource.is_a?(GroupDocs::DataSource) or raise ArgumentError,
945
+ "Datasource should be GroupDocs::DataSource object, received: #{datasource.inspect}"
946
+
947
+ api = Api::Request.new do |request|
948
+ request[:access] = access
949
+ request[:method] = :POST
950
+ request[:path] = "/merge/{{client_id}}/files/#{file.guid}/datasources/"
951
+ request[:request_body] = datasourceFields
952
+ end
953
+ api.add_params(options)
954
+ json = api.execute!
955
+
956
+ Job.new(:id => json[:job_id])
957
+ end
958
+
959
+
586
960
  #
587
961
  # Returns an array of questionnaires.
588
962
  #
@@ -615,7 +989,7 @@ module GroupDocs
615
989
  #
616
990
  def add_questionnaire!(questionnaire, access = {})
617
991
  questionnaire.is_a?(GroupDocs::Questionnaire) or raise ArgumentError,
618
- "Questionnaire should be GroupDocs::Questionnaire object, received: #{questionnaire.inspect}"
992
+ "Questionnaire should be GroupDocs::Questionnaire object, received: #{questionnaire.inspect}"
619
993
 
620
994
  Api::Request.new do |request|
621
995
  request[:access] = access
@@ -637,7 +1011,7 @@ module GroupDocs
637
1011
  #
638
1012
  def create_questionnaire!(questionnaire, access = {})
639
1013
  questionnaire.is_a?(GroupDocs::Questionnaire) or raise ArgumentError,
640
- "Questionnaire should be GroupDocs::Questionnaire object, received: #{questionnaire.inspect}"
1014
+ "Questionnaire should be GroupDocs::Questionnaire object, received: #{questionnaire.inspect}"
641
1015
 
642
1016
  json = Api::Request.new do |request|
643
1017
  request[:access] = access
@@ -662,7 +1036,7 @@ module GroupDocs
662
1036
  #
663
1037
  def remove_questionnaire!(questionnaire, access = {})
664
1038
  questionnaire.is_a?(GroupDocs::Questionnaire) or raise ArgumentError,
665
- "Questionnaire should be GroupDocs::Questionnaire object, received: #{questionnaire.inspect}"
1039
+ "Questionnaire should be GroupDocs::Questionnaire object, received: #{questionnaire.inspect}"
666
1040
 
667
1041
  Api::Request.new do |request|
668
1042
  request[:access] = access
@@ -727,7 +1101,7 @@ module GroupDocs
727
1101
  #
728
1102
  def compare!(document, access = {})
729
1103
  document.is_a?(GroupDocs::Document) or raise ArgumentError,
730
- "Document should be GroupDocs::Document object, received: #{document.inspect}"
1104
+ "Document should be GroupDocs::Document object, received: #{document.inspect}"
731
1105
 
732
1106
  api = Api::Request.new do |request|
733
1107
  request[:access] = access
@@ -740,6 +1114,37 @@ module GroupDocs
740
1114
  Job.new(:id => json[:job_id])
741
1115
  end
742
1116
 
1117
+ #
1118
+ # Schedules a job for comparing document with given.
1119
+ #
1120
+ # @param [Array] changes Comparison changes to update (accept or reject)
1121
+ # @option id [Float] :id
1122
+ # @option type [String] :type
1123
+ # @option action [String] :action
1124
+ # @option Page [Array] :page
1125
+ # @option box [Array] :box
1126
+ # @option text [String] :text
1127
+ # @param [Hash] access Access credentials
1128
+ # @option access [String] :client_id
1129
+ # @option access [String] :private_key
1130
+ # @return [GroupDocs::Change]
1131
+ #
1132
+ def update_changes!(changes, access = {})
1133
+
1134
+ api = Api::Request.new do |request|
1135
+ request[:access] = access
1136
+ request[:method] = :PUT
1137
+ request[:path] = "/comparison/{{client_id}}/comparison/changes"
1138
+ request[:request_body] = changes
1139
+ end
1140
+ api.add_params(:resultFileId => file.guid)
1141
+ json = api.execute!
1142
+
1143
+ json[:changes].map do |change|
1144
+ Document::Change.new(change)
1145
+ end
1146
+ end
1147
+
743
1148
  #
744
1149
  # Returns an array of changes in document.
745
1150
  #
@@ -769,6 +1174,33 @@ module GroupDocs
769
1174
  end
770
1175
  end
771
1176
 
1177
+ #
1178
+ # Download comparison result file.
1179
+ #
1180
+ # @param [Hash] options
1181
+ # @option format [String] :format Comparison result file GUID
1182
+ # @option resultFileId [String] :resultFileId Comparison result file GUID
1183
+ # @param [Hash] access Access credentials
1184
+ # @option access [String] :client_id
1185
+ # @option access [String] :private_key
1186
+ #
1187
+ #
1188
+ def download!( path, name, options = {}, access = {})
1189
+ api = Api::Request.new do |request|
1190
+ request[:access] = access
1191
+ request[:method] = :DOWNLOAD
1192
+ request[:path] = "/comparison/{{client_id}}/comparison/download"
1193
+ end
1194
+ api.add_params(options)
1195
+ response = api.execute!
1196
+
1197
+ filepath = "#{path}/#{name}"
1198
+ Object::File.open(filepath, 'wb') do |file|
1199
+ file.write(response)
1200
+ end
1201
+
1202
+ end
1203
+
772
1204
  #
773
1205
  # Returns document annotations collaborators.
774
1206
  #
@@ -822,7 +1254,7 @@ module GroupDocs
822
1254
  #
823
1255
  def add_collaborator!(collaborator, access = {})
824
1256
  collaborator.is_a?(GroupDocs::User) or raise ArgumentError,
825
- "Collaborator should be GroupDocs::User object, received: #{collaborator.inspect}"
1257
+ "Collaborator should be GroupDocs::User object, received: #{collaborator.inspect}"
826
1258
 
827
1259
  Api::Request.new do |request|
828
1260
  request[:access] = access
@@ -832,6 +1264,24 @@ module GroupDocs
832
1264
  end.execute!
833
1265
  end
834
1266
 
1267
+
1268
+ #
1269
+ # Delete document reviewer
1270
+ #
1271
+ # @param [String] reviewerId Reviewer Id
1272
+ # @param [Hash] access Access credentials
1273
+ # @option access [String] :client_id
1274
+ # @option access [String] :private_key
1275
+ #
1276
+ def remove_collaborators!(reviewerId, access = {})
1277
+ Api::Request.new do |request|
1278
+ request[:access] = access
1279
+ request[:method] = :DELETE
1280
+ request[:path] = "/ant/{{client_id}}/files/#{file.guid}/collaborators/#{reviewerId}"
1281
+ end.execute!
1282
+
1283
+ end
1284
+
835
1285
  #
836
1286
  # Sets reviewers for document.
837
1287
  #