groupdocs_signature_cloud 18.8.1 → 21.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (202) hide show
  1. checksums.yaml +5 -5
  2. data/lib/groupdocs_signature_cloud/api/file_api.rb +734 -0
  3. data/lib/groupdocs_signature_cloud/api/folder_api.rb +699 -0
  4. data/lib/groupdocs_signature_cloud/api/info_api.rb +364 -0
  5. data/lib/groupdocs_signature_cloud/api/preview_api.rb +217 -0
  6. data/lib/groupdocs_signature_cloud/api/sign_api.rb +605 -0
  7. data/lib/groupdocs_signature_cloud/api/storage_api.rb +544 -0
  8. data/lib/groupdocs_signature_cloud/api_client.rb +382 -380
  9. data/lib/groupdocs_signature_cloud/api_error.rb +71 -58
  10. data/lib/groupdocs_signature_cloud/configuration.rb +95 -110
  11. data/lib/groupdocs_signature_cloud/models/barcode_signature.rb +434 -0
  12. data/lib/groupdocs_signature_cloud/models/barcode_type.rb +237 -230
  13. data/lib/groupdocs_signature_cloud/models/{barcode_collection.rb → barcodes_result.rb} +239 -232
  14. data/lib/groupdocs_signature_cloud/models/{base_signature_data.rb → base_settings.rb} +237 -230
  15. data/lib/groupdocs_signature_cloud/models/{border_line_data.rb → border_line.rb} +334 -312
  16. data/lib/groupdocs_signature_cloud/models/{brush_data.rb → brush.rb} +237 -230
  17. data/lib/groupdocs_signature_cloud/models/checkbox_form_field_signature.rb +460 -0
  18. data/lib/groupdocs_signature_cloud/models/color.rb +237 -245
  19. data/lib/groupdocs_signature_cloud/models/combobox_form_field_signature.rb +467 -0
  20. data/lib/groupdocs_signature_cloud/models/delete_options.rb +289 -0
  21. data/lib/groupdocs_signature_cloud/models/{sign_options_data.rb → delete_result.rb} +276 -255
  22. data/lib/groupdocs_signature_cloud/models/delete_settings.rb +249 -0
  23. data/lib/groupdocs_signature_cloud/models/digital_form_field_signature.rb +460 -0
  24. data/lib/groupdocs_signature_cloud/models/digital_signature.rb +454 -0
  25. data/lib/groupdocs_signature_cloud/models/digital_signature_appearance.rb +309 -0
  26. data/lib/groupdocs_signature_cloud/models/disc_usage.rb +257 -0
  27. data/lib/groupdocs_signature_cloud/models/{cells_qr_code_signature_data.rb → error.rb} +267 -250
  28. data/lib/groupdocs_signature_cloud/models/error_details.rb +252 -0
  29. data/lib/groupdocs_signature_cloud/models/{barcode_signature_data.rb → file_info.rb} +267 -250
  30. data/lib/groupdocs_signature_cloud/models/file_version.rb +312 -0
  31. data/lib/groupdocs_signature_cloud/models/file_versions.rb +239 -0
  32. data/lib/groupdocs_signature_cloud/models/files_list.rb +239 -0
  33. data/lib/groupdocs_signature_cloud/models/files_upload_result.rb +251 -0
  34. data/lib/groupdocs_signature_cloud/models/form_field_signature.rb +445 -0
  35. data/lib/groupdocs_signature_cloud/models/format.rb +247 -240
  36. data/lib/groupdocs_signature_cloud/models/{format_collection.rb → formats_result.rb} +239 -232
  37. data/lib/groupdocs_signature_cloud/models/image_appearance.rb +339 -0
  38. data/lib/groupdocs_signature_cloud/models/image_signature.rb +429 -0
  39. data/lib/groupdocs_signature_cloud/models/info_result.rb +371 -0
  40. data/lib/groupdocs_signature_cloud/models/{cells_barcode_signature_data.rb → info_settings.rb} +252 -250
  41. data/lib/groupdocs_signature_cloud/models/{linear_gradient_brush_data.rb → linear_gradient_brush.rb} +272 -260
  42. data/lib/groupdocs_signature_cloud/models/{pages_info.rb → object_exist.rb} +257 -247
  43. data/lib/groupdocs_signature_cloud/models/{pdf_digital_signature_data.rb → options_base.rb} +314 -307
  44. data/lib/groupdocs_signature_cloud/models/{padding_data.rb → padding.rb} +302 -295
  45. data/lib/groupdocs_signature_cloud/models/page_info.rb +312 -305
  46. data/lib/groupdocs_signature_cloud/models/{pages_setup_data.rb → pages_setup.rb} +299 -292
  47. data/lib/groupdocs_signature_cloud/models/pdf_digital_signature.rb +339 -0
  48. data/lib/groupdocs_signature_cloud/models/pdf_digital_signature_appearance.rb +359 -0
  49. data/lib/groupdocs_signature_cloud/models/pdf_text_annotation_appearance.rb +395 -0
  50. data/lib/groupdocs_signature_cloud/models/{document_response.rb → pdf_text_sticker_appearance.rb} +355 -302
  51. data/lib/groupdocs_signature_cloud/models/preview_page.rb +277 -0
  52. data/lib/groupdocs_signature_cloud/models/preview_result.rb +279 -0
  53. data/lib/groupdocs_signature_cloud/models/{cells_verify_qr_code_options_data.rb → preview_settings.rb} +356 -342
  54. data/lib/groupdocs_signature_cloud/models/qr_code_signature.rb +434 -0
  55. data/lib/groupdocs_signature_cloud/models/qr_code_type.rb +237 -230
  56. data/lib/groupdocs_signature_cloud/models/{qr_code_collection.rb → qr_codes_result.rb} +239 -232
  57. data/lib/groupdocs_signature_cloud/models/{radial_gradient_brush_data.rb → radial_gradient_brush.rb} +257 -250
  58. data/lib/groupdocs_signature_cloud/models/radio_button_form_field_signature.rb +467 -0
  59. data/lib/groupdocs_signature_cloud/models/save_options.rb +262 -0
  60. data/lib/groupdocs_signature_cloud/models/{search_barcode_options_data.rb → search_barcode_options.rb} +365 -332
  61. data/lib/groupdocs_signature_cloud/models/{cells_digital_signature_data.rb → search_digital_options.rb} +314 -307
  62. data/lib/groupdocs_signature_cloud/models/{words_digital_signature_data.rb → search_options.rb} +314 -307
  63. data/lib/groupdocs_signature_cloud/models/{pdf_search_barcode_options_data.rb → search_qr_code_options.rb} +365 -332
  64. data/lib/groupdocs_signature_cloud/models/{verify_options_collection_data.rb → search_result.rb} +264 -247
  65. data/lib/groupdocs_signature_cloud/models/search_settings.rb +249 -0
  66. data/lib/groupdocs_signature_cloud/models/{pdf_sign_text_options_data.rb → sign_barcode_options.rb} +808 -696
  67. data/lib/groupdocs_signature_cloud/models/{pdf_sign_digital_options_data.rb → sign_digital_options.rb} +695 -556
  68. data/lib/groupdocs_signature_cloud/models/{sign_stamp_options_data.rb → sign_image_options.rb} +599 -592
  69. data/lib/groupdocs_signature_cloud/models/sign_options.rb +324 -0
  70. data/lib/groupdocs_signature_cloud/models/{words_sign_text_options_data.rb → sign_qr_code_options.rb} +823 -696
  71. data/lib/groupdocs_signature_cloud/models/{verify_options_data.rb → sign_result.rb} +286 -265
  72. data/lib/groupdocs_signature_cloud/models/{qr_code_signature_data.rb → sign_settings.rb} +259 -250
  73. data/lib/groupdocs_signature_cloud/models/{slides_sign_stamp_options_data.rb → sign_stamp_options.rb} +705 -592
  74. data/lib/groupdocs_signature_cloud/models/{images_sign_text_options_data.rb → sign_text_options.rb} +747 -706
  75. data/lib/groupdocs_signature_cloud/models/signature.rb +404 -0
  76. data/lib/groupdocs_signature_cloud/models/{signature_document_response.rb → signature_appearance.rb} +278 -289
  77. data/lib/groupdocs_signature_cloud/models/{signature_font_data.rb → signature_font.rb} +297 -290
  78. data/lib/groupdocs_signature_cloud/models/{solid_brush_data.rb → solid_brush.rb} +247 -240
  79. data/lib/groupdocs_signature_cloud/models/{stamp_line_data.rb → stamp_line.rb} +384 -377
  80. data/lib/groupdocs_signature_cloud/models/storage_exist.rb +242 -0
  81. data/lib/groupdocs_signature_cloud/models/{document_info.rb → storage_file.rb} +287 -300
  82. data/lib/groupdocs_signature_cloud/models/text_form_field_signature.rb +455 -0
  83. data/lib/groupdocs_signature_cloud/models/text_signature.rb +424 -0
  84. data/lib/groupdocs_signature_cloud/models/{texture_brush_data.rb → texture_brush.rb} +247 -240
  85. data/lib/groupdocs_signature_cloud/models/time_stamp.rb +257 -0
  86. data/lib/groupdocs_signature_cloud/models/update_options.rb +374 -0
  87. data/lib/groupdocs_signature_cloud/models/update_result.rb +276 -0
  88. data/lib/groupdocs_signature_cloud/models/update_settings.rb +249 -0
  89. data/lib/groupdocs_signature_cloud/models/{verify_barcode_options_data.rb → verify_barcode_options.rb} +365 -342
  90. data/lib/groupdocs_signature_cloud/models/{cells_verify_digital_options_data.rb → verify_digital_options.rb} +394 -315
  91. data/lib/groupdocs_signature_cloud/models/{digital_signature_data.rb → verify_options.rb} +314 -307
  92. data/lib/groupdocs_signature_cloud/models/{verify_qr_code_options_data.rb → verify_qr_code_options.rb} +365 -342
  93. data/lib/groupdocs_signature_cloud/models/{images_barcode_signature_data.rb → verify_result.rb} +267 -250
  94. data/lib/groupdocs_signature_cloud/models/{search_options_collection_data.rb → verify_settings.rb} +249 -232
  95. data/lib/groupdocs_signature_cloud/models/{cells_verify_barcode_options_data.rb → verify_text_options.rb} +355 -342
  96. data/lib/groupdocs_signature_cloud/version.rb +2 -2
  97. data/lib/groupdocs_signature_cloud.rb +125 -191
  98. metadata +89 -185
  99. data/lib/groupdocs_signature_cloud/api/signature_api.rb +0 -2590
  100. data/lib/groupdocs_signature_cloud/models/cells_search_barcode_options_data.rb +0 -332
  101. data/lib/groupdocs_signature_cloud/models/cells_search_digital_options_data.rb +0 -265
  102. data/lib/groupdocs_signature_cloud/models/cells_search_qr_code_options_data.rb +0 -332
  103. data/lib/groupdocs_signature_cloud/models/cells_sign_barcode_options_data.rb +0 -694
  104. data/lib/groupdocs_signature_cloud/models/cells_sign_digital_options_data.rb +0 -546
  105. data/lib/groupdocs_signature_cloud/models/cells_sign_image_options_data.rb +0 -526
  106. data/lib/groupdocs_signature_cloud/models/cells_sign_qr_code_options_data.rb +0 -704
  107. data/lib/groupdocs_signature_cloud/models/cells_sign_stamp_options_data.rb +0 -622
  108. data/lib/groupdocs_signature_cloud/models/cells_sign_text_options_data.rb +0 -736
  109. data/lib/groupdocs_signature_cloud/models/cells_verify_text_options_data.rb +0 -285
  110. data/lib/groupdocs_signature_cloud/models/images_qr_code_signature_data.rb +0 -250
  111. data/lib/groupdocs_signature_cloud/models/images_search_barcode_options_data.rb +0 -332
  112. data/lib/groupdocs_signature_cloud/models/images_search_qr_code_options_data.rb +0 -332
  113. data/lib/groupdocs_signature_cloud/models/images_sign_barcode_options_data.rb +0 -664
  114. data/lib/groupdocs_signature_cloud/models/images_sign_image_options_data.rb +0 -496
  115. data/lib/groupdocs_signature_cloud/models/images_sign_qr_code_options_data.rb +0 -674
  116. data/lib/groupdocs_signature_cloud/models/images_sign_stamp_options_data.rb +0 -592
  117. data/lib/groupdocs_signature_cloud/models/images_verify_barcode_options_data.rb +0 -342
  118. data/lib/groupdocs_signature_cloud/models/images_verify_qr_code_options_data.rb +0 -342
  119. data/lib/groupdocs_signature_cloud/models/pdf_barcode_signature_data.rb +0 -250
  120. data/lib/groupdocs_signature_cloud/models/pdf_qr_code_signature_data.rb +0 -250
  121. data/lib/groupdocs_signature_cloud/models/pdf_search_digital_options_data.rb +0 -265
  122. data/lib/groupdocs_signature_cloud/models/pdf_search_qr_code_options_data.rb +0 -332
  123. data/lib/groupdocs_signature_cloud/models/pdf_sign_barcode_options_data.rb +0 -664
  124. data/lib/groupdocs_signature_cloud/models/pdf_sign_image_options_data.rb +0 -496
  125. data/lib/groupdocs_signature_cloud/models/pdf_sign_qr_code_options_data.rb +0 -674
  126. data/lib/groupdocs_signature_cloud/models/pdf_sign_stamp_options_data.rb +0 -592
  127. data/lib/groupdocs_signature_cloud/models/pdf_verify_barcode_options_data.rb +0 -342
  128. data/lib/groupdocs_signature_cloud/models/pdf_verify_digital_options_data.rb +0 -315
  129. data/lib/groupdocs_signature_cloud/models/pdf_verify_qr_code_options_data.rb +0 -342
  130. data/lib/groupdocs_signature_cloud/models/pdf_verify_text_options_data.rb +0 -342
  131. data/lib/groupdocs_signature_cloud/models/requests/get_document_info_from_url_request.rb +0 -55
  132. data/lib/groupdocs_signature_cloud/models/requests/get_document_info_request.rb +0 -59
  133. data/lib/groupdocs_signature_cloud/models/requests/post_barcode_from_url_request.rb +0 -59
  134. data/lib/groupdocs_signature_cloud/models/requests/post_barcode_request.rb +0 -63
  135. data/lib/groupdocs_signature_cloud/models/requests/post_collection_from_url_request.rb +0 -59
  136. data/lib/groupdocs_signature_cloud/models/requests/post_collection_request.rb +0 -63
  137. data/lib/groupdocs_signature_cloud/models/requests/post_digital_from_url_request.rb +0 -67
  138. data/lib/groupdocs_signature_cloud/models/requests/post_digital_request.rb +0 -71
  139. data/lib/groupdocs_signature_cloud/models/requests/post_image_from_url_request.rb +0 -63
  140. data/lib/groupdocs_signature_cloud/models/requests/post_image_request.rb +0 -67
  141. data/lib/groupdocs_signature_cloud/models/requests/post_qr_code_from_url_request.rb +0 -59
  142. data/lib/groupdocs_signature_cloud/models/requests/post_qr_code_request.rb +0 -63
  143. data/lib/groupdocs_signature_cloud/models/requests/post_search_barcode_from_url_request.rb +0 -59
  144. data/lib/groupdocs_signature_cloud/models/requests/post_search_barcode_request.rb +0 -63
  145. data/lib/groupdocs_signature_cloud/models/requests/post_search_collection_from_url_request.rb +0 -59
  146. data/lib/groupdocs_signature_cloud/models/requests/post_search_collection_request.rb +0 -63
  147. data/lib/groupdocs_signature_cloud/models/requests/post_search_digital_from_url_request.rb +0 -59
  148. data/lib/groupdocs_signature_cloud/models/requests/post_search_digital_request.rb +0 -63
  149. data/lib/groupdocs_signature_cloud/models/requests/post_search_qr_code_from_url_request.rb +0 -59
  150. data/lib/groupdocs_signature_cloud/models/requests/post_search_qr_code_request.rb +0 -63
  151. data/lib/groupdocs_signature_cloud/models/requests/post_stamp_from_url_request.rb +0 -59
  152. data/lib/groupdocs_signature_cloud/models/requests/post_stamp_request.rb +0 -63
  153. data/lib/groupdocs_signature_cloud/models/requests/post_text_from_url_request.rb +0 -59
  154. data/lib/groupdocs_signature_cloud/models/requests/post_text_request.rb +0 -63
  155. data/lib/groupdocs_signature_cloud/models/requests/post_verification_barcode_from_url_request.rb +0 -59
  156. data/lib/groupdocs_signature_cloud/models/requests/post_verification_barcode_request.rb +0 -63
  157. data/lib/groupdocs_signature_cloud/models/requests/post_verification_collection_from_url_request.rb +0 -59
  158. data/lib/groupdocs_signature_cloud/models/requests/post_verification_collection_request.rb +0 -63
  159. data/lib/groupdocs_signature_cloud/models/requests/post_verification_digital_from_url_request.rb +0 -63
  160. data/lib/groupdocs_signature_cloud/models/requests/post_verification_digital_request.rb +0 -67
  161. data/lib/groupdocs_signature_cloud/models/requests/post_verification_qr_code_from_url_request.rb +0 -59
  162. data/lib/groupdocs_signature_cloud/models/requests/post_verification_qr_code_request.rb +0 -63
  163. data/lib/groupdocs_signature_cloud/models/requests/post_verification_text_from_url_request.rb +0 -57
  164. data/lib/groupdocs_signature_cloud/models/requests/post_verification_text_request.rb +0 -63
  165. data/lib/groupdocs_signature_cloud/models/search_digital_options_data.rb +0 -265
  166. data/lib/groupdocs_signature_cloud/models/search_document_response.rb +0 -305
  167. data/lib/groupdocs_signature_cloud/models/search_options_data.rb +0 -265
  168. data/lib/groupdocs_signature_cloud/models/search_qr_code_options_data.rb +0 -332
  169. data/lib/groupdocs_signature_cloud/models/sign_barcode_options_data.rb +0 -664
  170. data/lib/groupdocs_signature_cloud/models/sign_digital_options_data.rb +0 -516
  171. data/lib/groupdocs_signature_cloud/models/sign_image_options_data.rb +0 -496
  172. data/lib/groupdocs_signature_cloud/models/sign_options_collection_data.rb +0 -232
  173. data/lib/groupdocs_signature_cloud/models/sign_qr_code_options_data.rb +0 -674
  174. data/lib/groupdocs_signature_cloud/models/sign_text_options_data.rb +0 -562
  175. data/lib/groupdocs_signature_cloud/models/slides_barcode_signature_data.rb +0 -250
  176. data/lib/groupdocs_signature_cloud/models/slides_qr_code_signature_data.rb +0 -250
  177. data/lib/groupdocs_signature_cloud/models/slides_search_barcode_options_data.rb +0 -332
  178. data/lib/groupdocs_signature_cloud/models/slides_search_qr_code_options_data.rb +0 -332
  179. data/lib/groupdocs_signature_cloud/models/slides_sign_barcode_options_data.rb +0 -664
  180. data/lib/groupdocs_signature_cloud/models/slides_sign_image_options_data.rb +0 -496
  181. data/lib/groupdocs_signature_cloud/models/slides_sign_qr_code_options_data.rb +0 -674
  182. data/lib/groupdocs_signature_cloud/models/slides_sign_text_options_data.rb +0 -670
  183. data/lib/groupdocs_signature_cloud/models/slides_verify_barcode_options_data.rb +0 -342
  184. data/lib/groupdocs_signature_cloud/models/slides_verify_qr_code_options_data.rb +0 -342
  185. data/lib/groupdocs_signature_cloud/models/slides_verify_text_options_data.rb +0 -285
  186. data/lib/groupdocs_signature_cloud/models/verified_document_response.rb +0 -300
  187. data/lib/groupdocs_signature_cloud/models/verify_digital_options_data.rb +0 -285
  188. data/lib/groupdocs_signature_cloud/models/verify_text_options_data.rb +0 -285
  189. data/lib/groupdocs_signature_cloud/models/words_barcode_signature_data.rb +0 -250
  190. data/lib/groupdocs_signature_cloud/models/words_qr_code_signature_data.rb +0 -250
  191. data/lib/groupdocs_signature_cloud/models/words_search_barcode_options_data.rb +0 -332
  192. data/lib/groupdocs_signature_cloud/models/words_search_digital_options_data.rb +0 -265
  193. data/lib/groupdocs_signature_cloud/models/words_search_qr_code_options_data.rb +0 -332
  194. data/lib/groupdocs_signature_cloud/models/words_sign_barcode_options_data.rb +0 -664
  195. data/lib/groupdocs_signature_cloud/models/words_sign_digital_options_data.rb +0 -516
  196. data/lib/groupdocs_signature_cloud/models/words_sign_image_options_data.rb +0 -496
  197. data/lib/groupdocs_signature_cloud/models/words_sign_qr_code_options_data.rb +0 -674
  198. data/lib/groupdocs_signature_cloud/models/words_sign_stamp_options_data.rb +0 -592
  199. data/lib/groupdocs_signature_cloud/models/words_verify_barcode_options_data.rb +0 -342
  200. data/lib/groupdocs_signature_cloud/models/words_verify_digital_options_data.rb +0 -315
  201. data/lib/groupdocs_signature_cloud/models/words_verify_qr_code_options_data.rb +0 -342
  202. data/lib/groupdocs_signature_cloud/models/words_verify_text_options_data.rb +0 -285
