aspose_cells_cloud 20.8 → 21.1

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 (549) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -1
  3. data/README.md +47 -52
  4. data/lib/aspose_cells_cloud.rb +297 -291
  5. data/lib/aspose_cells_cloud/api/cells_api.rb +20033 -19207
  6. data/lib/aspose_cells_cloud/api_client.rb +493 -489
  7. data/lib/aspose_cells_cloud/api_error.rb +18 -8
  8. data/lib/aspose_cells_cloud/configuration.rb +178 -178
  9. data/lib/aspose_cells_cloud/models/above_average.rb +234 -234
  10. data/lib/aspose_cells_cloud/models/access_token_response.rb +261 -261
  11. data/lib/aspose_cells_cloud/models/area.rb +243 -243
  12. data/lib/aspose_cells_cloud/models/auto_filter.rb +227 -227
  13. data/lib/aspose_cells_cloud/models/auto_filter_response.rb +221 -221
  14. data/lib/aspose_cells_cloud/models/auto_fitter_options.rb +231 -231
  15. data/lib/aspose_cells_cloud/models/auto_shape.rb +504 -504
  16. data/lib/aspose_cells_cloud/models/auto_shape_response.rb +221 -221
  17. data/lib/aspose_cells_cloud/models/auto_shapes.rb +209 -209
  18. data/lib/aspose_cells_cloud/models/auto_shapes_response.rb +221 -221
  19. data/lib/aspose_cells_cloud/models/border.rb +216 -216
  20. data/lib/aspose_cells_cloud/models/calculation_options.rb +225 -225
  21. data/lib/aspose_cells_cloud/models/cell.rb +401 -401
  22. data/lib/aspose_cells_cloud/models/cell_area.rb +245 -245
  23. data/lib/aspose_cells_cloud/models/cell_response.rb +221 -221
  24. data/lib/aspose_cells_cloud/models/cell_value.rb +234 -234
  25. data/lib/aspose_cells_cloud/models/cells.rb +270 -270
  26. data/lib/aspose_cells_cloud/models/cells_cloud_file_info.rb +230 -230
  27. data/lib/aspose_cells_cloud/models/cells_cloud_response.rb +212 -212
  28. data/lib/aspose_cells_cloud/models/cells_color.rb +234 -234
  29. data/lib/aspose_cells_cloud/models/cells_document_properties.rb +209 -209
  30. data/lib/aspose_cells_cloud/models/cells_document_properties_response.rb +221 -221
  31. data/lib/aspose_cells_cloud/models/cells_document_property.rb +225 -225
  32. data/lib/aspose_cells_cloud/models/cells_document_property_response.rb +221 -221
  33. data/lib/aspose_cells_cloud/models/{error.rb → cells_error.rb} +229 -229
  34. data/lib/aspose_cells_cloud/models/cells_object_operate_task_parameter.rb +216 -216
  35. data/lib/aspose_cells_cloud/models/cells_response.rb +221 -221
  36. data/lib/aspose_cells_cloud/models/chart.rb +626 -626
  37. data/lib/aspose_cells_cloud/models/chart_area.rb +317 -317
  38. data/lib/aspose_cells_cloud/models/chart_area_response.rb +221 -221
  39. data/lib/aspose_cells_cloud/models/chart_frame.rb +317 -317
  40. data/lib/aspose_cells_cloud/models/chart_operate_parameter.rb +279 -279
  41. data/lib/aspose_cells_cloud/models/charts.rb +209 -209
  42. data/lib/aspose_cells_cloud/models/charts_response.rb +221 -221
  43. data/lib/aspose_cells_cloud/models/color.rb +245 -245
  44. data/lib/aspose_cells_cloud/models/color_filter.rb +234 -234
  45. data/lib/aspose_cells_cloud/models/color_filter_request.rb +216 -216
  46. data/lib/aspose_cells_cloud/models/color_scale.rb +249 -249
  47. data/lib/aspose_cells_cloud/models/column.rb +243 -243
  48. data/lib/aspose_cells_cloud/models/column_response.rb +221 -221
  49. data/lib/aspose_cells_cloud/models/columns.rb +237 -237
  50. data/lib/aspose_cells_cloud/models/columns_response.rb +221 -221
  51. data/lib/aspose_cells_cloud/models/comment.rb +297 -297
  52. data/lib/aspose_cells_cloud/models/comment_response.rb +221 -221
  53. data/lib/aspose_cells_cloud/models/comments.rb +209 -209
  54. data/lib/aspose_cells_cloud/models/comments_response.rb +221 -221
  55. data/lib/aspose_cells_cloud/models/conditional_formatting.rb +218 -218
  56. data/lib/aspose_cells_cloud/models/conditional_formatting_icon.rb +235 -235
  57. data/lib/aspose_cells_cloud/models/conditional_formatting_response.rb +221 -221
  58. data/lib/aspose_cells_cloud/models/conditional_formatting_value.rb +219 -219
  59. data/lib/aspose_cells_cloud/models/conditional_formattings.rb +223 -223
  60. data/lib/aspose_cells_cloud/models/conditional_formattings_response.rb +221 -221
  61. data/lib/aspose_cells_cloud/models/convert_task_parameter.rb +216 -216
  62. data/lib/aspose_cells_cloud/models/convert_worksheet_task_parameter.rb +261 -0
  63. data/lib/aspose_cells_cloud/models/copy_options.rb +248 -248
  64. data/lib/aspose_cells_cloud/models/create_pivot_table_request.rb +263 -263
  65. data/lib/aspose_cells_cloud/models/custom_filter.rb +207 -207
  66. data/lib/aspose_cells_cloud/models/custom_parser_config.rb +216 -216
  67. data/lib/aspose_cells_cloud/models/data_bar.rb +309 -309
  68. data/lib/aspose_cells_cloud/models/data_bar_border.rb +209 -209
  69. data/lib/aspose_cells_cloud/models/data_sorter.rb +227 -227
  70. data/lib/aspose_cells_cloud/models/dif_save_options.rb +265 -265
  71. data/lib/aspose_cells_cloud/models/disc_usage.rb +219 -219
  72. data/lib/aspose_cells_cloud/models/dynamic_filter.rb +216 -216
  73. data/lib/aspose_cells_cloud/models/error_details.rb +214 -214
  74. data/lib/aspose_cells_cloud/models/file_source.rb +207 -207
  75. data/lib/aspose_cells_cloud/models/file_version.rb +274 -274
  76. data/lib/aspose_cells_cloud/models/file_versions.rb +201 -201
  77. data/lib/aspose_cells_cloud/models/files_list.rb +201 -201
  78. data/lib/aspose_cells_cloud/models/files_upload_result.rb +213 -213
  79. data/lib/aspose_cells_cloud/models/fill_format.rb +259 -259
  80. data/lib/aspose_cells_cloud/models/fill_format_response.rb +221 -221
  81. data/lib/aspose_cells_cloud/models/filter_column.rb +277 -277
  82. data/lib/aspose_cells_cloud/models/font.rb +279 -279
  83. data/lib/aspose_cells_cloud/models/font_setting.rb +244 -244
  84. data/lib/aspose_cells_cloud/models/format_condition.rb +327 -327
  85. data/lib/aspose_cells_cloud/models/gradient_fill.rb +227 -227
  86. data/lib/aspose_cells_cloud/models/gradient_fill_stop.rb +226 -226
  87. data/lib/aspose_cells_cloud/models/horizontal_page_break.rb +231 -231
  88. data/lib/aspose_cells_cloud/models/horizontal_page_break_response.rb +221 -221
  89. data/lib/aspose_cells_cloud/models/horizontal_page_breaks.rb +209 -209
  90. data/lib/aspose_cells_cloud/models/horizontal_page_breaks_response.rb +221 -221
  91. data/lib/aspose_cells_cloud/models/html_save_options.rb +373 -373
  92. data/lib/aspose_cells_cloud/models/hyperlink.rb +234 -234
  93. data/lib/aspose_cells_cloud/models/hyperlink_response.rb +221 -221
  94. data/lib/aspose_cells_cloud/models/hyperlinks.rb +223 -223
  95. data/lib/aspose_cells_cloud/models/hyperlinks_response.rb +221 -221
  96. data/lib/aspose_cells_cloud/models/icon_filter.rb +212 -212
  97. data/lib/aspose_cells_cloud/models/icon_set.rb +253 -253
  98. data/lib/aspose_cells_cloud/models/image_save_options.rb +373 -373
  99. data/lib/aspose_cells_cloud/models/import_batch_data_option.rb +236 -236
  100. data/lib/aspose_cells_cloud/models/import_csv_data_option.rb +281 -281
  101. data/lib/aspose_cells_cloud/models/import_data_task_parameter.rb +216 -216
  102. data/lib/aspose_cells_cloud/models/import_double_array_option.rb +263 -263
  103. data/lib/aspose_cells_cloud/models/import_int_array_option.rb +263 -263
  104. data/lib/aspose_cells_cloud/models/import_option.rb +225 -225
  105. data/lib/aspose_cells_cloud/models/import_string_array_option.rb +263 -263
  106. data/lib/aspose_cells_cloud/models/legend.rb +335 -335
  107. data/lib/aspose_cells_cloud/models/legend_response.rb +221 -221
  108. data/lib/aspose_cells_cloud/models/line.rb +360 -360
  109. data/lib/aspose_cells_cloud/models/line_format.rb +358 -358
  110. data/lib/aspose_cells_cloud/models/line_response.rb +221 -221
  111. data/lib/aspose_cells_cloud/models/link.rb +225 -225
  112. data/lib/aspose_cells_cloud/models/link_element.rb +198 -198
  113. data/lib/aspose_cells_cloud/models/list_column.rb +209 -209
  114. data/lib/aspose_cells_cloud/models/list_object.rb +350 -350
  115. data/lib/aspose_cells_cloud/models/list_object_operate_parameter.rb +207 -207
  116. data/lib/aspose_cells_cloud/models/list_object_response.rb +221 -221
  117. data/lib/aspose_cells_cloud/models/list_objects.rb +209 -209
  118. data/lib/aspose_cells_cloud/models/list_objects_response.rb +221 -221
  119. data/lib/aspose_cells_cloud/models/m_html_save_options.rb +373 -373
  120. data/lib/aspose_cells_cloud/models/markdown_save_options.rb +292 -292
  121. data/lib/aspose_cells_cloud/models/merged_cell.rb +254 -254
  122. data/lib/aspose_cells_cloud/models/merged_cell_response.rb +221 -221
  123. data/lib/aspose_cells_cloud/models/merged_cells.rb +223 -223
  124. data/lib/aspose_cells_cloud/models/merged_cells_response.rb +221 -221
  125. data/lib/aspose_cells_cloud/models/multiple_filter.rb +189 -189
  126. data/lib/aspose_cells_cloud/models/multiple_filters.rb +209 -209
  127. data/lib/aspose_cells_cloud/models/name.rb +276 -276
  128. data/lib/aspose_cells_cloud/models/name_response.rb +221 -221
  129. data/lib/aspose_cells_cloud/models/names.rb +223 -223
  130. data/lib/aspose_cells_cloud/models/names_response.rb +221 -221
  131. data/lib/aspose_cells_cloud/models/negative_bar_format.rb +229 -229
  132. data/lib/aspose_cells_cloud/models/object_exist.rb +219 -219
  133. data/lib/aspose_cells_cloud/models/ods_save_options.rb +265 -265
  134. data/lib/aspose_cells_cloud/models/ole_object.rb +567 -567
  135. data/lib/aspose_cells_cloud/models/ole_object_response.rb +221 -221
  136. data/lib/aspose_cells_cloud/models/ole_objects.rb +209 -209
  137. data/lib/aspose_cells_cloud/models/ole_objects_response.rb +221 -221
  138. data/lib/aspose_cells_cloud/models/ooxml_save_options.rb +274 -274
  139. data/lib/aspose_cells_cloud/models/operate_object.rb +207 -207
  140. data/lib/aspose_cells_cloud/models/operate_object_position.rb +243 -243
  141. data/lib/aspose_cells_cloud/models/operate_parameter.rb +198 -198
  142. data/lib/aspose_cells_cloud/models/page_break_operate_parameter.rb +252 -252
  143. data/lib/aspose_cells_cloud/models/page_section.rb +259 -259
  144. data/lib/aspose_cells_cloud/models/page_sections_response.rb +223 -223
  145. data/lib/aspose_cells_cloud/models/page_setup.rb +542 -542
  146. data/lib/aspose_cells_cloud/models/page_setup_operate_parameter.rb +207 -207
  147. data/lib/aspose_cells_cloud/models/page_setup_response.rb +221 -221
  148. data/lib/aspose_cells_cloud/models/password_request.rb +198 -198
  149. data/lib/aspose_cells_cloud/models/paste_options.rb +225 -225
  150. data/lib/aspose_cells_cloud/models/pattern_fill.rb +252 -252
  151. data/lib/aspose_cells_cloud/models/pdf_save_options.rb +355 -355
  152. data/lib/aspose_cells_cloud/models/pdf_security_options.rb +283 -283
  153. data/lib/aspose_cells_cloud/models/pic_format_option.rb +243 -243
  154. data/lib/aspose_cells_cloud/models/picture.rb +558 -558
  155. data/lib/aspose_cells_cloud/models/picture_response.rb +221 -221
  156. data/lib/aspose_cells_cloud/models/pictures.rb +209 -209
  157. data/lib/aspose_cells_cloud/models/pictures_response.rb +221 -221
  158. data/lib/aspose_cells_cloud/models/pivot_field.rb +546 -546
  159. data/lib/aspose_cells_cloud/models/pivot_field_response.rb +221 -221
  160. data/lib/aspose_cells_cloud/models/pivot_filter.rb +279 -279
  161. data/lib/aspose_cells_cloud/models/pivot_filter_response.rb +221 -221
  162. data/lib/aspose_cells_cloud/models/pivot_filters_response.rb +223 -223
  163. data/lib/aspose_cells_cloud/models/pivot_item.rb +228 -228
  164. data/lib/aspose_cells_cloud/models/pivot_table.rb +824 -824
  165. data/lib/aspose_cells_cloud/models/pivot_table_field_request.rb +200 -200
  166. data/lib/aspose_cells_cloud/models/pivot_table_operate_parameter.rb +276 -276
  167. data/lib/aspose_cells_cloud/models/pivot_table_response.rb +221 -221
  168. data/lib/aspose_cells_cloud/models/pivot_tables.rb +209 -209
  169. data/lib/aspose_cells_cloud/models/pivot_tables_response.rb +221 -221
  170. data/lib/aspose_cells_cloud/models/protect_sheet_parameter.rb +335 -335
  171. data/lib/aspose_cells_cloud/models/range.rb +309 -309
  172. data/lib/aspose_cells_cloud/models/range_copy_request.rb +225 -225
  173. data/lib/aspose_cells_cloud/models/range_set_outline_border_request.rb +225 -225
  174. data/lib/aspose_cells_cloud/models/range_set_style_request.rb +207 -207
  175. data/lib/aspose_cells_cloud/models/range_value_response.rb +223 -223
  176. data/lib/aspose_cells_cloud/models/ranges.rb +200 -200
  177. data/lib/aspose_cells_cloud/models/ranges_response.rb +221 -221
  178. data/lib/aspose_cells_cloud/models/result_destination.rb +216 -216
  179. data/lib/aspose_cells_cloud/models/row.rb +261 -261
  180. data/lib/aspose_cells_cloud/models/row_response.rb +221 -221
  181. data/lib/aspose_cells_cloud/models/rows.rb +237 -237
  182. data/lib/aspose_cells_cloud/models/rows_response.rb +221 -221
  183. data/lib/aspose_cells_cloud/models/save_options.rb +265 -265
  184. data/lib/aspose_cells_cloud/models/save_response.rb +221 -221
  185. data/lib/aspose_cells_cloud/models/save_result.rb +200 -200
  186. data/lib/aspose_cells_cloud/models/save_result_task_parameter.rb +207 -207
  187. data/lib/aspose_cells_cloud/models/shadow_effect.rb +252 -252
  188. data/lib/aspose_cells_cloud/models/shape.rb +504 -504
  189. data/lib/aspose_cells_cloud/models/shape_operate_parameter.rb +207 -207
  190. data/lib/aspose_cells_cloud/models/shape_response.rb +221 -221
  191. data/lib/aspose_cells_cloud/models/shapes.rb +209 -209
  192. data/lib/aspose_cells_cloud/models/shapes_response.rb +221 -221
  193. data/lib/aspose_cells_cloud/models/single_value.rb +207 -207
  194. data/lib/aspose_cells_cloud/models/single_value_response.rb +221 -221
  195. data/lib/aspose_cells_cloud/models/smart_marker_task_parameter.rb +216 -216
  196. data/lib/aspose_cells_cloud/models/solid_fill.rb +216 -216
  197. data/lib/aspose_cells_cloud/models/sort_key.rb +221 -221
  198. data/lib/aspose_cells_cloud/models/sparkline.rb +226 -0
  199. data/lib/aspose_cells_cloud/models/sparkline_group.rb +434 -0
  200. data/lib/aspose_cells_cloud/models/sparkline_group_response.rb +221 -0
  201. data/lib/aspose_cells_cloud/models/sparkline_groups.rb +200 -0
  202. data/lib/aspose_cells_cloud/models/sparkline_groups_response.rb +221 -0
  203. data/lib/aspose_cells_cloud/models/split_result.rb +200 -200
  204. data/lib/aspose_cells_cloud/models/split_result_document.rb +212 -212
  205. data/lib/aspose_cells_cloud/models/split_result_response.rb +222 -222
  206. data/lib/aspose_cells_cloud/models/split_workbook_task_parameter.rb +243 -243
  207. data/lib/aspose_cells_cloud/models/spreadsheet_ml2003_save_options.rb +292 -292
  208. data/lib/aspose_cells_cloud/models/storage_exist.rb +204 -204
  209. data/lib/aspose_cells_cloud/models/storage_file.rb +249 -249
  210. data/lib/aspose_cells_cloud/models/style.rb +407 -407
  211. data/lib/aspose_cells_cloud/models/style_response.rb +221 -221
  212. data/lib/aspose_cells_cloud/models/svg_save_options.rb +274 -274
  213. data/lib/aspose_cells_cloud/models/task_data.rb +200 -200
  214. data/lib/aspose_cells_cloud/models/task_description.rb +207 -207
  215. data/lib/aspose_cells_cloud/models/task_parameter.rb +189 -189
  216. data/lib/aspose_cells_cloud/models/text_item.rb +207 -207
  217. data/lib/aspose_cells_cloud/models/text_items.rb +209 -209
  218. data/lib/aspose_cells_cloud/models/text_items_response.rb +221 -221
  219. data/lib/aspose_cells_cloud/models/text_options.rb +333 -333
  220. data/lib/aspose_cells_cloud/models/text_water_marker_request.rb +239 -239
  221. data/lib/aspose_cells_cloud/models/texture_fill.rb +243 -243
  222. data/lib/aspose_cells_cloud/models/theme_color.rb +207 -207
  223. data/lib/aspose_cells_cloud/models/tile_pic_option.rb +263 -263
  224. data/lib/aspose_cells_cloud/models/title.rb +380 -380
  225. data/lib/aspose_cells_cloud/models/title_response.rb +221 -221
  226. data/lib/aspose_cells_cloud/models/top10.rb +219 -219
  227. data/lib/aspose_cells_cloud/models/top10_filter.rb +240 -240
  228. data/lib/aspose_cells_cloud/models/txt_save_options.rb +301 -301
  229. data/lib/aspose_cells_cloud/models/validation.rb +360 -360
  230. data/lib/aspose_cells_cloud/models/validation_response.rb +221 -221
  231. data/lib/aspose_cells_cloud/models/validations.rb +223 -223
  232. data/lib/aspose_cells_cloud/models/validations_response.rb +221 -221
  233. data/lib/aspose_cells_cloud/models/value_type.rb +189 -189
  234. data/lib/aspose_cells_cloud/models/vertical_page_break.rb +231 -231
  235. data/lib/aspose_cells_cloud/models/vertical_page_break_response.rb +221 -221
  236. data/lib/aspose_cells_cloud/models/vertical_page_breaks.rb +209 -209
  237. data/lib/aspose_cells_cloud/models/vertical_page_breaks_response.rb +221 -221
  238. data/lib/aspose_cells_cloud/models/workbook.rb +290 -290
  239. data/lib/aspose_cells_cloud/models/workbook_encryption_request.rb +224 -224
  240. data/lib/aspose_cells_cloud/models/workbook_operate_parameter.rb +198 -198
  241. data/lib/aspose_cells_cloud/models/workbook_protection_request.rb +209 -209
  242. data/lib/aspose_cells_cloud/models/workbook_replace_response.rb +235 -235
  243. data/lib/aspose_cells_cloud/models/workbook_response.rb +221 -221
  244. data/lib/aspose_cells_cloud/models/workbook_settings.rb +626 -626
  245. data/lib/aspose_cells_cloud/models/workbook_settings_operate_parameter.rb +207 -207
  246. data/lib/aspose_cells_cloud/models/workbook_settings_response.rb +221 -221
  247. data/lib/aspose_cells_cloud/models/worksheet.rb +510 -510
  248. data/lib/aspose_cells_cloud/models/worksheet_moving_request.rb +209 -209
  249. data/lib/aspose_cells_cloud/models/worksheet_replace_response.rb +235 -235
  250. data/lib/aspose_cells_cloud/models/worksheet_response.rb +221 -221
  251. data/lib/aspose_cells_cloud/models/worksheets.rb +209 -209
  252. data/lib/aspose_cells_cloud/models/worksheets_response.rb +221 -221
  253. data/lib/aspose_cells_cloud/models/xls_save_options.rb +265 -265
  254. data/lib/aspose_cells_cloud/models/xlsb_save_options.rb +265 -265
  255. data/lib/aspose_cells_cloud/models/xps_save_options.rb +265 -265
  256. data/lib/aspose_cells_cloud/version.rb +25 -25
  257. data/spec/api/cells_api_spec.rb +2 -1
  258. data/spec/api/cells_auto_filter_api_spec.rb +2 -1
  259. data/spec/api/cells_chart_area_api_spec.rb +2 -1
  260. data/spec/api/cells_charts_api_spec.rb +2 -1
  261. data/spec/api/cells_conditional_formattings_api_spec.rb +2 -1
  262. data/spec/api/cells_hypelinks_api_spec.rb +2 -1
  263. data/spec/api/cells_list_objects_api_spec.rb +2 -1
  264. data/spec/api/cells_ole_objects_api_spec.rb +2 -1
  265. data/spec/api/cells_page_breaks_api_spec.rb +2 -1
  266. data/spec/api/cells_page_setup_api_spec.rb +2 -1
  267. data/spec/api/cells_pictures_api_spec.rb +2 -1
  268. data/spec/api/cells_pivot_tables_api_spec.rb +33 -1
  269. data/spec/api/cells_properties_api_spec.rb +2 -1
  270. data/spec/api/cells_ranges_api_spec.rb +30 -1
  271. data/spec/api/cells_save_as_api_spec.rb +2 -1
  272. data/spec/api/cells_shapes_api_spec.rb +2 -1
  273. data/spec/api/cells_simple_spec.rb +2 -1
  274. data/spec/api/cells_sparkline_group_spec.rb +43 -0
  275. data/spec/api/cells_storage_api_spec.rb +69 -68
  276. data/spec/api/cells_storage_spec.rb +3 -2
  277. data/spec/api/cells_task_api_spec.rb +2 -1
  278. data/spec/api/cells_workbook_api_spec.rb +3 -2
  279. data/spec/api/cells_worksheet_validations_api_spec.rb +2 -1
  280. data/spec/api/cells_worksheets_api_spec.rb +60 -58
  281. data/spec/spec_helper.rb +6 -4
  282. metadata +12 -299
  283. data/Gemfile +0 -7
  284. data/Rakefile +0 -8
  285. data/aspose_cells_cloud-20.2.gem +0 -0
  286. data/aspose_cells_cloud-20.4.gem +0 -0
  287. data/aspose_cells_cloud-20.6.gem +0 -0
  288. data/aspose_cells_cloud-20.7.gem +0 -0
  289. data/aspose_cells_cloud.gemspec +0 -48
  290. data/data/Book1.xlsx +0 -0
  291. data/data/ImportData.xlsx +0 -0
  292. data/data/NewCopy.xlsx +0 -0
  293. data/data/OLEDoc.docx +0 -0
  294. data/data/PivTestFile2.xlsx +0 -0
  295. data/data/ReportData.xml +0 -1
  296. data/data/TestCase.xlsx +0 -0
  297. data/data/TestImportData.xlsx +0 -0
  298. data/data/TestImportDataCSV.csv +0 -3
  299. data/data/WaterMark.png +0 -0
  300. data/data/markdowntest.md +0 -41
  301. data/data/myDocument.xlsx +0 -0
  302. data/data/word.jpg +0 -0
  303. data/docs/AboveAverage.md +0 -10
  304. data/docs/AccessTokenResponse.md +0 -15
  305. data/docs/Area.md +0 -13
  306. data/docs/AutoFilter.md +0 -11
  307. data/docs/AutoFilterResponse.md +0 -10
  308. data/docs/AutoFitterOptions.md +0 -10
  309. data/docs/AutoShape.md +0 -42
  310. data/docs/AutoShapeResponse.md +0 -10
  311. data/docs/AutoShapes.md +0 -9
  312. data/docs/AutoShapesResponse.md +0 -10
  313. data/docs/Border.md +0 -10
  314. data/docs/CalculationOptions.md +0 -11
  315. data/docs/Cell.md +0 -24
  316. data/docs/CellArea.md +0 -11
  317. data/docs/CellResponse.md +0 -10
  318. data/docs/CellValue.md +0 -12
  319. data/docs/Cells.md +0 -14
  320. data/docs/CellsApi.md +0 -14581
  321. data/docs/CellsCloudResponse.md +0 -9
  322. data/docs/CellsColor.md +0 -12
  323. data/docs/CellsDocumentProperties.md +0 -9
  324. data/docs/CellsDocumentPropertiesResponse.md +0 -10
  325. data/docs/CellsDocumentProperty.md +0 -11
  326. data/docs/CellsDocumentPropertyResponse.md +0 -10
  327. data/docs/CellsObjectOperateTaskParameter.md +0 -10
  328. data/docs/CellsResponse.md +0 -10
  329. data/docs/Chart.md +0 -51
  330. data/docs/ChartArea.md +0 -21
  331. data/docs/ChartAreaResponse.md +0 -10
  332. data/docs/ChartFrame.md +0 -21
  333. data/docs/ChartOperateParameter.md +0 -17
  334. data/docs/Charts.md +0 -9
  335. data/docs/ChartsResponse.md +0 -10
  336. data/docs/Color.md +0 -11
  337. data/docs/ColorFilter.md +0 -12
  338. data/docs/ColorFilterRequest.md +0 -10
  339. data/docs/ColorScale.md +0 -13
  340. data/docs/Column.md +0 -13
  341. data/docs/ColumnResponse.md +0 -10
  342. data/docs/Columns.md +0 -11
  343. data/docs/ColumnsResponse.md +0 -10
  344. data/docs/Comment.md +0 -19
  345. data/docs/CommentResponse.md +0 -10
  346. data/docs/Comments.md +0 -9
  347. data/docs/CommentsResponse.md +0 -10
  348. data/docs/ConditionalFormatting.md +0 -10
  349. data/docs/ConditionalFormattingIcon.md +0 -10
  350. data/docs/ConditionalFormattingResponse.md +0 -10
  351. data/docs/ConditionalFormattingValue.md +0 -10
  352. data/docs/ConditionalFormattings.md +0 -10
  353. data/docs/ConditionalFormattingsResponse.md +0 -10
  354. data/docs/ConvertTaskParameter.md +0 -10
  355. data/docs/CopyOptions.md +0 -13
  356. data/docs/CreatePivotTableRequest.md +0 -14
  357. data/docs/CustomFilter.md +0 -9
  358. data/docs/CustomParserConfig.md +0 -10
  359. data/docs/DataBar.md +0 -19
  360. data/docs/DataBarBorder.md +0 -9
  361. data/docs/DataSorter.md +0 -11
  362. data/docs/DifSaveOptions.md +0 -15
  363. data/docs/DiscUsage.md +0 -9
  364. data/docs/DynamicFilter.md +0 -10
  365. data/docs/Error.md +0 -11
  366. data/docs/ErrorDetails.md +0 -9
  367. data/docs/FileSource.md +0 -9
  368. data/docs/FileVersion.md +0 -14
  369. data/docs/FileVersions.md +0 -8
  370. data/docs/FilesList.md +0 -8
  371. data/docs/FilesUploadResult.md +0 -9
  372. data/docs/FillFormat.md +0 -13
  373. data/docs/FillFormatResponse.md +0 -10
  374. data/docs/FilterColumn.md +0 -16
  375. data/docs/Font.md +0 -17
  376. data/docs/FontSetting.md +0 -12
  377. data/docs/FormatCondition.md +0 -22
  378. data/docs/GradientFill.md +0 -11
  379. data/docs/GradientFillStop.md +0 -10
  380. data/docs/HorizontalPageBreak.md +0 -10
  381. data/docs/HorizontalPageBreakResponse.md +0 -10
  382. data/docs/HorizontalPageBreaks.md +0 -9
  383. data/docs/HorizontalPageBreaksResponse.md +0 -10
  384. data/docs/HtmlSaveOptions.md +0 -27
  385. data/docs/Hyperlink.md +0 -12
  386. data/docs/HyperlinkResponse.md +0 -10
  387. data/docs/Hyperlinks.md +0 -10
  388. data/docs/HyperlinksResponse.md +0 -10
  389. data/docs/IconFilter.md +0 -9
  390. data/docs/IconSet.md +0 -13
  391. data/docs/ImageSaveOptions.md +0 -27
  392. data/docs/ImportBatchDataOption.md +0 -12
  393. data/docs/ImportCSVDataOption.md +0 -17
  394. data/docs/ImportDataTaskParameter.md +0 -10
  395. data/docs/ImportDoubleArrayOption.md +0 -15
  396. data/docs/ImportIntArrayOption.md +0 -15
  397. data/docs/ImportOption.md +0 -11
  398. data/docs/ImportStringArrayOption.md +0 -15
  399. data/docs/Legend.md +0 -23
  400. data/docs/LegendResponse.md +0 -10
  401. data/docs/Line.md +0 -26
  402. data/docs/LineFormat.md +0 -24
  403. data/docs/LineResponse.md +0 -10
  404. data/docs/Link.md +0 -11
  405. data/docs/LinkElement.md +0 -8
  406. data/docs/ListColumn.md +0 -9
  407. data/docs/ListObject.md +0 -23
  408. data/docs/ListObjectOperateParameter.md +0 -9
  409. data/docs/ListObjectResponse.md +0 -10
  410. data/docs/ListObjects.md +0 -9
  411. data/docs/ListObjectsResponse.md +0 -10
  412. data/docs/MHtmlSaveOptions.md +0 -27
  413. data/docs/MarkdownSaveOptions.md +0 -18
  414. data/docs/MergedCell.md +0 -12
  415. data/docs/MergedCellResponse.md +0 -10
  416. data/docs/MergedCells.md +0 -10
  417. data/docs/MergedCellsResponse.md +0 -10
  418. data/docs/MultipleFilter.md +0 -7
  419. data/docs/MultipleFilters.md +0 -9
  420. data/docs/Name.md +0 -15
  421. data/docs/NameResponse.md +0 -10
  422. data/docs/Names.md +0 -10
  423. data/docs/NamesResponse.md +0 -10
  424. data/docs/NegativeBarFormat.md +0 -11
  425. data/docs/ObjectExist.md +0 -9
  426. data/docs/OdsSaveOptions.md +0 -15
  427. data/docs/OleObject.md +0 -49
  428. data/docs/OleObjectResponse.md +0 -10
  429. data/docs/OleObjects.md +0 -9
  430. data/docs/OleObjectsResponse.md +0 -10
  431. data/docs/OoxmlSaveOptions.md +0 -16
  432. data/docs/OperateObject.md +0 -9
  433. data/docs/OperateObjectPosition.md +0 -13
  434. data/docs/OperateParameter.md +0 -8
  435. data/docs/PageBreakOperateParameter.md +0 -14
  436. data/docs/PageSection.md +0 -12
  437. data/docs/PageSectionsResponse.md +0 -10
  438. data/docs/PageSetup.md +0 -42
  439. data/docs/PageSetupOperateParameter.md +0 -9
  440. data/docs/PageSetupResponse.md +0 -10
  441. data/docs/PasswordRequest.md +0 -8
  442. data/docs/PasteOptions.md +0 -11
  443. data/docs/PatternFill.md +0 -14
  444. data/docs/PdfSaveOptions.md +0 -25
  445. data/docs/PdfSecurityOptions.md +0 -17
  446. data/docs/PicFormatOption.md +0 -13
  447. data/docs/Picture.md +0 -48
  448. data/docs/PictureResponse.md +0 -10
  449. data/docs/Pictures.md +0 -9
  450. data/docs/PicturesResponse.md +0 -10
  451. data/docs/PivotField.md +0 -46
  452. data/docs/PivotFieldResponse.md +0 -10
  453. data/docs/PivotFilter.md +0 -16
  454. data/docs/PivotFilterResponse.md +0 -10
  455. data/docs/PivotFiltersResponse.md +0 -10
  456. data/docs/PivotItem.md +0 -11
  457. data/docs/PivotTable.md +0 -76
  458. data/docs/PivotTableFieldRequest.md +0 -8
  459. data/docs/PivotTableOperateParameter.md +0 -16
  460. data/docs/PivotTableResponse.md +0 -10
  461. data/docs/PivotTables.md +0 -9
  462. data/docs/PivotTablesResponse.md +0 -10
  463. data/docs/ProtectSheetParameter.md +0 -23
  464. data/docs/Range.md +0 -16
  465. data/docs/RangeCopyRequest.md +0 -11
  466. data/docs/RangeSetOutlineBorderRequest.md +0 -11
  467. data/docs/RangeSetStyleRequest.md +0 -9
  468. data/docs/RangeValueResponse.md +0 -10
  469. data/docs/Ranges.md +0 -8
  470. data/docs/RangesResponse.md +0 -10
  471. data/docs/ResultDestination.md +0 -10
  472. data/docs/Row.md +0 -15
  473. data/docs/RowResponse.md +0 -10
  474. data/docs/Rows.md +0 -11
  475. data/docs/RowsResponse.md +0 -10
  476. data/docs/SaveOptions.md +0 -15
  477. data/docs/SaveResponse.md +0 -10
  478. data/docs/SaveResult.md +0 -10
  479. data/docs/SaveResultTaskParameter.md +0 -9
  480. data/docs/ShadowEffect.md +0 -14
  481. data/docs/Shape.md +0 -42
  482. data/docs/ShapeOperateParameter.md +0 -9
  483. data/docs/ShapeResponse.md +0 -10
  484. data/docs/Shapes.md +0 -9
  485. data/docs/ShapesResponse.md +0 -10
  486. data/docs/SingleValue.md +0 -9
  487. data/docs/SingleValueResponse.md +0 -10
  488. data/docs/SmartMarkerTaskParameter.md +0 -10
  489. data/docs/SolidFill.md +0 -10
  490. data/docs/SortKey.md +0 -10
  491. data/docs/SplitResult.md +0 -8
  492. data/docs/SplitResultDocument.md +0 -9
  493. data/docs/SplitResultResponse.md +0 -10
  494. data/docs/SplitWorkbookTaskParameter.md +0 -13
  495. data/docs/SpreadsheetML2003SaveOptions.md +0 -18
  496. data/docs/StorageExist.md +0 -8
  497. data/docs/StorageFile.md +0 -12
  498. data/docs/Style.md +0 -31
  499. data/docs/StyleResponse.md +0 -10
  500. data/docs/SvgSaveOptions.md +0 -16
  501. data/docs/TaskData.md +0 -8
  502. data/docs/TaskDescription.md +0 -9
  503. data/docs/TaskParameter.md +0 -7
  504. data/docs/TextItem.md +0 -9
  505. data/docs/TextItems.md +0 -9
  506. data/docs/TextItemsResponse.md +0 -10
  507. data/docs/TextOptions.md +0 -23
  508. data/docs/TextureFill.md +0 -13
  509. data/docs/ThemeColor.md +0 -9
  510. data/docs/TilePicOption.md +0 -13
  511. data/docs/Title.md +0 -28
  512. data/docs/TitleResponse.md +0 -10
  513. data/docs/Top10.md +0 -10
  514. data/docs/Top10Filter.md +0 -11
  515. data/docs/TxtSaveOptions.md +0 -19
  516. data/docs/Validation.md +0 -24
  517. data/docs/ValidationResponse.md +0 -10
  518. data/docs/Validations.md +0 -10
  519. data/docs/ValidationsResponse.md +0 -10
  520. data/docs/ValueType.md +0 -7
  521. data/docs/VerticalPageBreak.md +0 -10
  522. data/docs/VerticalPageBreakResponse.md +0 -10
  523. data/docs/VerticalPageBreaks.md +0 -9
  524. data/docs/VerticalPageBreaksResponse.md +0 -10
  525. data/docs/Workbook.md +0 -18
  526. data/docs/WorkbookEncryptionRequest.md +0 -10
  527. data/docs/WorkbookOperateParameter.md +0 -8
  528. data/docs/WorkbookProtectionRequest.md +0 -9
  529. data/docs/WorkbookReplaceResponse.md +0 -11
  530. data/docs/WorkbookResponse.md +0 -10
  531. data/docs/WorkbookSettings.md +0 -52
  532. data/docs/WorkbookSettingsOperateParameter.md +0 -9
  533. data/docs/WorkbookSettingsResponse.md +0 -10
  534. data/docs/Worksheet.md +0 -39
  535. data/docs/WorksheetMovingRequest.md +0 -9
  536. data/docs/WorksheetReplaceResponse.md +0 -11
  537. data/docs/WorksheetResponse.md +0 -10
  538. data/docs/Worksheets.md +0 -9
  539. data/docs/WorksheetsResponse.md +0 -10
  540. data/docs/XlsSaveOptions.md +0 -15
  541. data/docs/XlsbSaveOptions.md +0 -15
  542. data/docs/XpsSaveOptions.md +0 -15
  543. data/git_push.sh +0 -55
  544. data/nohup.out +0 -2
  545. data/runTest.sh +0 -4
  546. data/spec/api/cells_autoshapes_api_spec.rb +0 -66
  547. data/spec/api/cells_one_spec.rb +0 -37
  548. data/test.pdf +0 -0
  549. data/testResult.txt +0 -132
