groupdocs 2.2.0 → 2.3.0

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 (324) hide show
  1. checksums.yaml +7 -0
  2. data/.travis.yml +9 -9
  3. data/CHANGELOG.md +482 -477
  4. data/Gemfile +3 -3
  5. data/LICENSE.txt +21 -21
  6. data/README.md +94 -94
  7. data/Rakefile +9 -9
  8. data/examples/README.md +12 -12
  9. data/examples/api-samples/Gemfile +5 -5
  10. data/examples/api-samples/Gemfile.lock +49 -49
  11. data/examples/api-samples/README.md +23 -23
  12. data/examples/api-samples/public/css/style.css +229 -229
  13. data/examples/api-samples/public/docs/annotation-sample.html +167 -167
  14. data/examples/api-samples/public/docs/docco.css +500 -500
  15. data/examples/api-samples/public/docs/envelope-sample.html +374 -374
  16. data/examples/api-samples/public/docs/sample01.html +181 -181
  17. data/examples/api-samples/public/docs/sample02.html +199 -199
  18. data/examples/api-samples/public/docs/sample03.html +318 -318
  19. data/examples/api-samples/public/docs/sample04.html +217 -217
  20. data/examples/api-samples/public/docs/sample05.html +296 -296
  21. data/examples/api-samples/public/docs/sample06.html +347 -347
  22. data/examples/api-samples/public/docs/sample07.html +209 -209
  23. data/examples/api-samples/public/docs/sample08.html +277 -277
  24. data/examples/api-samples/public/docs/sample09.html +314 -314
  25. data/examples/api-samples/public/docs/sample10.html +270 -270
  26. data/examples/api-samples/public/docs/sample11.html +462 -462
  27. data/examples/api-samples/public/docs/sample12.html +199 -199
  28. data/examples/api-samples/public/docs/sample13.html +201 -201
  29. data/examples/api-samples/public/docs/sample14.html +204 -204
  30. data/examples/api-samples/public/docs/sample15.html +182 -182
  31. data/examples/api-samples/public/docs/sample16.html +234 -234
  32. data/examples/api-samples/public/docs/sample17.html +309 -309
  33. data/examples/api-samples/public/docs/sample18.html +721 -721
  34. data/examples/api-samples/public/docs/sample19.html +631 -631
  35. data/examples/api-samples/public/docs/sample20.html +230 -230
  36. data/examples/api-samples/public/docs/sample21.html +790 -790
  37. data/examples/api-samples/public/docs/sample22.html +408 -408
  38. data/examples/api-samples/public/docs/sample25.html +550 -550
  39. data/examples/api-samples/public/templates/base-simple_source.html +191 -191
  40. data/examples/api-samples/public/templates/testdocument.html +100 -100
  41. data/examples/api-samples/public/templates/welcome.htm +137 -137
  42. data/examples/api-samples/samples/annotation-sample.rb +56 -56
  43. data/examples/api-samples/samples/envelope-sample.rb +133 -133
  44. data/examples/api-samples/samples/sample01.rb +44 -44
  45. data/examples/api-samples/samples/sample02.rb +50 -50
  46. data/examples/api-samples/samples/sample03.rb +79 -79
  47. data/examples/api-samples/samples/sample04.rb +54 -54
  48. data/examples/api-samples/samples/sample05.rb +83 -83
  49. data/examples/api-samples/samples/sample06.rb +86 -86
  50. data/examples/api-samples/samples/sample07.rb +59 -59
  51. data/examples/api-samples/samples/sample08.rb +76 -76
  52. data/examples/api-samples/samples/sample09.rb +85 -85
  53. data/examples/api-samples/samples/sample10.rb +70 -70
  54. data/examples/api-samples/samples/sample11.rb +132 -132
  55. data/examples/api-samples/samples/sample12.rb +48 -48
  56. data/examples/api-samples/samples/sample13.rb +49 -49
  57. data/examples/api-samples/samples/sample14.rb +54 -54
  58. data/examples/api-samples/samples/sample15.rb +43 -43
  59. data/examples/api-samples/samples/sample16.rb +57 -57
  60. data/examples/api-samples/samples/sample17.rb +70 -70
  61. data/examples/api-samples/samples/sample18.rb +190 -190
  62. data/examples/api-samples/samples/sample19.rb +188 -188
  63. data/examples/api-samples/samples/sample20.rb +68 -68
  64. data/examples/api-samples/samples/sample21.rb +212 -212
  65. data/examples/api-samples/samples/sample22.rb +109 -109
  66. data/examples/api-samples/samples/sample25.rb +127 -127
  67. data/examples/api-samples/views/_others_samples.haml +233 -233
  68. data/examples/api-samples/views/annotation_sample.haml +63 -63
  69. data/examples/api-samples/views/envelope_sample.haml +72 -72
  70. data/examples/api-samples/views/index.haml +235 -235
  71. data/examples/api-samples/views/layout.haml +3 -3
  72. data/examples/api-samples/views/sample01.haml +63 -63
  73. data/examples/api-samples/views/sample02.haml +52 -52
  74. data/examples/api-samples/views/sample03.haml +87 -87
  75. data/examples/api-samples/views/sample04.haml +55 -55
  76. data/examples/api-samples/views/sample05.haml +86 -86
  77. data/examples/api-samples/views/sample06.haml +58 -58
  78. data/examples/api-samples/views/sample07.haml +52 -52
  79. data/examples/api-samples/views/sample08.haml +100 -100
  80. data/examples/api-samples/views/sample09.haml +95 -95
  81. data/examples/api-samples/views/sample10.haml +93 -93
  82. data/examples/api-samples/views/sample11.haml +140 -140
  83. data/examples/api-samples/views/sample12.haml +68 -68
  84. data/examples/api-samples/views/sample13.haml +64 -64
  85. data/examples/api-samples/views/sample14.haml +60 -60
  86. data/examples/api-samples/views/sample15.haml +51 -51
  87. data/examples/api-samples/views/sample16.haml +50 -50
  88. data/examples/api-samples/views/sample17.haml +54 -54
  89. data/examples/api-samples/views/sample18.haml +143 -143
  90. data/examples/api-samples/views/sample19.haml +92 -92
  91. data/examples/api-samples/views/sample20.haml +54 -54
  92. data/examples/api-samples/views/sample21.haml +123 -123
  93. data/examples/api-samples/views/sample22.haml +106 -106
  94. data/examples/api-samples/views/sample25.haml +101 -101
  95. data/examples/api-samples/views/sample31.haml +2 -2
  96. data/examples/api-samples/web.rb +20 -20
  97. data/examples/viewer/Gemfile +5 -5
  98. data/examples/viewer/app.rb +52 -52
  99. data/groupdocs.gemspec +31 -31
  100. data/lib/groupdocs.rb +62 -62
  101. data/lib/groupdocs/api.rb +6 -6
  102. data/lib/groupdocs/api/entity.rb +112 -112
  103. data/lib/groupdocs/api/helpers.rb +11 -11
  104. data/lib/groupdocs/api/helpers/access_mode_helper.rb +27 -27
  105. data/lib/groupdocs/api/helpers/access_rights_helper.rb +55 -55
  106. data/lib/groupdocs/api/helpers/accessor_helper.rb +30 -30
  107. data/lib/groupdocs/api/helpers/byte_flag_helper.rb +49 -49
  108. data/lib/groupdocs/api/helpers/credentials_helper.rb +35 -35
  109. data/lib/groupdocs/api/helpers/mime_helper.rb +21 -21
  110. data/lib/groupdocs/api/helpers/path_helper.rb +28 -28
  111. data/lib/groupdocs/api/helpers/rest_helper.rb +99 -99
  112. data/lib/groupdocs/api/helpers/signature_public_helper.rb +22 -22
  113. data/lib/groupdocs/api/helpers/status_helper.rb +27 -27
  114. data/lib/groupdocs/api/helpers/url_helper.rb +101 -101
  115. data/lib/groupdocs/api/request.rb +91 -91
  116. data/lib/groupdocs/datasource.rb +249 -249
  117. data/lib/groupdocs/datasource/field.rb +39 -39
  118. data/lib/groupdocs/document.rb +1550 -1550
  119. data/lib/groupdocs/document/annotation.rb +421 -421
  120. data/lib/groupdocs/document/annotation/reply.rb +173 -173
  121. data/lib/groupdocs/document/annotation/reviewer.rb +66 -66
  122. data/lib/groupdocs/document/change.rb +56 -56
  123. data/lib/groupdocs/document/field.rb +53 -53
  124. data/lib/groupdocs/document/metadata.rb +32 -32
  125. data/lib/groupdocs/document/rectangle.rb +18 -18
  126. data/lib/groupdocs/document/view.rb +36 -36
  127. data/lib/groupdocs/errors.rb +8 -8
  128. data/lib/groupdocs/job.rb +468 -468
  129. data/lib/groupdocs/questionnaire.rb +530 -530
  130. data/lib/groupdocs/questionnaire/collector.rb +335 -335
  131. data/lib/groupdocs/questionnaire/execution.rb +181 -181
  132. data/lib/groupdocs/questionnaire/page.rb +43 -43
  133. data/lib/groupdocs/questionnaire/question.rb +108 -108
  134. data/lib/groupdocs/questionnaire/question/answer.rb +15 -15
  135. data/lib/groupdocs/signature.rb +380 -380
  136. data/lib/groupdocs/signature/contact.rb +181 -181
  137. data/lib/groupdocs/signature/envelope.rb +747 -747
  138. data/lib/groupdocs/signature/envelope/log.rb +20 -20
  139. data/lib/groupdocs/signature/field.rb +286 -286
  140. data/lib/groupdocs/signature/field/location.rb +71 -71
  141. data/lib/groupdocs/signature/form.rb +804 -804
  142. data/lib/groupdocs/signature/list.rb +92 -92
  143. data/lib/groupdocs/signature/recipient.rb +79 -79
  144. data/lib/groupdocs/signature/role.rb +54 -54
  145. data/lib/groupdocs/signature/shared.rb +6 -6
  146. data/lib/groupdocs/signature/shared/document_methods.rb +158 -158
  147. data/lib/groupdocs/signature/shared/entity_fields.rb +76 -76
  148. data/lib/groupdocs/signature/shared/entity_methods.rb +144 -144
  149. data/lib/groupdocs/signature/shared/field_methods.rb +354 -354
  150. data/lib/groupdocs/signature/shared/recipient_methods.rb +75 -75
  151. data/lib/groupdocs/signature/shared/resource_methods.rb +65 -65
  152. data/lib/groupdocs/signature/template.rb +124 -124
  153. data/lib/groupdocs/storage.rb +44 -44
  154. data/lib/groupdocs/storage/file.rb +432 -432
  155. data/lib/groupdocs/storage/folder.rb +288 -288
  156. data/lib/groupdocs/storage/package.rb +48 -48
  157. data/lib/groupdocs/storage/provider.rb +32 -32
  158. data/lib/groupdocs/subscription.rb +323 -323
  159. data/lib/groupdocs/subscription/limit.rb +20 -20
  160. data/lib/groupdocs/user.rb +955 -930
  161. data/lib/groupdocs/version.rb +3 -3
  162. data/spec/groupdocs/api/entity_spec.rb +55 -55
  163. data/spec/groupdocs/api/helpers/access_mode_helper_spec.rb +21 -21
  164. data/spec/groupdocs/api/helpers/access_rights_helper_spec.rb +43 -43
  165. data/spec/groupdocs/api/helpers/accessor_helper_spec.rb +16 -16
  166. data/spec/groupdocs/api/helpers/byte_flag_helper_spec.rb +23 -23
  167. data/spec/groupdocs/api/helpers/credentials_helpers_spec.rb +48 -48
  168. data/spec/groupdocs/api/helpers/mime_helper_spec.rb +16 -16
  169. data/spec/groupdocs/api/helpers/path_helper_spec.rb +15 -15
  170. data/spec/groupdocs/api/helpers/rest_helper_spec.rb +161 -161
  171. data/spec/groupdocs/api/helpers/signature_public_helper_spec.rb +21 -21
  172. data/spec/groupdocs/api/helpers/status_helper_spec.rb +22 -22
  173. data/spec/groupdocs/api/helpers/url_helper_spec.rb +112 -112
  174. data/spec/groupdocs/api/request_spec.rb +112 -112
  175. data/spec/groupdocs/datasource/field_spec.rb +29 -29
  176. data/spec/groupdocs/datasource_spec.rb +145 -145
  177. data/spec/groupdocs/document/annotation/reply_spec.rb +154 -154
  178. data/spec/groupdocs/document/annotation/reviewer_spec.rb +51 -51
  179. data/spec/groupdocs/document/annotation_spec.rb +234 -234
  180. data/spec/groupdocs/document/change_spec.rb +39 -39
  181. data/spec/groupdocs/document/field_spec.rb +28 -28
  182. data/spec/groupdocs/document/metadata_spec.rb +21 -21
  183. data/spec/groupdocs/document/rectangle_spec.rb +14 -14
  184. data/spec/groupdocs/document/view_spec.rb +33 -33
  185. data/spec/groupdocs/document_spec.rb +859 -859
  186. data/spec/groupdocs/errors_spec.rb +7 -7
  187. data/spec/groupdocs/job_spec.rb +323 -323
  188. data/spec/groupdocs/questionnaire/collector_spec.rb +197 -197
  189. data/spec/groupdocs/questionnaire/execution_spec.rb +162 -162
  190. data/spec/groupdocs/questionnaire/page_spec.rb +47 -47
  191. data/spec/groupdocs/questionnaire/question/answer_spec.rb +9 -9
  192. data/spec/groupdocs/questionnaire/question_spec.rb +75 -75
  193. data/spec/groupdocs/questionnaire_spec.rb +295 -295
  194. data/spec/groupdocs/signature/contact_spec.rb +142 -142
  195. data/spec/groupdocs/signature/envelope/log_spec.rb +15 -15
  196. data/spec/groupdocs/signature/envelope_spec.rb +384 -384
  197. data/spec/groupdocs/signature/field/location_spec.rb +40 -40
  198. data/spec/groupdocs/signature/field_spec.rb +235 -235
  199. data/spec/groupdocs/signature/form_spec.rb +205 -205
  200. data/spec/groupdocs/signature/list_spec.rb +87 -87
  201. data/spec/groupdocs/signature/recipient_spec.rb +26 -26
  202. data/spec/groupdocs/signature/role_spec.rb +47 -47
  203. data/spec/groupdocs/signature/template_spec.rb +80 -80
  204. data/spec/groupdocs/signature_spec.rb +194 -194
  205. data/spec/groupdocs/storage/file_spec.rb +303 -303
  206. data/spec/groupdocs/storage/folder_spec.rb +270 -270
  207. data/spec/groupdocs/storage/package_spec.rb +38 -38
  208. data/spec/groupdocs/storage/provider_spec.rb +21 -21
  209. data/spec/groupdocs/storage_spec.rb +27 -27
  210. data/spec/groupdocs/subscription/limit_spec.rb +16 -16
  211. data/spec/groupdocs/subscription_spec.rb +74 -74
  212. data/spec/groupdocs/user_spec.rb +257 -257
  213. data/spec/groupdocs_spec.rb +63 -63
  214. data/spec/spec_helper.rb +73 -73
  215. data/spec/support/json/annotation_access_set.json +11 -11
  216. data/spec/support/json/annotation_collaborators_get.json +16 -16
  217. data/spec/support/json/annotation_collaborators_set.json +16 -16
  218. data/spec/support/json/annotation_create.json +12 -12
  219. data/spec/support/json/annotation_list.json +32 -32
  220. data/spec/support/json/annotation_marker_move.json +10 -10
  221. data/spec/support/json/annotation_move.json +8 -8
  222. data/spec/support/json/annotation_remove.json +9 -9
  223. data/spec/support/json/annotation_replies_create.json +9 -9
  224. data/spec/support/json/annotation_replies_get.json +25 -25
  225. data/spec/support/json/annotation_reviewers_get.json +18 -18
  226. data/spec/support/json/comparison_changes.json +46 -46
  227. data/spec/support/json/comparison_compare.json +8 -8
  228. data/spec/support/json/comparison_document.json +10 -10
  229. data/spec/support/json/contact_add.json +12 -12
  230. data/spec/support/json/contacts_get.json +19 -19
  231. data/spec/support/json/contacts_import.json +8 -8
  232. data/spec/support/json/datasource_add.json +8 -8
  233. data/spec/support/json/datasource_get.json +22 -22
  234. data/spec/support/json/datasource_remove.json +8 -8
  235. data/spec/support/json/datasource_update.json +8 -8
  236. data/spec/support/json/delete_account.json +9 -9
  237. data/spec/support/json/document_access_info_get.json +14 -14
  238. data/spec/support/json/document_convert.json +8 -8
  239. data/spec/support/json/document_datasource.json +10 -10
  240. data/spec/support/json/document_fields.json +34 -34
  241. data/spec/support/json/document_formats.json +8 -8
  242. data/spec/support/json/document_metadata.json +15 -15
  243. data/spec/support/json/document_page_images_get.json +20 -20
  244. data/spec/support/json/document_questionnaire_create.json +9 -9
  245. data/spec/support/json/document_questionnaires.json +23 -23
  246. data/spec/support/json/document_sharers_remove.json +8 -8
  247. data/spec/support/json/document_sharers_set.json +16 -16
  248. data/spec/support/json/document_thumbnails.json +24 -24
  249. data/spec/support/json/document_views.json +32 -32
  250. data/spec/support/json/envelope_get.json +46 -46
  251. data/spec/support/json/envelope_logs.json +16 -16
  252. data/spec/support/json/envelope_recipient_add.json +26 -26
  253. data/spec/support/json/envelopes_all.json +48 -48
  254. data/spec/support/json/envelopes_resources.json +31 -31
  255. data/spec/support/json/file_compress.json +8 -8
  256. data/spec/support/json/file_copy.json +14 -14
  257. data/spec/support/json/file_delete.json +5 -5
  258. data/spec/support/json/file_move.json +14 -14
  259. data/spec/support/json/file_upload.json +8 -8
  260. data/spec/support/json/folder_create.json +8 -8
  261. data/spec/support/json/folder_delete.json +5 -5
  262. data/spec/support/json/folder_list.json +22 -22
  263. data/spec/support/json/folder_move.json +8 -8
  264. data/spec/support/json/folder_sharers_get.json +16 -16
  265. data/spec/support/json/folder_sharers_remove.json +8 -8
  266. data/spec/support/json/folder_sharers_set.json +16 -16
  267. data/spec/support/json/form_get.json +21 -21
  268. data/spec/support/json/forms_all.json +23 -23
  269. data/spec/support/json/job_add_url.json +8 -8
  270. data/spec/support/json/job_create.json +8 -8
  271. data/spec/support/json/job_documents.json +40 -40
  272. data/spec/support/json/job_file_add.json +8 -8
  273. data/spec/support/json/job_get.json +30 -30
  274. data/spec/support/json/job_update.json +7 -7
  275. data/spec/support/json/jobs_get.json +58 -58
  276. data/spec/support/json/list_add.json +12 -12
  277. data/spec/support/json/lists_get.json +19 -19
  278. data/spec/support/json/package_create.json +7 -7
  279. data/spec/support/json/questionnaire_collector.json +17 -17
  280. data/spec/support/json/questionnaire_collectors.json +38 -38
  281. data/spec/support/json/questionnaire_collectors_add.json +10 -10
  282. data/spec/support/json/questionnaire_create.json +10 -10
  283. data/spec/support/json/questionnaire_datasources.json +26 -26
  284. data/spec/support/json/questionnaire_execution_add.json +9 -9
  285. data/spec/support/json/questionnaire_execution_status_set.json +8 -8
  286. data/spec/support/json/questionnaire_execution_update.json +8 -8
  287. data/spec/support/json/questionnaire_executions.json +28 -28
  288. data/spec/support/json/questionnaire_get.json +17 -17
  289. data/spec/support/json/questionnaire_remove.json +8 -8
  290. data/spec/support/json/questionnaire_update.json +8 -8
  291. data/spec/support/json/questionnaires_get.json +40 -40
  292. data/spec/support/json/sign_documents.json +16 -16
  293. data/spec/support/json/signature_create.json +12 -12
  294. data/spec/support/json/signature_field_add.json +25 -25
  295. data/spec/support/json/signature_fields_get.json +27 -27
  296. data/spec/support/json/signature_roles_get.json +17 -17
  297. data/spec/support/json/signatures_get.json +19 -19
  298. data/spec/support/json/storage_info.json +10 -10
  299. data/spec/support/json/subscription_plan_get.json +9 -9
  300. data/spec/support/json/subscription_plans_get.json +17 -17
  301. data/spec/support/json/template_get.json +35 -35
  302. data/spec/support/json/template_get_documents.json +15 -15
  303. data/spec/support/json/template_get_recipients.json +20 -20
  304. data/spec/support/json/templates_all.json +37 -37
  305. data/spec/support/json/templates_get.json +21 -21
  306. data/spec/support/json/update_account.json +10 -10
  307. data/spec/support/json/user_area.json +67 -67
  308. data/spec/support/json/user_embed_key.json +38 -38
  309. data/spec/support/json/user_get_embed_key.json +67 -67
  310. data/spec/support/json/user_login.json +67 -67
  311. data/spec/support/json/user_profile_get.json +24 -24
  312. data/spec/support/json/user_providers.json +31 -31
  313. data/spec/support/json/user_roles.json +25 -25
  314. data/spec/support/json/user_users_get.json +27 -27
  315. data/spec/support/shared_examples/api/entity.rb +39 -39
  316. data/spec/support/shared_examples/api/helpers/access_mode_helper.rb +11 -11
  317. data/spec/support/shared_examples/api/helpers/status_helper.rb +11 -11
  318. data/spec/support/shared_examples/signature/shared/document_methods.rb +68 -68
  319. data/spec/support/shared_examples/signature/shared/entity_fields.rb +56 -56
  320. data/spec/support/shared_examples/signature/shared/entity_methods.rb +116 -116
  321. data/spec/support/shared_examples/signature/shared/field_methods.rb +220 -220
  322. data/spec/support/shared_examples/signature/shared/recipient_methods.rb +46 -46
  323. data/spec/support/shared_examples/signature/shared/resource_methods.rb +46 -46
  324. metadata +35 -55