@@ -1,380 +1,382 @@
1
- # -----------------------------------------------------------------------------------
2
- # <copyright company="Aspose Pty Ltd" file="api_client.rb">
3
- # Copyright (c) 2003-2018 Aspose Pty Ltd
4
- # </copyright>
5
- # <summary>
6
- # Permission is hereby granted, free of charge, to any person obtaining a copy
7
- # of this software and associated documentation files (the "Software"), to deal
8
- # in the Software without restriction, including without limitation the rights
9
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
- # copies of the Software, and to permit persons to whom the Software is
11
- # furnished to do so, subject to the following conditions:
12
- #
13
- # The above copyright notice and this permission notice shall be included in all
14
- # copies or substantial portions of the Software.
15
- #
16
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
- # SOFTWARE.
23
- # </summary>
24
- # -----------------------------------------------------------------------------------
25
-
26
- require 'date'
27
- require 'json'
28
- require 'logger'
29
- require 'tempfile'
30
- require 'faraday'
31
- require 'mimemagic'
32
- require 'addressable'
33
- require_relative 'version'
34
- require_relative 'api_error'
35
-
36
- module GroupDocsSignatureCloud
37
- #
38
- # api client is mainly responsible for making the HTTP call to the API backend.
39
- #
40
- class ApiClient
41
- # The Configuration object holding settings to be used in the API client.
42
- attr_accessor :config
43
-
44
- # Defines the headers to be used in HTTP requests of all API calls by default.
45
- #
46
- # @return [Hash]
47
- attr_accessor :default_headers
48
-
49
- # Initializes the ApiClient
50
- # @option config [Configuration] Configuration for initializing the object
51
- def initialize(config)
52
- @config = config
53
- @default_headers = {
54
- 'Content-Type' => "application/json",
55
- 'x-groupdocs-client' => "ruby sdk",
56
- 'x-groupdocs-version' => GroupDocsSignatureCloud::VERSION.to_s
57
- }
58
- end
59
-
60
- # Call an API with given options.
61
- #
62
- # @return [Array<(Object, Fixnum, Hash)>] an array of 3 elements:
63
- # the data deserialized from response body (could be nil), response status code and response headers.
64
- def call_api(http_method, path, opts = {})
65
- response = build_request(http_method, path, opts)
66
- download_file response if opts[:return_type] == 'File'
67
- if @config.debugging
68
- @config.logger.debug "'HTTP' response body '~BEGIN~'\n #{response.body}\n'~END~'\n"
69
- end
70
-
71
- unless response.success?
72
- raise ApiError.new(:code => response.status, :response_body => response.body)
73
- end
74
-
75
- data = deserialize(response, opts[:return_type]) if opts[:return_type]
76
- [data, response.status, response.headers]
77
- end
78
-
79
- # Builds the HTTP request
80
- #
81
- # @param [String] http_method HTTP method/verb (e.g. POST)
82
- # @param [String] path URL path (e.g. /account/new)
83
- # @option opts [Hash] :header_params Header parameters
84
- # @option opts [Hash] :query_params Query parameters
85
- # @option opts [Hash] :form_params Query parameters
86
- # @option opts [Object] :body HTTP body (JSON/XML)
87
- # @return [Faraday::Response] A Faraday Response
88
- def build_request(http_method, path, opts = {})
89
- url = build_request_url(path)
90
- http_method = http_method.to_sym.downcase
91
-
92
- header_params = @default_headers.merge(opts[:header_params] || {})
93
- query_params = opts[:query_params] || {}
94
- form_params = opts[:form_params] || {}
95
- body = opts[:body] if opts[:body] || nil?
96
-
97
- update_params_for_oauth! header_params, opts[:access_token]
98
-
99
- req_opts = {
100
- :method => http_method,
101
- :headers => header_params,
102
- :params => query_params,
103
- :body => body
104
- }
105
-
106
- if [:post, :patch, :put, :delete].include?(http_method)
107
- req_body = build_request_body(header_params, form_params, opts[:body])
108
- req_opts.update :body => req_body
109
- if @config.debugging
110
- @config.logger.debug "HTTP request body param ~BEGIN~\n#{req_body}\n~END~\n"
111
- end
112
- end
113
-
114
- conn = Faraday.new url, { :params => query_params, :headers => header_params } do |f|
115
- f.request :multipart
116
- f.request :url_encoded
117
- f.adapter Faraday.default_adapter
118
- end
119
-
120
- case http_method
121
- when :post
122
- return conn.post url, req_opts[:body]
123
- when :put
124
- return conn.put url, req_opts[:body]
125
- when :get
126
- return conn.get url, req_opts[:body]
127
- else
128
- return conn.delete url do |c|
129
- c.body = req_opts[:body]
130
- end
131
- end
132
- end
133
-
134
- # Check if the given MIME is a JSON MIME.
135
- # JSON MIME examples:
136
- # application/json
137
- # application/json; charset=UTF8
138
- # APPLICATION/JSON
139
- # */*
140
- # @param [String] mime MIME
141
- # @return [Boolean] True if the MIME is application/json
142
- def json_mime?(mime)
143
- (mime == "*/*") || !(mime =~ /Application\/.*json(?!p)(;.*)?/i).nil?
144
- end
145
-
146
- # Deserialize the response to the given return type.
147
- #
148
- # @param [Response] response HTTP response
149
- # @param [String] return_type some examples: "User", "Array[User]", "Hash[String,Integer]"
150
- def deserialize(response, return_type)
151
- body = response.body
152
-
153
- # handle file downloading - return the File instance processed in request callbacks
154
- # note that response body is empty when the file is written in chunks in request on_body callback
155
- return @tempfile if return_type == 'File'
156
-
157
- return nil if body.nil? || body.empty?
158
-
159
- # return response body directly for String return type
160
- return body if return_type == 'String'
161
-
162
- # ensuring a default content type
163
- content_type = response.headers['Content-Type'] || 'application/json'
164
-
165
- raise "Content-Type is not supported: #{content_type}" unless json_mime?(content_type)
166
-
167
- begin
168
- data = JSON.parse("[#{body}]", :symbolize_names => true)[0]
169
- rescue JSON::ParserError => e
170
- if %w[String Date DateTime].include?(return_type)
171
- data = body
172
- else
173
- raise e
174
- end
175
- end
176
-
177
- convert_to_type data, return_type
178
- end
179
-
180
- # Convert data to the given return type.
181
- # @param [Object] data Data to be converted
182
- # @param [String] return_type Return type
183
- # @return [Mixed] Data in a particular type
184
- def convert_to_type(data, return_type)
185
- return nil if data.nil?
186
- case return_type
187
- when 'String'
188
- data.to_s
189
- when 'Integer'
190
- data.to_i
191
- when 'Float'
192
- data.to_f
193
- when 'BOOLEAN'
194
- data == true
195
- when 'DateTime'
196
- # parse date time (expecting ISO 8601 format)
197
- DateTime.parse data
198
- when 'Date'
199
- # parse date time (expecting ISO 8601 format)
200
- Date.parse data
201
- when 'Object'
202
- # generic object (usually a Hash), return directly
203
- data
204
- when /\AArray<(.+)>\z/
205
- # e.g. Array<Pet>
206
- sub_type = $1
207
- data.map {|item| convert_to_type(item, sub_type) }
208
- when /\AHash\<String, (.+)\>\z/
209
- # e.g. Hash<String, Integer>
210
- sub_type = $1
211
- {}.tap do |hash|
212
- data.each {|k, v| hash[k] = convert_to_type(v, sub_type) }
213
- end
214
- else
215
- # models, e.g. Pet
216
- GroupDocsSignatureCloud.const_get(return_type).new.tap do |model|
217
- model.build_from_hash data
218
- end
219
- end
220
- end
221
-
222
- # Save response body into a file in (the defined) temporary folder, using the filename
223
- # from the "Content-Disposition" header if provided, otherwise a random filename.
224
- # The response body is written to the file in chunks in order to handle files which
225
- # size is larger than maximum Ruby String or even larger than the maximum memory a Ruby
226
- # process can use.
227
- #
228
- # @see Configuration#temp_folder_path
229
- def download_file(response)
230
- tempfile = nil
231
- encoding = nil
232
- content_disposition = response.headers['Content-Disposition']
233
- if content_disposition and content_disposition =~ /filename=/i
234
- filename = content_disposition[/filename=['"]?([^'"\s]+)['"]?/, 1]
235
- prefix = sanitize_filename(filename)
236
- else
237
- prefix = 'download-'
238
- end
239
- prefix += '-' unless prefix.end_with?('-')
240
- encoding = response.body.encoding
241
- tempfile = Tempfile.open(prefix, @config.temp_folder_path, encoding: encoding)
242
- @tempfile = tempfile
243
- tempfile.write(response.body)
244
- response.on_complete do |resp|
245
- tempfile.close
246
- @config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder "\
247
- "with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file "\
248
- "will be deleted automatically with GC. It's also recommended to delete the temp file "\
249
- "explicitly with `tempfile.delete`"
250
- end
251
- end
252
-
253
- # Sanitize filename by removing path.
254
- # e.g. ../../sun.gif becomes sun.gif
255
- #
256
- # @param [String] filename the filename to be sanitized
257
- # @return [String] the sanitized filename
258
- def sanitize_filename(filename)
259
- filename.gsub(/.*[\/\\]/, '')
260
- end
261
-
262
- def build_request_url(path)
263
- # Add leading and trailing slashes to path
264
- path = "/#{path}".gsub(/\/+/, '/')
265
- Addressable::URI.encode(@config.api_base_url + @config.api_version + path)
266
- end
267
-
268
- # Builds the HTTP request body
269
- #
270
- # @param [Hash] header_params Header parameters
271
- # @param [Hash] form_params Query parameters
272
- # @param [Object] body HTTP body (JSON/XML)
273
- # @return [String] HTTP body data in the form of string
274
- def build_request_body(header_params, form_params, body)
275
- # http form
276
- if header_params['Content-Type'] == 'application/x-www-form-urlencoded' ||
277
- header_params['Content-Type'] == 'multipart/form-data'
278
- data = {}
279
- form_params.each do |key, value|
280
- case value
281
- when ::File
282
- data[key] = Faraday::UploadIO.new(value.path, MimeMagic.by_magic(value).to_s, key)
283
- when ::Array, nil
284
- data[key] = value
285
- else
286
- data[key] = value.to_s
287
- end
288
- end
289
- elsif body
290
- data = body.is_a?(String) ? body : body.to_json
291
- else
292
- data = nil
293
- end
294
- data
295
- end
296
-
297
- # Update hearder and query params based on authentication settings.
298
- #
299
- # @param [Hash] header_params Header parameters
300
- # @param [String] access_token OAuth access token
301
- def update_params_for_oauth!(header_params, access_token)
302
- header_params["Authorization"] = "Bearer #{access_token}"
303
- end
304
-
305
- # Sets user agent in HTTP header
306
- #
307
- # @param [String] user_agent User agent (e.g. swagger-codegen/ruby/1.0.0)
308
- def user_agent=(user_agent)
309
- @user_agent = user_agent
310
- @default_headers['User-Agent'] = @user_agent
311
- end
312
-
313
- # Return Accept header based on an array of accepts provided.
314
- # @param [Array] accepts array for Accept
315
- # @return [String] the Accept header (e.g. application/json)
316
- def select_header_accept(accepts)
317
- return nil if accepts.nil? || accepts.empty?
318
- # use JSON when present, otherwise use all of the provided
319
- json_accept = accepts.find { |s| json_mime?(s) }
320
- return json_accept || accepts.join(',')
321
- end
322
-
323
- # Return Content-Type header based on an array of content types provided.
324
- # @param [Array] content_types array for Content-Type
325
- # @return [String] the Content-Type header (e.g. application/json)
326
- def select_header_content_type(content_types)
327
- # use application/json by default
328
- return 'application/json' if content_types.nil? || content_types.empty?
329
- # use JSON when present, otherwise use the first one
330
- json_content_type = content_types.find { |s| json_mime?(s) }
331
- return json_content_type || content_types.first
332
- end
333
-
334
- # Convert object (array, hash, object, etc) to JSON string.
335
- # @param [Object] model object to be converted into JSON string
336
- # @return [String] JSON string representation of the object
337
- def object_to_http_body(model)
338
- return '"' + model + '"' if model.is_a?(String)
339
- return model if model.nil?
340
- local_body = nil
341
- if model.is_a?(Array)
342
- local_body = model.map { |m| object_to_hash(m) }
343
- else
344
- local_body = object_to_hash(model)
345
- end
346
- local_body.to_json
347
- end
348
-
349
- # Convert object(non-array) to hash.
350
- # @param [Object] obj object to be converted into JSON string
351
- # @return [String] JSON string representation of the object
352
- def object_to_hash(obj)
353
- if obj.respond_to?(:to_hash)
354
- obj.to_hash
355
- else
356
- obj
357
- end
358
- end
359
-
360
- # Build parameter value according to the given collection format.
361
- # @param [String] collection_format one of :csv, :ssv, :tsv, :pipes and :multi
362
- def build_collection_param(param, collection_format)
363
- case collection_format
364
- when :csv
365
- param.join(',')
366
- when :ssv
367
- param.join(' ')
368
- when :tsv
369
- param.join("\t")
370
- when :pipes
371
- param.join('|')
372
- when :multi
373
- # return the array directly as faraday will handle it as expected
374
- param
375
- else
376
- raise "unknown collection format: #{collection_format.inspect}"
377
- end
378
- end
379
- end
380
- end
1
+ # -----------------------------------------------------------------------------------
2
+ # <copyright company="Aspose Pty Ltd" file="api_client.rb">
3
+ # Copyright (c) 2003-2021 Aspose Pty Ltd
4
+ # </copyright>
5
+ # <summary>
6
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ # of this software and associated documentation files (the "Software"), to deal
8
+ # in the Software without restriction, including without limitation the rights
9
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ # copies of the Software, and to permit persons to whom the Software is
11
+ # furnished to do so, subject to the following conditions:
12
+ #
13
+ # The above copyright notice and this permission notice shall be included in all
14
+ # copies or substantial portions of the Software.
15
+ #
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ # SOFTWARE.
23
+ # </summary>
24
+ # -----------------------------------------------------------------------------------
25
+
26
+ require 'date'
27
+ require 'json'
28
+ require 'logger'
29
+ require 'tempfile'
30
+ require 'faraday'
31
+ require 'mimemagic'
32
+ require 'addressable'
33
+ require_relative 'version'
34
+ require_relative 'api_error'
35
+
36
+ module GroupDocsSignatureCloud
37
+ #
38
+ # api client is mainly responsible for making the HTTP call to the API backend.
39
+ #
40
+ class ApiClient
41
+ # The Configuration object holding settings to be used in the API client.
42
+ attr_accessor :config
43
+
44
+ # Defines the headers to be used in HTTP requests of all API calls by default.
45
+ #
46
+ # @return [Hash]
47
+ attr_accessor :default_headers
48
+
49
+ # Initializes the ApiClient
50
+ # @option config [Configuration] Configuration for initializing the object
51
+ def initialize(config)
52
+ @config = config
53
+ @default_headers = {
54
+ 'Content-Type' => config.api_version == '' ? "application/x-www-form-urlencoded" : "application/json",
55
+ 'x-groupdocs-client' => "ruby sdk",
56
+ 'x-groupdocs-version' => GroupDocsSignatureCloud::VERSION.to_s
57
+ }
58
+ end
59
+
60
+ # Call an API with given options.
61
+ #
62
+ # @return [Array<(Object, Fixnum, Hash)>] an array of 3 elements:
63
+ # the data deserialized from response body (could be nil), response status code and response headers.
64
+ def call_api(http_method, path, opts = {})
65
+ response = build_request(http_method, path, opts)
66
+ download_file response if opts[:return_type] == 'File'
67
+ if @config.debugging
68
+ @config.logger.debug "'HTTP' response body '~BEGIN~'\n #{response.body}\n'~END~'\n"
69
+ end
70
+
71
+ unless response.success?
72
+ raise ApiError.new(:code => response.status, :response_body => response.body)
73
+ end
74
+
75
+ data = deserialize(response, opts[:return_type]) if opts[:return_type]
76
+ [data, response.status, response.headers]
77
+ end
78
+
79
+ # Builds the HTTP request
80
+ #
81
+ # @param [String] http_method HTTP method/verb (e.g. POST)
82
+ # @param [String] path URL path (e.g. /account/new)
83
+ # @option opts [Hash] :header_params Header parameters
84
+ # @option opts [Hash] :query_params Query parameters
85
+ # @option opts [Hash] :form_params Query parameters
86
+ # @option opts [Object] :body HTTP body (JSON/XML)
87
+ # @return [Faraday::Response] A Faraday Response
88
+ def build_request(http_method, path, opts = {})
89
+ url = build_request_url(path)
90
+ http_method = http_method.to_sym.downcase
91
+
92
+ header_params = @default_headers.merge(opts[:header_params] || {})
93
+ query_params = opts[:query_params] || {}
94
+ form_params = opts[:form_params] || {}
95
+ body = opts[:body] if opts[:body] || nil?
96
+
97
+ update_params_for_oauth! header_params, opts[:access_token]
98
+
99
+ req_opts = {
100
+ :method => http_method,
101
+ :headers => header_params,
102
+ :params => query_params,
103
+ :body => body
104
+ }
105
+
106
+ if [:post, :patch, :put, :delete].include?(http_method)
107
+ req_body = build_request_body(header_params, form_params, opts[:body])
108
+ req_opts.update :body => req_body
109
+ if @config.debugging
110
+ @config.logger.debug "HTTP request body param ~BEGIN~\n#{req_body}\n~END~\n"
111
+ end
112
+ end
113
+
114
+ conn = Faraday.new url, { :params => query_params, :headers => header_params} do |f|
115
+ f.request :multipart
116
+ f.request :url_encoded
117
+ f.adapter Faraday.default_adapter
118
+ end
119
+
120
+ conn.options.timeout = 30
121
+
122
+ case http_method
123
+ when :post
124
+ return conn.post url, req_opts[:body]
125
+ when :put
126
+ return conn.put url, req_opts[:body]
127
+ when :get
128
+ return conn.get url, req_opts[:body]
129
+ else
130
+ return conn.delete url do |c|
131
+ c.body = req_opts[:body]
132
+ end
133
+ end
134
+ end
135
+
136
+ # Check if the given MIME is a JSON MIME.
137
+ # JSON MIME examples:
138
+ # application/json
139
+ # application/json; charset=UTF8
140
+ # APPLICATION/JSON
141
+ # */*
142
+ # @param [String] mime MIME
143
+ # @return [Boolean] True if the MIME is application/json
144
+ def json_mime?(mime)
145
+ (mime == "*/*") || !(mime =~ /Application\/.*json(?!p)(;.*)?/i).nil?
146
+ end
147
+
148
+ # Deserialize the response to the given return type.
149
+ #
150
+ # @param [Response] response HTTP response
151
+ # @param [String] return_type some examples: "User", "Array[User]", "Hash[String,Integer]"
152
+ def deserialize(response, return_type)
153
+ body = response.body
154
+
155
+ # handle file downloading - return the File instance processed in request callbacks
156
+ # note that response body is empty when the file is written in chunks in request on_body callback
157
+ return @tempfile if return_type == 'File'
158
+
159
+ return nil if body.nil? || body.empty?
160
+
161
+ # return response body directly for String return type
162
+ return body if return_type == 'String'
163
+
164
+ # ensuring a default content type
165
+ content_type = response.headers['Content-Type'] || 'application/json'
166
+
167
+ raise "Content-Type is not supported: #{content_type}" unless json_mime?(content_type)
168
+
169
+ begin
170
+ data = JSON.parse("[#{body}]", :symbolize_names => true)[0]
171
+ rescue JSON::ParserError => e
172
+ if %w[String Date DateTime].include?(return_type)
173
+ data = body
174
+ else
175
+ raise e
176
+ end
177
+ end
178
+
179
+ convert_to_type data, return_type
180
+ end
181
+
182
+ # Convert data to the given return type.
183
+ # @param [Object] data Data to be converted
184
+ # @param [String] return_type Return type
185
+ # @return [Mixed] Data in a particular type
186
+ def convert_to_type(data, return_type)
187
+ return nil if data.nil?
188
+ case return_type
189
+ when 'String'
190
+ data.to_s
191
+ when 'Integer'
192
+ data.to_i
193
+ when 'Float'
194
+ data.to_f
195
+ when 'BOOLEAN'
196
+ data == true
197
+ when 'DateTime'
198
+ # parse date time (expecting ISO 8601 format)
199
+ DateTime.parse data
200
+ when 'Date'
201
+ # parse date time (expecting ISO 8601 format)
202
+ Date.parse data
203
+ when 'Object'
204
+ # generic object (usually a Hash), return directly
205
+ data
206
+ when /\AArray<(.+)>\z/
207
+ # e.g. Array<Pet>
208
+ sub_type = $1
209
+ data.map {|item| convert_to_type(item, sub_type) }
210
+ when /\AHash\<String, (.+)\>\z/
211
+ # e.g. Hash<String, Integer>
212
+ sub_type = $1
213
+ {}.tap do |hash|
214
+ data.each {|k, v| hash[k] = convert_to_type(v, sub_type) }
215
+ end
216
+ else
217
+ # models, e.g. Pet
218
+ GroupDocsSignatureCloud.const_get(return_type).new.tap do |model|
219
+ model.build_from_hash data
220
+ end
221
+ end
222
+ end
223
+
224
+ # Save response body into a file in (the defined) temporary folder, using the filename
225
+ # from the "Content-Disposition" header if provided, otherwise a random filename.
226
+ # The response body is written to the file in chunks in order to handle files which
227
+ # size is larger than maximum Ruby String or even larger than the maximum memory a Ruby
228
+ # process can use.
229
+ #
230
+ # @see Configuration#temp_folder_path
231
+ def download_file(response)
232
+ tempfile = nil
233
+ encoding = nil
234
+ content_disposition = response.headers['Content-Disposition']
235
+ if content_disposition and content_disposition =~ /filename=/i
236
+ filename = content_disposition[/filename=['"]?([^'"\s]+)['"]?/, 1]
237
+ prefix = sanitize_filename(filename)
238
+ else
239
+ prefix = 'download-'
240
+ end
241
+ prefix += '-' unless prefix.end_with?('-')
242
+ encoding = response.body.encoding
243
+ tempfile = Tempfile.open(prefix, @config.temp_folder_path, encoding: encoding)
244
+ @tempfile = tempfile
245
+ tempfile.write(response.body)
246
+ response.on_complete do |resp|
247
+ tempfile.close
248
+ @config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder "\
249
+ "with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file "\
250
+ "will be deleted automatically with GC. It's also recommended to delete the temp file "\
251
+ "explicitly with `tempfile.delete`"
252
+ end
253
+ end
254
+
255
+ # Sanitize filename by removing path.
256
+ # e.g. ../../sun.gif becomes sun.gif
257
+ #
258
+ # @param [String] filename the filename to be sanitized
259
+ # @return [String] the sanitized filename
260
+ def sanitize_filename(filename)
261
+ filename.gsub(/.*[\/\\]/, '')
262
+ end
263
+
264
+ def build_request_url(path)
265
+ # Add leading and trailing slashes to path
266
+ path = "/#{path}".gsub(/\/+/, '/')
267
+ Addressable::URI.encode(@config.api_base_url + @config.api_version + path)
268
+ end
269
+
270
+ # Builds the HTTP request body
271
+ #
272
+ # @param [Hash] header_params Header parameters
273
+ # @param [Hash] form_params Query parameters
274
+ # @param [Object] body HTTP body (JSON/XML)
275
+ # @return [String] HTTP body data in the form of string
276
+ def build_request_body(header_params, form_params, body)
277
+ # http form
278
+ if body
279
+ data = body.is_a?(String) ? body : body.to_json
280
+ elsif header_params['Content-Type'] == 'application/x-www-form-urlencoded' ||
281
+ header_params['Content-Type'] == 'multipart/form-data'
282
+ data = {}
283
+ form_params.each do |key, value|
284
+ case value
285
+ when ::File
286
+ data[key] = Faraday::UploadIO.new(value.path, MimeMagic.by_magic(value).to_s, key)
287
+ when ::Array, nil
288
+ data[key] = value
289
+ else
290
+ data[key] = value.to_s
291
+ end
292
+ end
293
+ else
294
+ data = nil
295
+ end
296
+ data
297
+ end
298
+
299
+ # Update hearder and query params based on authentication settings.
300
+ #
301
+ # @param [Hash] header_params Header parameters
302
+ # @param [String] access_token OAuth access token
303
+ def update_params_for_oauth!(header_params, access_token)
304
+ header_params["Authorization"] = "Bearer #{access_token}"
305
+ end
306
+
307
+ # Sets user agent in HTTP header
308
+ #
309
+ # @param [String] user_agent User agent (e.g. swagger-codegen/ruby/1.0.0)
310
+ def user_agent=(user_agent)
311
+ @user_agent = user_agent
312
+ @default_headers['User-Agent'] = @user_agent
313
+ end
314
+
315
+ # Return Accept header based on an array of accepts provided.
316
+ # @param [Array] accepts array for Accept
317
+ # @return [String] the Accept header (e.g. application/json)
318
+ def select_header_accept(accepts)
319
+ return nil if accepts.nil? || accepts.empty?
320
+ # use JSON when present, otherwise use all of the provided
321
+ json_accept = accepts.find { |s| json_mime?(s) }
322
+ return json_accept || accepts.join(',')
323
+ end
324
+
325
+ # Return Content-Type header based on an array of content types provided.
326
+ # @param [Array] content_types array for Content-Type
327
+ # @return [String] the Content-Type header (e.g. application/json)
328
+ def select_header_content_type(content_types)
329
+ # use application/json by default
330
+ return 'application/json' if content_types.nil? || content_types.empty?
331
+ # use JSON when present, otherwise use the first one
332
+ json_content_type = content_types.find { |s| json_mime?(s) }
333
+ return json_content_type || content_types.first
334
+ end
335
+
336
+ # Convert object (array, hash, object, etc) to JSON string.
337
+ # @param [Object] model object to be converted into JSON string
338
+ # @return [String] JSON string representation of the object
339
+ def object_to_http_body(model)
340
+ return '"' + model + '"' if model.is_a?(String)
341
+ return model if model.nil?
342
+ local_body = nil
343
+ if model.is_a?(Array)
344
+ local_body = model.map { |m| object_to_hash(m) }
345
+ else
346
+ local_body = object_to_hash(model)
347
+ end
348
+ local_body.to_json
349
+ end
350
+
351
+ # Convert object(non-array) to hash.
352
+ # @param [Object] obj object to be converted into JSON string
353
+ # @return [String] JSON string representation of the object
354
+ def object_to_hash(obj)
355
+ if obj.respond_to?(:to_hash)
356
+ obj.to_hash
357
+ else
358
+ obj
359
+ end
360
+ end
361
+
362
+ # Build parameter value according to the given collection format.
363
+ # @param [String] collection_format one of :csv, :ssv, :tsv, :pipes and :multi
364
+ def build_collection_param(param, collection_format)
365
+ case collection_format
366
+ when :csv
367
+ param.join(',')
368
+ when :ssv
369
+ param.join(' ')
370
+ when :tsv
371
+ param.join("\t")
372
+ when :pipes
373
+ param.join('|')
374
+ when :multi
375
+ # return the array directly as faraday will handle it as expected
376
+ param
377
+ else
378
+ raise "unknown collection format: #{collection_format.inspect}"
379
+ end
380
+ end
381
+ end
382
+ end