groupdocs 1.5.3 → 1.5.4

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.
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
  #