@@ -1,91 +1,91 @@
1
- module GroupDocs
2
- module Api
3
- class Request
4
-
5
- include Api::Helpers::Credentials
6
- include Api::Helpers::URL
7
- include Api::Helpers::REST
8
-
9
- # @attr_reader [RestClient::Resource] resource Entry point for all API requests
10
- attr_reader :resource
11
- # @attr [String] response Response from server in JSON format
12
- attr_accessor :response
13
- # @attr [Hash] options Hash of options
14
- attr_accessor :options
15
- # @attr [Hash] access Hash of access credentials
16
- attr_accessor :access
17
-
18
- #
19
- # Creates new API request.
20
- #
21
- # @example
22
- # api = GroupDocs::Api::Request.new do |request|
23
- # request[:method] = :POST
24
- # request[:path] = "/storage/{{client_id}}/info"
25
- # end
26
- #
27
- # @param [Hash] options
28
- # @option options [Symbol, String] :method HTTP method. One of :GET, :DOWNLOAD, :POST, :PUT or :DELETE.
29
- # @option options [String] :path Path to send request to
30
- # @option options [Hash] :headers Additional HTTP headers
31
- # @option options [Hash] :access Access credentials hash
32
- # @option options [Hash, String, Array, File] :request_body payload
33
- # @option options [Boolean] :plain Send payload as plain text (i.e. do not convert to JSON). Defaults to false.
34
- # @option options [Boolean] :sign Should URL be signed. Defaults to true.
35
- #
36
- # @yieldparam [Hash] options
37
- #
38
- def initialize(options = {}, &blk)
39
- @options = options
40
- yield @options if block_given?
41
- @options[:access] ||= {}
42
- @options[:sign] = true if @options[:sign].nil?
43
- @resource = RestClient::Resource.new(GroupDocs.api_server)
44
- end
45
-
46
- #
47
- # Prepares, signs and returns absolute URL.
48
- #
49
- # It performs the following actions step by step:
50
- # * Parses path (i.e. replaces client ID)
51
- # * URL encodes path
52
- # * Signs URL
53
- #
54
- # @return [String]
55
- #
56
- def prepare_and_sign_url
57
- unless @signed
58
- # the order is important here and if client_id is replaced after path
59
- # is encoded, there might be bad requests
60
- replace_client_id if @options[:sign]
61
- url_encode_path
62
- sign_url if @options[:sign]
63
- @signed = true
64
- end
65
-
66
- options[:path]
67
- end
68
-
69
- #
70
- # Executes API request to server.
71
- #
72
- # It performs the following actions step by step:
73
- # * Prepends path with version if it's set
74
- # * Prepares and signs URL
75
- # * Prepare request (add headers, converts payload to JSON, etc.)
76
- # * Sends request to server
77
- # * Parses response
78
- #
79
- # @return [Hash, String] Parsed response
80
- #
81
- def execute!
82
- prepend_version
83
- prepare_and_sign_url
84
- prepare_request
85
- send_request
86
- parse_response
87
- end
88
-
89
- end # Request
90
- end # Api
91
- end # GroupDocs
1
+ module GroupDocs
2
+ module Api
3
+ class Request
4
+
5
+ include Api::Helpers::Credentials
6
+ include Api::Helpers::URL
7
+ include Api::Helpers::REST
8
+
9
+ # @attr_reader [RestClient::Resource] resource Entry point for all API requests
10
+ attr_reader :resource
11
+ # @attr [String] response Response from server in JSON format
12
+ attr_accessor :response
13
+ # @attr [Hash] options Hash of options
14
+ attr_accessor :options
15
+ # @attr [Hash] access Hash of access credentials
16
+ attr_accessor :access
17
+
18
+ #
19
+ # Creates new API request.
20
+ #
21
+ # @example
22
+ # api = GroupDocs::Api::Request.new do |request|
23
+ # request[:method] = :POST
24
+ # request[:path] = "/storage/{{client_id}}/info"
25
+ # end
26
+ #
27
+ # @param [Hash] options
28
+ # @option options [Symbol, String] :method HTTP method. One of :GET, :DOWNLOAD, :POST, :PUT or :DELETE.
29
+ # @option options [String] :path Path to send request to
30
+ # @option options [Hash] :headers Additional HTTP headers
31
+ # @option options [Hash] :access Access credentials hash
32
+ # @option options [Hash, String, Array, File] :request_body payload
33
+ # @option options [Boolean] :plain Send payload as plain text (i.e. do not convert to JSON). Defaults to false.
34
+ # @option options [Boolean] :sign Should URL be signed. Defaults to true.
35
+ #
36
+ # @yieldparam [Hash] options
37
+ #
38
+ def initialize(options = {}, &blk)
39
+ @options = options
40
+ yield @options if block_given?
41
+ @options[:access] ||= {}
42
+ @options[:sign] = true if @options[:sign].nil?
43
+ @resource = RestClient::Resource.new(GroupDocs.api_server)
44
+ end
45
+
46
+ #
47
+ # Prepares, signs and returns absolute URL.
48
+ #
49
+ # It performs the following actions step by step:
50
+ # * Parses path (i.e. replaces client ID)
51
+ # * URL encodes path
52
+ # * Signs URL
53
+ #
54
+ # @return [String]
55
+ #
56
+ def prepare_and_sign_url
57
+ unless @signed
58
+ # the order is important here and if client_id is replaced after path
59
+ # is encoded, there might be bad requests
60
+ replace_client_id if @options[:sign]
61
+ url_encode_path
62
+ sign_url if @options[:sign]
63
+ @signed = true
64
+ end
65
+
66
+ options[:path]
67
+ end
68
+
69
+ #
70
+ # Executes API request to server.
71
+ #
72
+ # It performs the following actions step by step:
73
+ # * Prepends path with version if it's set
74
+ # * Prepares and signs URL
75
+ # * Prepare request (add headers, converts payload to JSON, etc.)
76
+ # * Sends request to server
77
+ # * Parses response
78
+ #
79
+ # @return [Hash, String] Parsed response
80
+ #
81
+ def execute!
82
+ prepend_version
83
+ prepare_and_sign_url
84
+ prepare_request
85
+ send_request
86
+ parse_response
87
+ end
88
+
89
+ end # Request
90
+ end # Api
91
+ end # GroupDocs
@@ -1,249 +1,249 @@
1
- module GroupDocs
2
- class DataSource < Api::Entity
3
-
4
- require 'groupdocs/datasource/field'
5
-
6
- #
7
- # Returns datasource by given identifier.
8
- #
9
- # @param [Integer] id
10
- # @param [Hash] options
11
- # @option options [Array] :field Array of field names to be returned. All by default
12
- # @param [Hash] access Access credentials
13
- # @option access [String] :client_id
14
- # @option access [String] :private_key
15
- # @return [GroupDocs::DataSource, nil]
16
- #
17
- def self.get!(id, options = {}, access = {})
18
- api = Api::Request.new do |request|
19
- request[:access] = access
20
- request[:method] = :GET
21
- request[:path] = "/merge/{{client_id}}/datasources/#{id}"
22
- end
23
- api.add_params(options)
24
- json = api.execute!
25
-
26
- DataSource.new(json[:datasource])
27
- rescue RestClient::ResourceNotFound
28
- nil
29
- end
30
-
31
- # @attr [Integer] id
32
- attr_accessor :id
33
- # @attr [String] descr
34
- attr_accessor :descr
35
- # @attr [Integer] questionnaire_id
36
- attr_accessor :questionnaire_id
37
- # @attr [Time] created_on
38
- attr_accessor :created_on
39
- # @attr [Time] modified_on
40
- attr_accessor :modified_on
41
- # @attr [Array<GroupDocs::DataSource::Field>] fields
42
- attr_accessor :fields
43
-
44
- # Human-readable accessors
45
- alias_accessor :description, :descr
46
-
47
- #
48
- # Converts timestamp which is return by API server to Time object.
49
- #
50
- # @return [Time]
51
- #
52
- def created_on
53
- Time.at(@created_on / 1000)
54
- end
55
-
56
- #
57
- # Converts timestamp which is return by API server to Time object.
58
- #
59
- # @return [Time]
60
- #
61
- def modified_on
62
- Time.at(@modified_on / 1000)
63
- end
64
-
65
- #
66
- # Converts each field to GroupDocs::DataSource::Field object.
67
- #
68
- # @param [Array<GroupDocs::DataSource::Field, Hash>] fields
69
- #
70
- def fields=(fields)
71
- if fields
72
- @fields = fields.map do |field|
73
- if field.is_a?(GroupDocs::DataSource::Field)
74
- field
75
- else
76
- DataSource::Field.new(field)
77
- end
78
- end
79
- end
80
- end
81
-
82
- #
83
- # Adds field to datasource.
84
- #
85
- # @param [GroupDocs::DataSource::Field] question
86
- # @raise [ArgumentError] if field is not GroupDocs::DataSource::Field object
87
- #
88
- def add_field(field)
89
- field.is_a?(GroupDocs::DataSource::Field) or raise ArgumentError,
90
- "Field should be GroupDocs::DataSource::Field object, received: #{field.inspect}"
91
-
92
- @fields ||= Array.new
93
- @fields << field
94
- end
95
-
96
- #
97
- # Adds datasource.
98
- #
99
- # @example
100
- # field = GroupDocs::DataSource::Field.new(name: 'test', values: %w(test test))
101
- # datasource = GroupDocs::DataSource.new
102
- # datasource.add_field(field)
103
- # datasource.add!
104
- #
105
- # @param [Hash] access Access credentials
106
- # @option access [String] :client_id
107
- # @option access [String] :private_key
108
- #
109
- def add!(access = {})
110
- json = Api::Request.new do |request|
111
- request[:access] = access
112
- request[:method] = :POST
113
- request[:path] = '/merge/{{client_id}}/datasources'
114
- request[:request_body] = to_hash
115
- end.execute!
116
-
117
- self.id = json[:datasource_id]
118
- end
119
-
120
- #
121
- # Updates datasource.
122
- #
123
- # @example
124
- # field = GroupDocs::DataSource::Field.new(field: 'test', values: %w(test test))
125
- # datasource = GroupDocs::DataSource.get!(180)
126
- # datasource.add_field(field)
127
- # datasource.update!
128
- #
129
- # @param [Hash] access Access credentials
130
- # @option access [String] :client_id
131
- # @option access [String] :private_key
132
- #
133
- def update!(access = {})
134
- Api::Request.new do |request|
135
- request[:access] = access
136
- request[:method] = :PUT
137
- request[:path] = "/merge/{{client_id}}/datasources/#{id}"
138
- request[:request_body] = to_hash
139
- end.execute!
140
- end
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
-
164
- #
165
- # Removes datasource.
166
- #
167
- # @param [Hash] access Access credentials
168
- # @option access [String] :client_id
169
- # @option access [String] :private_key
170
- #
171
- def remove!(access = {})
172
- Api::Request.new do |request|
173
- request[:access] = access
174
- request[:method] = :DELETE
175
- request[:path] = "/merge/{{client_id}}/datasources/#{id}"
176
- end.execute!
177
- # TODO: fix this in API - http://scotland.groupdocs.com/jira/browse/CORE-387
178
- rescue RestClient::BadRequest
179
- nil
180
- end
181
-
182
- #
183
- # Add job document datasource.
184
- #
185
- # @example
186
- # file = GroupDocs::Storage::File.new(guid => "(file guid)").to_document
187
- # field = GroupDocs::DataSource::Field.new(:name => "test")
188
- # datasource = GroupDocs::DataSource.new
189
- # datasource.add_field(field).add!()
190
- # job = GroupDocs::Job.create!()
191
- # file_id = job.add_document!(file)
192
- # datasource = add_datasourse!(job, file_id, datasource)
193
- #
194
- # @param [GroupDocs::DataSource] datasource
195
- # @param [String] jobId Job identifier
196
- # @param [String] fileId File identifier
197
- # @param [String] datasourceId
198
- # @param [Hash] access Access credentials
199
- # @option access [String] :client_id
200
- # @option access [String] :private_key
201
- #
202
- def add_datasource!(job, file_id, datasource, access = {})
203
- datasource.is_a?(GroupDocs::DataSource) or raise ArgumentError,
204
- "Datasource should be GroupDocs::DataSource object, received: #{datasource.inspect}"
205
-
206
- Api::Request.new do |request|
207
- request[:access] = access
208
- request[:method] = :PUT
209
- request[:path] = "/merge/{{client_id}}/jobs/#{job.id}/files/#{file_id}/datasources/#{datasource.id}"
210
- end.execute!
211
- end
212
-
213
- #
214
- # Add job document datasource fields.
215
- #
216
- #
217
- # @example
218
- # file = GroupDocs::Storage::File.new(guid => "(file guid)").to_document
219
- # field = GroupDocs::DataSource::Field.new(:name => "test")
220
- # datasource = GroupDocs::DataSource.new
221
- # datasource.add_field(field)
222
- # job = GroupDocs::Job.create!()
223
- # file_id = job.add_document!(file)
224
- # datasource = add_datasourse!(job, file_id, datasource)
225
- #
226
- #
227
- #
228
- # @param [String] jobId Job identifier
229
- # @param [String] fileId File identifier
230
- # @param [Array] datasourceFields
231
- # @param [Hash] access Access credentials
232
- # @option access [String] :client_id
233
- # @option access [String] :private_key
234
- #
235
- def add_datasource_fields!(job, file_id, datasource, access = {})
236
- datasource.is_a?(GroupDocs::DataSource) or raise ArgumentError,
237
- "Datasource should be GroupDocs::DataSource object, received: #{datasource.inspect}"
238
- Api::Request.new do |request|
239
- request[:access] = access
240
- request[:method] = :PUT
241
- request[:path] = "/merge/{{client_id}}/jobs/#{job.id}/files/#{file_id}/datasources"
242
- request[:request_body] = datasource.fields
243
- end.execute!
244
- end
245
-
246
-
247
-
248
- end # DataSource
249
- end # GroupDocs
1
+ module GroupDocs
2
+ class DataSource < Api::Entity
3
+
4
+ require 'groupdocs/datasource/field'
5
+
6
+ #
7
+ # Returns datasource by given identifier.
8
+ #
9
+ # @param [Integer] id
10
+ # @param [Hash] options
11
+ # @option options [Array] :field Array of field names to be returned. All by default
12
+ # @param [Hash] access Access credentials
13
+ # @option access [String] :client_id
14
+ # @option access [String] :private_key
15
+ # @return [GroupDocs::DataSource, nil]
16
+ #
17
+ def self.get!(id, options = {}, access = {})
18
+ api = Api::Request.new do |request|
19
+ request[:access] = access
20
+ request[:method] = :GET
21
+ request[:path] = "/merge/{{client_id}}/datasources/#{id}"
22
+ end
23
+ api.add_params(options)
24
+ json = api.execute!
25
+
26
+ DataSource.new(json[:datasource])
27
+ rescue RestClient::ResourceNotFound
28
+ nil
29
+ end
30
+
31
+ # @attr [Integer] id
32
+ attr_accessor :id
33
+ # @attr [String] descr
34
+ attr_accessor :descr
35
+ # @attr [Integer] questionnaire_id
36
+ attr_accessor :questionnaire_id
37
+ # @attr [Time] created_on
38
+ attr_accessor :created_on
39
+ # @attr [Time] modified_on
40
+ attr_accessor :modified_on
41
+ # @attr [Array<GroupDocs::DataSource::Field>] fields
42
+ attr_accessor :fields
43
+
44
+ # Human-readable accessors
45
+ alias_accessor :description, :descr
46
+
47
+ #
48
+ # Converts timestamp which is return by API server to Time object.
49
+ #
50
+ # @return [Time]
51
+ #
52
+ def created_on
53
+ Time.at(@created_on / 1000)
54
+ end
55
+
56
+ #
57
+ # Converts timestamp which is return by API server to Time object.
58
+ #
59
+ # @return [Time]
60
+ #
61
+ def modified_on
62
+ Time.at(@modified_on / 1000)
63
+ end
64
+
65
+ #
66
+ # Converts each field to GroupDocs::DataSource::Field object.
67
+ #
68
+ # @param [Array<GroupDocs::DataSource::Field, Hash>] fields
69
+ #
70
+ def fields=(fields)
71
+ if fields
72
+ @fields = fields.map do |field|
73
+ if field.is_a?(GroupDocs::DataSource::Field)
74
+ field
75
+ else
76
+ DataSource::Field.new(field)
77
+ end
78
+ end
79
+ end
80
+ end
81
+
82
+ #
83
+ # Adds field to datasource.
84
+ #
85
+ # @param [GroupDocs::DataSource::Field] question
86
+ # @raise [ArgumentError] if field is not GroupDocs::DataSource::Field object
87
+ #
88
+ def add_field(field)
89
+ field.is_a?(GroupDocs::DataSource::Field) or raise ArgumentError,
90
+ "Field should be GroupDocs::DataSource::Field object, received: #{field.inspect}"
91
+
92
+ @fields ||= Array.new
93
+ @fields << field
94
+ end
95
+
96
+ #
97
+ # Adds datasource.
98
+ #
99
+ # @example
100
+ # field = GroupDocs::DataSource::Field.new(name: 'test', values: %w(test test))
101
+ # datasource = GroupDocs::DataSource.new
102
+ # datasource.add_field(field)
103
+ # datasource.add!
104
+ #
105
+ # @param [Hash] access Access credentials
106
+ # @option access [String] :client_id
107
+ # @option access [String] :private_key
108
+ #
109
+ def add!(access = {})
110
+ json = Api::Request.new do |request|
111
+ request[:access] = access
112
+ request[:method] = :POST
113
+ request[:path] = '/merge/{{client_id}}/datasources'
114
+ request[:request_body] = to_hash
115
+ end.execute!
116
+
117
+ self.id = json[:datasource_id]
118
+ end
119
+
120
+ #
121
+ # Updates datasource.
122
+ #
123
+ # @example
124
+ # field = GroupDocs::DataSource::Field.new(field: 'test', values: %w(test test))
125
+ # datasource = GroupDocs::DataSource.get!(180)
126
+ # datasource.add_field(field)
127
+ # datasource.update!
128
+ #
129
+ # @param [Hash] access Access credentials
130
+ # @option access [String] :client_id
131
+ # @option access [String] :private_key
132
+ #
133
+ def update!(access = {})
134
+ Api::Request.new do |request|
135
+ request[:access] = access
136
+ request[:method] = :PUT
137
+ request[:path] = "/merge/{{client_id}}/datasources/#{id}"
138
+ request[:request_body] = to_hash
139
+ end.execute!
140
+ end
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
+
164
+ #
165
+ # Removes datasource.
166
+ #
167
+ # @param [Hash] access Access credentials
168
+ # @option access [String] :client_id
169
+ # @option access [String] :private_key
170
+ #
171
+ def remove!(access = {})
172
+ Api::Request.new do |request|
173
+ request[:access] = access
174
+ request[:method] = :DELETE
175
+ request[:path] = "/merge/{{client_id}}/datasources/#{id}"
176
+ end.execute!
177
+ # TODO: fix this in API - http://scotland.groupdocs.com/jira/browse/CORE-387
178
+ rescue RestClient::BadRequest
179
+ nil
180
+ end
181
+
182
+ #
183
+ # Add job document datasource.
184
+ #
185
+ # @example
186
+ # file = GroupDocs::Storage::File.new(guid => "(file guid)").to_document
187
+ # field = GroupDocs::DataSource::Field.new(:name => "test")
188
+ # datasource = GroupDocs::DataSource.new
189
+ # datasource.add_field(field).add!()
190
+ # job = GroupDocs::Job.create!()
191
+ # file_id = job.add_document!(file)
192
+ # datasource = add_datasourse!(job, file_id, datasource)
193
+ #
194
+ # @param [GroupDocs::DataSource] datasource
195
+ # @param [String] jobId Job identifier
196
+ # @param [String] fileId File identifier
197
+ # @param [String] datasourceId
198
+ # @param [Hash] access Access credentials
199
+ # @option access [String] :client_id
200
+ # @option access [String] :private_key
201
+ #
202
+ def add_datasource!(job, file_id, datasource, access = {})
203
+ datasource.is_a?(GroupDocs::DataSource) or raise ArgumentError,
204
+ "Datasource should be GroupDocs::DataSource object, received: #{datasource.inspect}"
205
+
206
+ Api::Request.new do |request|
207
+ request[:access] = access
208
+ request[:method] = :PUT
209
+ request[:path] = "/merge/{{client_id}}/jobs/#{job.id}/files/#{file_id}/datasources/#{datasource.id}"
210
+ end.execute!
211
+ end
212
+
213
+ #
214
+ # Add job document datasource fields.
215
+ #
216
+ #
217
+ # @example
218
+ # file = GroupDocs::Storage::File.new(guid => "(file guid)").to_document
219
+ # field = GroupDocs::DataSource::Field.new(:name => "test")
220
+ # datasource = GroupDocs::DataSource.new
221
+ # datasource.add_field(field)
222
+ # job = GroupDocs::Job.create!()
223
+ # file_id = job.add_document!(file)
224
+ # datasource = add_datasourse!(job, file_id, datasource)
225
+ #
226
+ #
227
+ #
228
+ # @param [String] jobId Job identifier
229
+ # @param [String] fileId File identifier
230
+ # @param [Array] datasourceFields
231
+ # @param [Hash] access Access credentials
232
+ # @option access [String] :client_id
233
+ # @option access [String] :private_key
234
+ #
235
+ def add_datasource_fields!(job, file_id, datasource, access = {})
236
+ datasource.is_a?(GroupDocs::DataSource) or raise ArgumentError,
237
+ "Datasource should be GroupDocs::DataSource object, received: #{datasource.inspect}"
238
+ Api::Request.new do |request|
239
+ request[:access] = access
240
+ request[:method] = :PUT
241
+ request[:path] = "/merge/{{client_id}}/jobs/#{job.id}/files/#{file_id}/datasources"
242
+ request[:request_body] = datasource.fields
243
+ end.execute!
244
+ end
245
+
246
+
247
+
248
+ end # DataSource
249
+ end # GroupDocs