@@ -1,489 +1,493 @@
1
- =begin
2
- --------------------------------------------------------------------------------------------------------------------
3
- Copyright (c) 2020 Aspose.Cells Cloud
4
- Permission is hereby granted, free of charge, to any person obtaining a copy
5
- of this software and associated documentation files (the "Software"), to deal
6
- in the Software without restriction, including without limitation the rights
7
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
- copies of the Software, and to permit persons to whom the Software is
9
- furnished to do so, subject to the following conditions:
10
- The above copyright notice and this permission notice shall be included in all
11
- copies or substantial portions of the Software.
12
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
14
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
15
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
16
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
17
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
18
- SOFTWARE.
19
- --------------------------------------------------------------------------------------------------------------------
20
-
21
- =end
22
-
23
- require 'date'
24
- require 'json'
25
- require 'logger'
26
- require 'tempfile'
27
- require 'uri'
28
- require 'faraday'
29
- require_relative 'version'
30
- require_relative 'api_error'
31
-
32
- module AsposeCellsCloud
33
- class ApiClient
34
- # The Configuration object holding settings to be used in the API client.
35
- attr_accessor :config
36
-
37
- # Defines the headers to be used in HTTP requests of all API calls by default.
38
- #
39
- # @return [Hash]
40
- attr_accessor :default_headers
41
-
42
- attr_accessor :get_access_token_time
43
- # Initializes the ApiClient
44
- # @option config [Configuration] Configuration for initializing the object, default to Configuration.default
45
- def initialize(config = Configuration.default)
46
- @config = config
47
-
48
- @default_headers = {
49
- 'Content-Type' => "application/json",
50
- 'x-aspose-client' => "ruby sdk",
51
- 'x-aspose-version' => "#{ AsposeCellsCloud::VERSION }"
52
- }
53
- end
54
-
55
- def self.default
56
- @@default ||= ApiClient.new
57
- end
58
-
59
- # Call an API with given options.
60
- #
61
- # @return [Array<(Object, Fixnum, Hash)>] an array of 3 elements:
62
- # the data deserialized from response body (could be nil), response status code and response headers.
63
- def call_api(http_method, path, opts = {})
64
- response = build_request(http_method, path, opts)
65
- download_file response if opts[:return_type] == 'File'
66
-
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
-
73
- if response.status == 0
74
- # Errors from libcurl will be made visible here
75
- fail ApiError.new(:code => 0,
76
- :message => response.reason_phrase)
77
- else
78
- fail ApiError.new(:code => response.status,
79
- :response_headers => response.headers,
80
- :response_body => response.body),
81
- response.reason_phrase
82
- end
83
- end
84
-
85
- if opts[:return_type]
86
- data = deserialize(response, opts[:return_type])
87
- else
88
- data = nil
89
- end
90
- [data, response.status, response.headers]
91
- end
92
-
93
- # Builds the HTTP request
94
- #
95
- # @param [String] http_method HTTP method/verb (e.g. POST)
96
- # @param [String] path URL path (e.g. /account/new)
97
- # @option opts [Hash] :header_params Header parameters
98
- # @option opts [Hash] :query_params Query parameters
99
- # @option opts [Hash] :form_params Query parameters
100
- # @option opts [Object] :body HTTP body (JSON/XML)
101
- # @return [Faraday::Response] A Faraday Response
102
- def build_request(http_method, path, opts = {})
103
- url = build_request_url(path)
104
- http_method = http_method.to_sym.downcase
105
-
106
- header_params = @default_headers.merge(opts[:header_params] || {})
107
- query_params = opts[:query_params] || {}
108
- form_params = opts[:form_params] || {}
109
- body = opts[:body] || {}
110
-
111
- update_params_for_auth! header_params, query_params, opts[:auth_names]
112
-
113
- req_opts = {
114
- :method => http_method,
115
- :headers => header_params,
116
- :params => query_params,
117
- :body => body
118
- }
119
-
120
- if [:post, :patch, :put, :delete].include?(http_method)
121
- req_body = build_request_body(header_params, form_params, opts[:body])
122
- req_opts.update :body => req_body
123
- if @config.debugging
124
- @config.logger.debug "HTTP request body param ~BEGIN~\n#{req_body}\n~END~\n"
125
- end
126
- end
127
-
128
- # OAuth 2.0
129
- req_opts[:params] = opts[:query_params]
130
-
131
- add_o_auth_token(req_opts)
132
-
133
-
134
- conn = Faraday.new url, {:params => query_params, :headers => header_params} do |f|
135
- f.request :multipart
136
- f.request :url_encoded
137
- f.adapter Faraday.default_adapter
138
- end
139
-
140
- if req_opts[:body] == {}
141
- req_opts[:body] = nil
142
- end
143
-
144
- case http_method
145
- when :post
146
- return conn.post url, req_opts[:body]
147
- when :put
148
- return conn.put url, req_opts[:body]
149
- when :get
150
- return conn.get url, req_opts[:body]
151
- else
152
- return conn.delete url do |c|
153
- c.body = req_opts[:body]
154
- end
155
- end
156
- end
157
-
158
- # Check if the given MIME is a JSON MIME.
159
- # JSON MIME examples:
160
- # application/json
161
- # application/json; charset=UTF8
162
- # APPLICATION/JSON
163
- # */*
164
- # @param [String] mime MIME
165
- # @return [Boolean] True if the MIME is application/json
166
- def json_mime?(mime)
167
- (mime == "*/*") || !(mime =~ /Application\/.*json(?!p)(;.*)?/i).nil?
168
- end
169
-
170
- # Deserialize the response to the given return type.
171
- #
172
- # @param [Response] response HTTP response
173
- # @param [String] return_type some examples: "User", "Array[User]", "Hash[String,Integer]"
174
- def deserialize(response, return_type)
175
- body = response.body
176
-
177
- # handle file downloading - return the File instance processed in request callbacks
178
- # note that response body is empty when the file is written in chunks in request on_body callback
179
- return @tempfile if return_type == 'File'
180
-
181
- return nil if body.nil? || body.empty?
182
-
183
- # return response body directly for String return type
184
- return body if return_type == 'String'
185
-
186
- # ensuring a default content type
187
- content_type = response.headers['Content-Type'] || 'application/json'
188
-
189
- raise "Content-Type is not supported: #{content_type}" unless json_mime?(content_type)
190
-
191
- begin
192
- data = JSON.parse("[#{body}]", :symbolize_names => true)[0]
193
- rescue JSON::ParserError => e
194
- if %w(String Date DateTime).include?(return_type)
195
- data = body
196
- else
197
- raise e
198
- end
199
- end
200
-
201
- convert_to_type data, return_type
202
- end
203
-
204
- # Convert data to the given return type.
205
- # @param [Object] data Data to be converted
206
- # @param [String] return_type Return type
207
- # @return [Mixed] Data in a particular type
208
- def convert_to_type(data, return_type)
209
- return nil if data.nil?
210
- case return_type
211
- when 'String'
212
- data.to_s
213
- when 'Integer'
214
- data.to_i
215
- when 'Float'
216
- data.to_f
217
- when 'BOOLEAN'
218
- data == true
219
- when 'DateTime'
220
- # parse date time (expecting ISO 8601 format)
221
- DateTime.parse data
222
- when 'Date'
223
- # parse date time (expecting ISO 8601 format)
224
- Date.parse data
225
- when 'Object'
226
- # generic object (usually a Hash), return directly
227
- data
228
- when /\AArray<(.+)>\z/
229
- # e.g. Array<Pet>
230
- sub_type = $1
231
- data.map {|item| convert_to_type(item, sub_type) }
232
- when /\AHash\<String, (.+)\>\z/
233
- # e.g. Hash<String, Integer>
234
- sub_type = $1
235
- {}.tap do |hash|
236
- data.each {|k, v| hash[k] = convert_to_type(v, sub_type) }
237
- end
238
- else
239
- # models, e.g. Pet
240
- AsposeCellsCloud.const_get(return_type).new.tap do |model|
241
- model.build_from_hash data
242
- end
243
- end
244
- end
245
-
246
- # Save response body into a file in (the defined) temporary folder, using the filename
247
- # from the "Content-Disposition" header if provided, otherwise a random filename.
248
- # The response body is written to the file in chunks in order to handle files which
249
- # size is larger than maximum Ruby String or even larger than the maximum memory a Ruby
250
- # process can use.
251
- #
252
- # @see Configuration#temp_folder_path
253
- def download_file(response)
254
- tempfile = nil
255
- encoding = nil
256
-
257
- content_disposition = response.headers['Content-Disposition']
258
- if content_disposition and content_disposition =~ /filename=/i
259
- filename = content_disposition[/filename=['"]?([^'"\s]+)['"]?/, 1]
260
- prefix = sanitize_filename(filename)
261
- else
262
- prefix = 'download-'
263
- end
264
- prefix = prefix + '-' unless prefix.end_with?('-')
265
- encoding = response.body.encoding
266
- tempfile = Tempfile.open(prefix, @config.temp_folder_path, encoding: encoding)
267
- @tempfile = tempfile
268
-
269
- tempfile.write(response.body)
270
-
271
- response.on_complete do |resp|
272
- tempfile.close
273
- @config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder "\
274
- "with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file "\
275
- "will be deleted automatically with GC. It's also recommended to delete the temp file "\
276
- "explicitly with `tempfile.delete`"
277
- end
278
- end
279
-
280
- # Sanitize filename by removing path.
281
- # e.g. ../../sun.gif becomes sun.gif
282
- #
283
- # @param [String] filename the filename to be sanitized
284
- # @return [String] the sanitized filename
285
- def sanitize_filename(filename)
286
- filename.gsub(/.*[\/\\]/, '')
287
- end
288
-
289
- def build_request_url(path)
290
- # Add leading and trailing slashes to path
291
- path = "/#{path}".gsub(/\/+/, '/')
292
- URI.encode(@config.base_url + path)
293
- end
294
-
295
- # Builds the HTTP request body
296
- #
297
- # @param [Hash] header_params Header parameters
298
- # @param [Hash] form_params Query parameters
299
- # @param [Object] body HTTP body (JSON/XML)
300
- # @return [String] HTTP body data in the form of string
301
- def build_request_body(header_params, form_params, body)
302
- # http form
303
- if header_params['Content-Type'] == 'application/x-www-form-urlencoded' ||
304
- header_params['Content-Type'] == 'multipart/form-data'
305
- data = {}
306
- form_params.each do |key, value|
307
- case value
308
- when ::File
309
- data[key] = Faraday::UploadIO.new(value.path, MimeMagic.by_magic(value).to_s, key)
310
- when ::Array, nil
311
- # let typhoeus handle File, Array and nil parameters
312
- data[key] = value
313
- else
314
- data[key] = value.to_s
315
- end
316
- end
317
- elsif body
318
- data = body.is_a?(String) ? body : body.to_json
319
- else
320
- data = nil
321
- end
322
- data
323
- end
324
-
325
- # Update hearder and query params based on authentication settings.
326
- #
327
- # @param [Hash] header_params Header parameters
328
- # @param [Hash] query_params Query parameters
329
- # @param [String] auth_names Authentication scheme name
330
- def update_params_for_auth!(header_params, query_params, auth_names)
331
- Array(auth_names).each do |auth_name|
332
- auth_setting = @config.auth_settings[auth_name]
333
- next unless auth_setting
334
- case auth_setting[:in]
335
- when 'header' then header_params[auth_setting[:key]] = auth_setting[:value]
336
- when 'query' then query_params[auth_setting[:key]] = auth_setting[:value]
337
- else raise ArgumentError, 'Authentication token must be in `query` of `header`'
338
- end
339
- end
340
- end
341
-
342
- # Sets user agent in HTTP header
343
- #
344
- # @param [String] user_agent User agent (e.g. swagger-codegen/ruby/1.0.0)
345
- def user_agent=(user_agent)
346
- @user_agent = user_agent
347
- @default_headers['User-Agent'] = @user_agent
348
- end
349
-
350
- # Return Accept header based on an array of accepts provided.
351
- # @param [Array] accepts array for Accept
352
- # @return [String] the Accept header (e.g. application/json)
353
- def select_header_accept(accepts)
354
- return nil if accepts.nil? || accepts.empty?
355
- # use JSON when present, otherwise use all of the provided
356
- json_accept = accepts.find { |s| json_mime?(s) }
357
- return json_accept || accepts.join(',')
358
- end
359
-
360
- # Return Content-Type header based on an array of content types provided.
361
- # @param [Array] content_types array for Content-Type
362
- # @return [String] the Content-Type header (e.g. application/json)
363
- def select_header_content_type(content_types)
364
- # use application/json by default
365
- return 'application/json' if content_types.nil? || content_types.empty?
366
- # use JSON when present, otherwise use the first one
367
- json_content_type = content_types.find { |s| json_mime?(s) }
368
- return json_content_type || content_types.first
369
- end
370
-
371
- # Convert object (array, hash, object, etc) to JSON string.
372
- # @param [Object] model object to be converted into JSON string
373
- # @return [String] JSON string representation of the object
374
- def object_to_http_body(model)
375
- return '"' + model + '"' if model.is_a?(String)
376
- return model if model.nil?
377
- local_body = nil
378
- if model.is_a?(Array)
379
- local_body = model.map{|m| object_to_hash(m) }
380
- else
381
- local_body = object_to_hash(model)
382
- end
383
- local_body.to_json
384
- end
385
-
386
- # Convert object(non-array) to hash.
387
- # @param [Object] obj object to be converted into JSON string
388
- # @return [String] JSON string representation of the object
389
- def object_to_hash(obj)
390
- if obj.respond_to?(:to_hash)
391
- obj.to_hash
392
- else
393
- obj
394
- end
395
- end
396
-
397
- # Build parameter value according to the given collection format.
398
- # @param [String] collection_format one of :csv, :ssv, :tsv, :pipes and :multi
399
- def build_collection_param(param, collection_format)
400
- case collection_format
401
- when :csv
402
- param.join(',')
403
- when :ssv
404
- param.join(' ')
405
- when :tsv
406
- param.join("\t")
407
- when :pipes
408
- param.join('|')
409
- when :multi
410
- # return the array directly as faraday will handle it as expected
411
- param
412
- else
413
- fail "unknown collection format: #{collection_format.inspect}"
414
- end
415
- end
416
-
417
- # Request access and refresh tokens if needed
418
- def request_token_if_needed
419
- # check token exists
420
- if @config.access_token
421
- now = Time.now
422
- time_difference = now - $get_access_token_time
423
- if time_difference < 86300
424
- return
425
- end
426
- end
427
-
428
- # resource path
429
- local_var_path = "/connect/token"
430
- if @config.api_version === "v1.1"
431
- local_var_path ="/oauth2/token"
432
- end
433
- url = build_request_url(local_var_path).gsub('/'+config.api_version, '')
434
- #url = build_request_url(local_var_path).gsub('/v3.0', '')
435
-
436
- # header parameters
437
- header_params = {}
438
- # HTTP header 'Content-Type'
439
- header_params['Content-Type'] = select_header_content_type(['application/x-www-form-urlencoded'])
440
-
441
- query_params = {}
442
- # form parameters
443
- form_params = {}
444
- form_params["grant_type"] = 'client_credentials'
445
- form_params["client_id"] = @config.app_sid
446
- form_params["client_secret"] = @config.app_key
447
-
448
- body = {}
449
-
450
-
451
- req_opts = {
452
- :headers => header_params,
453
- :params => query_params,
454
- :body => body
455
- }
456
-
457
-
458
- req_body = build_request_body(header_params, form_params, body)
459
- req_opts.update :body => req_body
460
-
461
- req_opts[:params] = query_params
462
-
463
-
464
- conn = Faraday.new url, {:params => query_params, :headers => header_params} do |f|
465
- f.request :multipart
466
- f.request :url_encoded
467
- f.adapter Faraday.default_adapter
468
- end
469
-
470
- if req_opts[:body] == {}
471
- req_opts[:body] = nil
472
- end
473
-
474
-
475
- response = conn.post url, form_params, req_opts[:body]
476
- data = JSON.parse("[#{response.body}]", :symbolize_names => true)[0]
477
-
478
- @config.access_token = data[:access_token]
479
-
480
- $get_access_token_time = Time.now
481
- end
482
-
483
- # Adds OAuth2.0 token
484
- def add_o_auth_token(req_opts)
485
- req_opts[:headers][:Authorization] = "Bearer " + @config.access_token
486
- end
487
-
488
- end
489
- end
1
+ =begin
2
+ --------------------------------------------------------------------------------------------------------------------
3
+ Copyright (c) 2021 Aspose.Cells Cloud
4
+ Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ of this software and associated documentation files (the "Software"), to deal
6
+ in the Software without restriction, including without limitation the rights
7
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the Software is
9
+ furnished to do so, subject to the following conditions:
10
+ The above copyright notice and this permission notice shall be included in all
11
+ copies or substantial portions of the Software.
12
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
14
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
15
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
16
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
17
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
18
+ SOFTWARE.
19
+ --------------------------------------------------------------------------------------------------------------------
20
+
21
+ =end
22
+
23
+ require 'date'
24
+ require 'json'
25
+ require 'logger'
26
+ require 'tempfile'
27
+ require 'uri'
28
+ require 'faraday'
29
+ require_relative 'version'
30
+ require_relative 'api_error'
31
+
32
+ module AsposeCellsCloud
33
+ class ApiClient
34
+ # The Configuration object holding settings to be used in the API client.
35
+ attr_accessor :config
36
+
37
+ # Defines the headers to be used in HTTP requests of all API calls by default.
38
+ #
39
+ # @return [Hash]
40
+ attr_accessor :default_headers
41
+
42
+ attr_accessor :get_access_token_time
43
+ # Initializes the ApiClient
44
+ # @option config [Configuration] Configuration for initializing the object, default to Configuration.default
45
+ def initialize(config = Configuration.default)
46
+ @config = config
47
+
48
+ @default_headers = {
49
+ 'Content-Type' => "application/json",
50
+ 'x-aspose-client' => "ruby sdk",
51
+ 'x-aspose-version' => "#{ AsposeCellsCloud::VERSION }"
52
+ }
53
+ end
54
+
55
+ def self.default
56
+ @@default ||= ApiClient.new
57
+ end
58
+
59
+ # Call an API with given options.
60
+ #
61
+ # @return [Array<(Object, Fixnum, Hash)>] an array of 3 elements:
62
+ # the data deserialized from response body (could be nil), response status code and response headers.
63
+ def call_api(http_method, path, opts = {})
64
+ response = build_request(http_method, path, opts)
65
+ download_file response if opts[:return_type] == 'File'
66
+
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
+
73
+ if response.status == 0
74
+ # Errors from libcurl will be made visible here
75
+ fail ApiError.new(:code => 0,
76
+ :message => response.reason_phrase)
77
+ else
78
+ fail ApiError.new(:code => response.status,
79
+ :response_headers => response.headers,
80
+ :response_body => response.body),
81
+ response.reason_phrase
82
+ end
83
+ end
84
+
85
+ if opts[:return_type]
86
+ data = deserialize(response, opts[:return_type])
87
+ else
88
+ data = nil
89
+ end
90
+ [data, response.status, response.headers]
91
+ end
92
+
93
+ # Builds the HTTP request
94
+ #
95
+ # @param [String] http_method HTTP method/verb (e.g. POST)
96
+ # @param [String] path URL path (e.g. /account/new)
97
+ # @option opts [Hash] :header_params Header parameters
98
+ # @option opts [Hash] :query_params Query parameters
99
+ # @option opts [Hash] :form_params Query parameters
100
+ # @option opts [Object] :body HTTP body (JSON/XML)
101
+ # @return [Faraday::Response] A Faraday Response
102
+ def build_request(http_method, path, opts = {})
103
+ url = build_request_url(path)
104
+ http_method = http_method.to_sym.downcase
105
+
106
+ header_params = @default_headers.merge(opts[:header_params] || {})
107
+ query_params = opts[:query_params] || {}
108
+ form_params = opts[:form_params] || {}
109
+ body = opts[:body] || {}
110
+
111
+ update_params_for_auth! header_params, query_params, opts[:auth_names]
112
+
113
+ req_opts = {
114
+ :method => http_method,
115
+ :headers => header_params,
116
+ :params => query_params,
117
+ :body => body
118
+ }
119
+
120
+ if [:post, :patch, :put, :delete].include?(http_method)
121
+ req_body = build_request_body(header_params, form_params, opts[:body])
122
+ req_opts.update :body => req_body
123
+ if @config.debugging
124
+ @config.logger.debug "HTTP request body param ~BEGIN~\n#{req_body}\n~END~\n"
125
+ end
126
+ end
127
+
128
+ # OAuth 2.0
129
+ req_opts[:params] = opts[:query_params]
130
+
131
+ if @config.access_token
132
+ add_o_auth_token(req_opts)
133
+ end
134
+
135
+ conn = Faraday.new url, {:params => query_params, :headers => header_params} do |f|
136
+ f.request :multipart
137
+ f.request :url_encoded
138
+ f.adapter Faraday.default_adapter
139
+ end
140
+
141
+ if req_opts[:body] == {}
142
+ req_opts[:body] = nil
143
+ end
144
+
145
+ case http_method
146
+ when :post
147
+ return conn.post url, req_opts[:body]
148
+ when :put
149
+ return conn.put url, req_opts[:body]
150
+ when :get
151
+ return conn.get url, req_opts[:body]
152
+ else
153
+ return conn.delete url do |c|
154
+ c.body = req_opts[:body]
155
+ end
156
+ end
157
+ end
158
+
159
+ # Check if the given MIME is a JSON MIME.
160
+ # JSON MIME examples:
161
+ # application/json
162
+ # application/json; charset=UTF8
163
+ # APPLICATION/JSON
164
+ # */*
165
+ # @param [String] mime MIME
166
+ # @return [Boolean] True if the MIME is application/json
167
+ def json_mime?(mime)
168
+ (mime == "*/*") || !(mime =~ /Application\/.*json(?!p)(;.*)?/i).nil?
169
+ end
170
+
171
+ # Deserialize the response to the given return type.
172
+ #
173
+ # @param [Response] response HTTP response
174
+ # @param [String] return_type some examples: "User", "Array[User]", "Hash[String,Integer]"
175
+ def deserialize(response, return_type)
176
+ body = response.body
177
+
178
+ # handle file downloading - return the File instance processed in request callbacks
179
+ # note that response body is empty when the file is written in chunks in request on_body callback
180
+ return @tempfile if return_type == 'File'
181
+
182
+ return nil if body.nil? || body.empty?
183
+
184
+ # return response body directly for String return type
185
+ return body if return_type == 'String'
186
+
187
+ # ensuring a default content type
188
+ content_type = response.headers['Content-Type'] || 'application/json'
189
+
190
+ raise "Content-Type is not supported: #{content_type}" unless json_mime?(content_type)
191
+
192
+ begin
193
+ data = JSON.parse("[#{body}]", :symbolize_names => true)[0]
194
+ rescue JSON::ParserError => e
195
+ if %w(String Date DateTime).include?(return_type)
196
+ data = body
197
+ else
198
+ raise e
199
+ end
200
+ end
201
+
202
+ convert_to_type data, return_type
203
+ end
204
+
205
+ # Convert data to the given return type.
206
+ # @param [Object] data Data to be converted
207
+ # @param [String] return_type Return type
208
+ # @return [Mixed] Data in a particular type
209
+ def convert_to_type(data, return_type)
210
+ return nil if data.nil?
211
+ case return_type
212
+ when 'String'
213
+ data.to_s
214
+ when 'Integer'
215
+ data.to_i
216
+ when 'Float'
217
+ data.to_f
218
+ when 'BOOLEAN'
219
+ data == true
220
+ when 'DateTime'
221
+ # parse date time (expecting ISO 8601 format)
222
+ DateTime.parse data
223
+ when 'Date'
224
+ # parse date time (expecting ISO 8601 format)
225
+ Date.parse data
226
+ when 'Object'
227
+ # generic object (usually a Hash), return directly
228
+ data
229
+ when /\AArray<(.+)>\z/
230
+ # e.g. Array<Pet>
231
+ sub_type = $1
232
+ data.map {|item| convert_to_type(item, sub_type) }
233
+ when /\AHash\<String, (.+)\>\z/
234
+ # e.g. Hash<String, Integer>
235
+ sub_type = $1
236
+ {}.tap do |hash|
237
+ data.each {|k, v| hash[k] = convert_to_type(v, sub_type) }
238
+ end
239
+ else
240
+ # models, e.g. Pet
241
+ AsposeCellsCloud.const_get(return_type).new.tap do |model|
242
+ model.build_from_hash data
243
+ end
244
+ end
245
+ end
246
+
247
+ # Save response body into a file in (the defined) temporary folder, using the filename
248
+ # from the "Content-Disposition" header if provided, otherwise a random filename.
249
+ # The response body is written to the file in chunks in order to handle files which
250
+ # size is larger than maximum Ruby String or even larger than the maximum memory a Ruby
251
+ # process can use.
252
+ #
253
+ # @see Configuration#temp_folder_path
254
+ def download_file(response)
255
+ tempfile = nil
256
+ encoding = nil
257
+
258
+ content_disposition = response.headers['Content-Disposition']
259
+ if content_disposition and content_disposition =~ /filename=/i
260
+ filename = content_disposition[/filename=['"]?([^'"\s]+)['"]?/, 1]
261
+ prefix = sanitize_filename(filename)
262
+ else
263
+ prefix = 'download-'
264
+ end
265
+ prefix = prefix + '-' unless prefix.end_with?('-')
266
+ encoding = response.body.encoding
267
+ tempfile = Tempfile.open(prefix, @config.temp_folder_path, encoding: encoding)
268
+ @tempfile = tempfile
269
+
270
+ tempfile.write(response.body)
271
+
272
+ response.on_complete do |resp|
273
+ tempfile.close
274
+ @config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder "\
275
+ "with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file "\
276
+ "will be deleted automatically with GC. It's also recommended to delete the temp file "\
277
+ "explicitly with `tempfile.delete`"
278
+ end
279
+ end
280
+
281
+ # Sanitize filename by removing path.
282
+ # e.g. ../../sun.gif becomes sun.gif
283
+ #
284
+ # @param [String] filename the filename to be sanitized
285
+ # @return [String] the sanitized filename
286
+ def sanitize_filename(filename)
287
+ filename.gsub(/.*[\/\\]/, '')
288
+ end
289
+
290
+ def build_request_url(path)
291
+ # Add leading and trailing slashes to path
292
+ path = "/#{path}".gsub(/\/+/, '/')
293
+ URI.encode(@config.base_url + path)
294
+ end
295
+
296
+ # Builds the HTTP request body
297
+ #
298
+ # @param [Hash] header_params Header parameters
299
+ # @param [Hash] form_params Query parameters
300
+ # @param [Object] body HTTP body (JSON/XML)
301
+ # @return [String] HTTP body data in the form of string
302
+ def build_request_body(header_params, form_params, body)
303
+ # http form
304
+ if header_params['Content-Type'] == 'application/x-www-form-urlencoded' ||
305
+ header_params['Content-Type'] == 'multipart/form-data'
306
+ data = {}
307
+ form_params.each do |key, value|
308
+ case value
309
+ when ::File
310
+ data[key] = Faraday::UploadIO.new(value.path, MimeMagic.by_magic(value).to_s, key)
311
+ when ::Array, nil
312
+ # let typhoeus handle File, Array and nil parameters
313
+ data[key] = value
314
+ else
315
+ data[key] = value.to_s
316
+ end
317
+ end
318
+ elsif body
319
+ data = body.is_a?(String) ? body : body.to_json
320
+ else
321
+ data = nil
322
+ end
323
+ data
324
+ end
325
+
326
+ # Update hearder and query params based on authentication settings.
327
+ #
328
+ # @param [Hash] header_params Header parameters
329
+ # @param [Hash] query_params Query parameters
330
+ # @param [String] auth_names Authentication scheme name
331
+ def update_params_for_auth!(header_params, query_params, auth_names)
332
+ Array(auth_names).each do |auth_name|
333
+ auth_setting = @config.auth_settings[auth_name]
334
+ next unless auth_setting
335
+ case auth_setting[:in]
336
+ when 'header' then header_params[auth_setting[:key]] = auth_setting[:value]
337
+ when 'query' then query_params[auth_setting[:key]] = auth_setting[:value]
338
+ else raise ArgumentError, 'Authentication token must be in `query` of `header`'
339
+ end
340
+ end
341
+ end
342
+
343
+ # Sets user agent in HTTP header
344
+ #
345
+ # @param [String] user_agent User agent (e.g. swagger-codegen/ruby/1.0.0)
346
+ def user_agent=(user_agent)
347
+ @user_agent = user_agent
348
+ @default_headers['User-Agent'] = @user_agent
349
+ end
350
+
351
+ # Return Accept header based on an array of accepts provided.
352
+ # @param [Array] accepts array for Accept
353
+ # @return [String] the Accept header (e.g. application/json)
354
+ def select_header_accept(accepts)
355
+ return nil if accepts.nil? || accepts.empty?
356
+ # use JSON when present, otherwise use all of the provided
357
+ json_accept = accepts.find { |s| json_mime?(s) }
358
+ return json_accept || accepts.join(',')
359
+ end
360
+
361
+ # Return Content-Type header based on an array of content types provided.
362
+ # @param [Array] content_types array for Content-Type
363
+ # @return [String] the Content-Type header (e.g. application/json)
364
+ def select_header_content_type(content_types)
365
+ # use application/json by default
366
+ return 'application/json' if content_types.nil? || content_types.empty?
367
+ # use JSON when present, otherwise use the first one
368
+ json_content_type = content_types.find { |s| json_mime?(s) }
369
+ return json_content_type || content_types.first
370
+ end
371
+
372
+ # Convert object (array, hash, object, etc) to JSON string.
373
+ # @param [Object] model object to be converted into JSON string
374
+ # @return [String] JSON string representation of the object
375
+ def object_to_http_body(model)
376
+ return '"' + model + '"' if model.is_a?(String)
377
+ return model if model.nil?
378
+ local_body = nil
379
+ if model.is_a?(Array)
380
+ local_body = model.map{|m| object_to_hash(m) }
381
+ else
382
+ local_body = object_to_hash(model)
383
+ end
384
+ local_body.to_json
385
+ end
386
+
387
+ # Convert object(non-array) to hash.
388
+ # @param [Object] obj object to be converted into JSON string
389
+ # @return [String] JSON string representation of the object
390
+ def object_to_hash(obj)
391
+ if obj.respond_to?(:to_hash)
392
+ obj.to_hash
393
+ else
394
+ obj
395
+ end
396
+ end
397
+
398
+ # Build parameter value according to the given collection format.
399
+ # @param [String] collection_format one of :csv, :ssv, :tsv, :pipes and :multi
400
+ def build_collection_param(param, collection_format)
401
+ case collection_format
402
+ when :csv
403
+ param.join(',')
404
+ when :ssv
405
+ param.join(' ')
406
+ when :tsv
407
+ param.join("\t")
408
+ when :pipes
409
+ param.join('|')
410
+ when :multi
411
+ # return the array directly as faraday will handle it as expected
412
+ param
413
+ else
414
+ fail "unknown collection format: #{collection_format.inspect}"
415
+ end
416
+ end
417
+
418
+ # Request access and refresh tokens if needed
419
+ def request_token_if_needed
420
+ # check token exists
421
+ if @config.client_id.nil? && @config.client_secret.nil?
422
+ return
423
+ end
424
+ if @config.access_token
425
+ now = Time.now
426
+ time_difference = now - $get_access_token_time
427
+ if time_difference < 86300
428
+ return
429
+ end
430
+ end
431
+
432
+ # resource path
433
+ local_var_path = "/connect/token"
434
+ if @config.api_version === "v1.1"
435
+ local_var_path ="/oauth2/token"
436
+ end
437
+ url = build_request_url(local_var_path).gsub('/'+config.api_version, '')
438
+ #url = build_request_url(local_var_path).gsub('/v3.0', '')
439
+
440
+ # header parameters
441
+ header_params = {}
442
+ # HTTP header 'Content-Type'
443
+ header_params['Content-Type'] = select_header_content_type(['application/x-www-form-urlencoded'])
444
+
445
+ query_params = {}
446
+ # form parameters
447
+ form_params = {}
448
+ form_params["grant_type"] = 'client_credentials'
449
+ form_params["client_id"] = @config.client_id
450
+ form_params["client_secret"] = @config.client_secret
451
+
452
+ body = {}
453
+
454
+
455
+ req_opts = {
456
+ :headers => header_params,
457
+ :params => query_params,
458
+ :body => body
459
+ }
460
+
461
+
462
+ req_body = build_request_body(header_params, form_params, body)
463
+ req_opts.update :body => req_body
464
+
465
+ req_opts[:params] = query_params
466
+
467
+
468
+ conn = Faraday.new url, {:params => query_params, :headers => header_params} do |f|
469
+ f.request :multipart
470
+ f.request :url_encoded
471
+ f.adapter Faraday.default_adapter
472
+ end
473
+
474
+ if req_opts[:body] == {}
475
+ req_opts[:body] = nil
476
+ end
477
+
478
+
479
+ response = conn.post url, form_params, req_opts[:body]
480
+ data = JSON.parse("[#{response.body}]", :symbolize_names => true)[0]
481
+
482
+ @config.access_token = data[:access_token]
483
+
484
+ $get_access_token_time = Time.now
485
+ end
486
+
487
+ # Adds OAuth2.0 token
488
+ def add_o_auth_token(req_opts)
489
+ req_opts[:headers][:Authorization] = "Bearer " + @config.access_token
490
+ end
491
+
492
+ end
493
+ end