aspose_email_cloud 20.1.0 → 20.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (355) hide show
  1. checksums.yaml +4 -4
  2. data/lib/aspose-email-cloud.rb +215 -174
  3. data/lib/aspose-email-cloud/api/ai_bcr_api.rb +84 -0
  4. data/lib/aspose-email-cloud/api/ai_group.rb +49 -0
  5. data/lib/aspose-email-cloud/api/ai_name_api.rb +213 -0
  6. data/lib/aspose-email-cloud/api/calendar_api.rb +206 -0
  7. data/lib/aspose-email-cloud/api/client_account_api.rb +121 -0
  8. data/lib/aspose-email-cloud/api/client_folder_api.rb +113 -0
  9. data/lib/aspose-email-cloud/api/client_group.rb +59 -0
  10. data/lib/aspose-email-cloud/api/client_message_api.rb +230 -0
  11. data/lib/aspose-email-cloud/api/client_thread_api.rb +149 -0
  12. data/lib/aspose-email-cloud/api/cloud_storage_group.rb +54 -0
  13. data/lib/aspose-email-cloud/api/contact_api.rb +171 -0
  14. data/lib/aspose-email-cloud/api/disposable_email_api.rb +57 -0
  15. data/lib/aspose-email-cloud/api/email_api.rb +171 -855
  16. data/lib/aspose-email-cloud/api/email_cloud.rb +96 -0
  17. data/lib/aspose-email-cloud/api/email_config_api.rb +111 -0
  18. data/lib/aspose-email-cloud/api/file_api.rb +92 -0
  19. data/lib/aspose-email-cloud/api/folder_api.rb +93 -0
  20. data/lib/aspose-email-cloud/api/mapi_calendar_api.rb +147 -0
  21. data/lib/aspose-email-cloud/api/mapi_contact_api.rb +147 -0
  22. data/lib/aspose-email-cloud/api/mapi_group.rb +54 -0
  23. data/lib/aspose-email-cloud/api/mapi_message_api.rb +147 -0
  24. data/lib/aspose-email-cloud/api/storage_api.rb +81 -0
  25. data/lib/aspose-email-cloud/api_client.rb +387 -382
  26. data/lib/aspose-email-cloud/api_error.rb +41 -41
  27. data/lib/aspose-email-cloud/api_invoker.rb +92 -0
  28. data/lib/aspose-email-cloud/configuration.rb +240 -240
  29. data/lib/aspose-email-cloud/models/ai_bcr_image.rb +204 -215
  30. data/lib/aspose-email-cloud/models/ai_bcr_image_storage_file.rb +218 -228
  31. data/lib/aspose-email-cloud/models/ai_bcr_options.rb +208 -223
  32. data/lib/aspose-email-cloud/models/ai_bcr_parse_request.rb +93 -0
  33. data/lib/aspose-email-cloud/models/{ai_bcr_parse_storage_rq.rb → ai_bcr_parse_storage_request.rb} +227 -248
  34. data/lib/aspose-email-cloud/models/{requests/ai_name_complete_request_data.rb → ai_name_complete_request.rb} +104 -91
  35. data/lib/aspose-email-cloud/models/ai_name_component.rb +241 -264
  36. data/lib/aspose-email-cloud/models/ai_name_component_list.rb +199 -0
  37. data/lib/aspose-email-cloud/models/ai_name_cultural_context.rb +240 -267
  38. data/lib/aspose-email-cloud/models/{requests/ai_name_expand_request_data.rb → ai_name_expand_request.rb} +104 -91
  39. data/lib/aspose-email-cloud/models/ai_name_extracted.rb +213 -230
  40. data/lib/aspose-email-cloud/models/ai_name_extracted_component.rb +213 -228
  41. data/lib/aspose-email-cloud/models/ai_name_extracted_list.rb +199 -0
  42. data/lib/aspose-email-cloud/models/ai_name_format_request.rb +110 -0
  43. data/lib/aspose-email-cloud/models/ai_name_formatted.rb +208 -223
  44. data/lib/aspose-email-cloud/models/ai_name_gender_hypothesis.rb +218 -233
  45. data/lib/aspose-email-cloud/models/{list_response_of_ai_bcr_ocr_data.rb → ai_name_gender_hypothesis_list.rb} +199 -211
  46. data/lib/aspose-email-cloud/models/ai_name_genderize_request.rb +104 -0
  47. data/lib/aspose-email-cloud/models/{ai_name_parsed_match_rq.rb → ai_name_match_parsed_request.rb} +236 -263
  48. data/lib/aspose-email-cloud/models/ai_name_match_request.rb +114 -0
  49. data/lib/aspose-email-cloud/models/ai_name_match_result.rb +213 -230
  50. data/lib/aspose-email-cloud/models/ai_name_mismatch.rb +227 -246
  51. data/lib/aspose-email-cloud/models/ai_name_parse_email_address_request.rb +105 -0
  52. data/lib/aspose-email-cloud/models/ai_name_parse_request.rb +104 -0
  53. data/lib/aspose-email-cloud/models/{ai_name_parsed_rq.rb → ai_name_parsed_request.rb} +222 -243
  54. data/lib/aspose-email-cloud/models/ai_name_weighted.rb +213 -228
  55. data/lib/aspose-email-cloud/models/ai_name_weighted_variants.rb +208 -225
  56. data/lib/aspose-email-cloud/models/alternate_view.rb +244 -279
  57. data/lib/aspose-email-cloud/models/associated_person.rb +222 -241
  58. data/lib/aspose-email-cloud/models/attachment.rb +276 -321
  59. data/lib/aspose-email-cloud/models/attachment_base.rb +226 -251
  60. data/lib/aspose-email-cloud/models/{calendar_dto_alternate_rq.rb → calendar_as_alternate_request.rb} +246 -265
  61. data/lib/aspose-email-cloud/models/calendar_as_file_request.rb +218 -0
  62. data/lib/aspose-email-cloud/models/{requests/save_email_model_request_data.rb → calendar_convert_request.rb} +84 -89
  63. data/lib/aspose-email-cloud/models/calendar_dto.rb +462 -554
  64. data/lib/aspose-email-cloud/models/{requests/ai_bcr_ocr_storage_request_data.rb → calendar_from_file_request.rb} +74 -75
  65. data/lib/aspose-email-cloud/models/calendar_get_as_alternate_request.rb +102 -0
  66. data/lib/aspose-email-cloud/models/calendar_get_as_file_request.rb +96 -0
  67. data/lib/aspose-email-cloud/models/{requests/get_email_model_list_request_data.rb → calendar_get_list_request.rb} +93 -87
  68. data/lib/aspose-email-cloud/models/{requests/get_email_request_data.rb → calendar_get_request.rb} +86 -81
  69. data/lib/aspose-email-cloud/models/calendar_reminder.rb +272 -315
  70. data/lib/aspose-email-cloud/models/{storage_model_rq_of_calendar_dto.rb → calendar_save_request.rb} +232 -222
  71. data/lib/aspose-email-cloud/models/{calendar_dto_list.rb → calendar_storage_list.rb} +199 -212
  72. data/lib/aspose-email-cloud/models/client_account_base_request.rb +204 -0
  73. data/lib/aspose-email-cloud/models/{requests/get_email_attachment_request_data.rb → client_account_get_multi_request.rb} +87 -88
  74. data/lib/aspose-email-cloud/models/{requests/create_email_request_data.rb → client_account_get_request.rb} +86 -82
  75. data/lib/aspose-email-cloud/models/client_account_save_multi_request.rb +218 -0
  76. data/lib/aspose-email-cloud/models/client_account_save_request.rb +218 -0
  77. data/lib/aspose-email-cloud/models/{email_property.rb → client_folder_create_request.rb} +246 -265
  78. data/lib/aspose-email-cloud/models/{ai_bcr_base64_image.rb → client_folder_delete_request.rb} +237 -228
  79. data/lib/aspose-email-cloud/models/client_folder_get_list_request.rb +93 -0
  80. data/lib/aspose-email-cloud/models/client_message_append_file_request.rb +114 -0
  81. data/lib/aspose-email-cloud/models/client_message_append_request.rb +241 -0
  82. data/lib/aspose-email-cloud/models/client_message_base_request.rb +237 -0
  83. data/lib/aspose-email-cloud/models/{ai_bcr_ocr_data.rb → client_message_delete_request.rb} +246 -253
  84. data/lib/aspose-email-cloud/models/client_message_fetch_file_request.rb +108 -0
  85. data/lib/aspose-email-cloud/models/client_message_fetch_request.rb +114 -0
  86. data/lib/aspose-email-cloud/models/{requests/list_email_messages_request_data.rb → client_message_list_request.rb} +121 -105
  87. data/lib/aspose-email-cloud/models/{set_message_read_flag_account_base_request.rb → client_message_move_request.rb} +279 -315
  88. data/lib/aspose-email-cloud/models/client_message_send_file_request.rb +103 -0
  89. data/lib/aspose-email-cloud/models/client_message_send_request.rb +218 -0
  90. data/lib/aspose-email-cloud/models/client_message_set_is_read_request.rb +251 -0
  91. data/lib/aspose-email-cloud/models/{hierarchical_object_response.rb → client_thread_base_request.rb} +237 -223
  92. data/lib/aspose-email-cloud/models/{hierarchical_object.rb → client_thread_delete_request.rb} +246 -244
  93. data/lib/aspose-email-cloud/models/client_thread_get_list_request.rb +108 -0
  94. data/lib/aspose-email-cloud/models/client_thread_get_messages_request.rb +103 -0
  95. data/lib/aspose-email-cloud/models/{account_base_request.rb → client_thread_move_request.rb} +270 -260
  96. data/lib/aspose-email-cloud/models/client_thread_set_is_read_request.rb +260 -0
  97. data/lib/aspose-email-cloud/models/contact_as_file_request.rb +218 -0
  98. data/lib/aspose-email-cloud/models/contact_convert_request.rb +94 -0
  99. data/lib/aspose-email-cloud/models/contact_dto.rb +529 -696
  100. data/lib/aspose-email-cloud/models/{requests/convert_email_request_data.rb → contact_from_file_request.rb} +84 -83
  101. data/lib/aspose-email-cloud/models/contact_get_as_file_request.rb +106 -0
  102. data/lib/aspose-email-cloud/models/{requests/get_contact_model_list_request_data.rb → contact_get_list_request.rb} +99 -87
  103. data/lib/aspose-email-cloud/models/{requests/get_contact_model_request_data.rb → contact_get_request.rb} +96 -88
  104. data/lib/aspose-email-cloud/models/contact_list.rb +199 -0
  105. data/lib/aspose-email-cloud/models/contact_photo.rb +252 -228
  106. data/lib/aspose-email-cloud/models/{storage_model_rq_of_contact_dto.rb → contact_save_request.rb} +232 -222
  107. data/lib/aspose-email-cloud/models/{contact_dto_list.rb → contact_storage_list.rb} +199 -212
  108. data/lib/aspose-email-cloud/models/content_type.rb +235 -264
  109. data/lib/aspose-email-cloud/models/content_type_parameter.rb +208 -223
  110. data/lib/aspose-email-cloud/models/{requests/copy_file_request_data.rb → copy_file_request.rb} +101 -92
  111. data/lib/aspose-email-cloud/models/{requests/copy_folder_request_data.rb → copy_folder_request.rb} +95 -89
  112. data/lib/aspose-email-cloud/models/{requests/create_folder_request_data.rb → create_folder_request.rb} +79 -78
  113. data/lib/aspose-email-cloud/models/customer_event.rb +213 -228
  114. data/lib/aspose-email-cloud/models/daily_recurrence_pattern_dto.rb +261 -0
  115. data/lib/aspose-email-cloud/models/{requests/delete_file_request_data.rb → delete_file_request.rb} +85 -81
  116. data/lib/aspose-email-cloud/models/{requests/delete_folder_request_data.rb → delete_folder_request.rb} +85 -81
  117. data/lib/aspose-email-cloud/models/disc_usage.rb +218 -233
  118. data/lib/aspose-email-cloud/models/discover_email_config_request.rb +246 -0
  119. data/lib/aspose-email-cloud/models/{requests/ai_bcr_parse_model_request_data.rb → disposable_email_is_disposable_request.rb} +75 -75
  120. data/lib/aspose-email-cloud/models/{requests/download_file_request_data.rb → download_file_request.rb} +85 -81
  121. data/lib/aspose-email-cloud/models/{link.rb → email_account_config.rb} +277 -249
  122. data/lib/aspose-email-cloud/models/{list_response_of_hierarchical_object.rb → email_account_config_list.rb} +199 -211
  123. data/lib/aspose-email-cloud/models/email_address.rb +273 -267
  124. data/lib/aspose-email-cloud/models/email_as_file_request.rb +218 -0
  125. data/lib/aspose-email-cloud/models/{email_account_request.rb → email_client_account.rb} +316 -394
  126. data/lib/aspose-email-cloud/models/{ai_bcr_parse_ocr_data_rq.rb → email_client_account_credentials.rb} +238 -230
  127. data/lib/aspose-email-cloud/models/{save_o_auth_email_account_request.rb → email_client_account_oauth_credentials.rb} +346 -505
  128. data/lib/aspose-email-cloud/models/{indexed_hierarchical_object.rb → email_client_account_password_credentials.rb} +271 -262
  129. data/lib/aspose-email-cloud/models/email_client_multi_account.rb +213 -0
  130. data/lib/aspose-email-cloud/models/email_config_discover_oauth_request.rb +353 -0
  131. data/lib/aspose-email-cloud/models/email_config_discover_password_request.rb +278 -0
  132. data/lib/aspose-email-cloud/models/email_config_discover_request.rb +81 -0
  133. data/lib/aspose-email-cloud/models/email_convert_request.rb +94 -0
  134. data/lib/aspose-email-cloud/models/email_dto.rb +523 -678
  135. data/lib/aspose-email-cloud/models/email_from_file_request.rb +84 -0
  136. data/lib/aspose-email-cloud/models/{requests/get_email_as_file_request_data.rb → email_get_as_file_request.rb} +96 -88
  137. data/lib/aspose-email-cloud/models/email_get_list_request.rb +99 -0
  138. data/lib/aspose-email-cloud/models/email_get_request.rb +96 -0
  139. data/lib/aspose-email-cloud/models/email_list.rb +199 -0
  140. data/lib/aspose-email-cloud/models/{requests/email_request.rb → email_request.rb} +72 -75
  141. data/lib/aspose-email-cloud/models/{storage_model_rq_of_email_dto.rb → email_save_request.rb} +232 -222
  142. data/lib/aspose-email-cloud/models/{email_dto_list.rb → email_storage_list.rb} +199 -212
  143. data/lib/aspose-email-cloud/models/email_thread.rb +226 -0
  144. data/lib/aspose-email-cloud/models/email_thread_list.rb +199 -0
  145. data/lib/aspose-email-cloud/models/enum_with_custom_of_associated_person_category.rb +231 -227
  146. data/lib/aspose-email-cloud/models/enum_with_custom_of_email_address_category.rb +231 -227
  147. data/lib/aspose-email-cloud/models/enum_with_custom_of_event_category.rb +231 -227
  148. data/lib/aspose-email-cloud/models/enum_with_custom_of_instant_messenger_category.rb +231 -227
  149. data/lib/aspose-email-cloud/models/enum_with_custom_of_phone_number_category.rb +231 -227
  150. data/lib/aspose-email-cloud/models/enum_with_custom_of_postal_address_category.rb +231 -227
  151. data/lib/aspose-email-cloud/models/enum_with_custom_of_url_category.rb +231 -227
  152. data/lib/aspose-email-cloud/models/error.rb +226 -249
  153. data/lib/aspose-email-cloud/models/error_details.rb +213 -228
  154. data/lib/aspose-email-cloud/models/file_version.rb +268 -303
  155. data/lib/aspose-email-cloud/models/file_versions.rb +199 -212
  156. data/lib/aspose-email-cloud/models/files_list.rb +199 -212
  157. data/lib/aspose-email-cloud/models/files_upload_result.rb +208 -227
  158. data/lib/aspose-email-cloud/models/{requests/get_disc_usage_request_data.rb → get_disc_usage_request.rb} +70 -71
  159. data/lib/aspose-email-cloud/models/{requests/get_file_versions_request_data.rb → get_file_versions_request.rb} +79 -78
  160. data/lib/aspose-email-cloud/models/{requests/get_files_list_request_data.rb → get_files_list_request.rb} +79 -78
  161. data/lib/aspose-email-cloud/models/{requests/http_request.rb → http_request.rb} +47 -51
  162. data/lib/aspose-email-cloud/models/instant_messenger_address.rb +222 -241
  163. data/lib/aspose-email-cloud/models/linked_resource.rb +235 -264
  164. data/lib/aspose-email-cloud/models/list_response_of_ai_name_component.rb +198 -211
  165. data/lib/aspose-email-cloud/models/list_response_of_ai_name_extracted.rb +198 -211
  166. data/lib/aspose-email-cloud/models/list_response_of_ai_name_gender_hypothesis.rb +198 -211
  167. data/lib/aspose-email-cloud/models/list_response_of_contact_dto.rb +198 -211
  168. data/lib/aspose-email-cloud/models/list_response_of_email_account_config.rb +198 -0
  169. data/lib/aspose-email-cloud/models/list_response_of_email_dto.rb +198 -211
  170. data/lib/aspose-email-cloud/models/list_response_of_email_thread.rb +198 -0
  171. data/lib/aspose-email-cloud/models/list_response_of_mail_message_base.rb +198 -0
  172. data/lib/aspose-email-cloud/models/list_response_of_mail_server_folder.rb +198 -211
  173. data/lib/aspose-email-cloud/models/list_response_of_storage_file_location.rb +198 -211
  174. data/lib/aspose-email-cloud/models/list_response_of_storage_model_of_calendar_dto.rb +198 -211
  175. data/lib/aspose-email-cloud/models/list_response_of_storage_model_of_contact_dto.rb +198 -211
  176. data/lib/aspose-email-cloud/models/list_response_of_storage_model_of_email_dto.rb +198 -211
  177. data/lib/aspose-email-cloud/models/mail_address.rb +231 -241
  178. data/lib/aspose-email-cloud/models/mail_message_base.rb +205 -0
  179. data/lib/aspose-email-cloud/models/{indexed_primitive_object.rb → mail_message_base64.rb} +252 -260
  180. data/lib/aspose-email-cloud/models/mail_message_base_list.rb +199 -0
  181. data/lib/aspose-email-cloud/models/mail_message_dto.rb +219 -0
  182. data/lib/aspose-email-cloud/models/mail_message_mapi.rb +219 -0
  183. data/lib/aspose-email-cloud/models/mail_server_folder.rb +208 -223
  184. data/lib/aspose-email-cloud/models/mail_server_folder_list.rb +199 -0
  185. data/lib/aspose-email-cloud/models/{mime_response.rb → mapi_attachment_dto.rb} +208 -210
  186. data/lib/aspose-email-cloud/models/{base_object.rb → mapi_binary_property_dto.rb} +223 -229
  187. data/lib/aspose-email-cloud/models/mapi_boolean_property_dto.rb +228 -0
  188. data/lib/aspose-email-cloud/models/mapi_calendar_as_file_request.rb +218 -0
  189. data/lib/aspose-email-cloud/models/{ai_bcr_base64_rq.rb → mapi_calendar_attendees_dto.rb} +236 -225
  190. data/lib/aspose-email-cloud/models/mapi_calendar_daily_recurrence_pattern_dto.rb +381 -0
  191. data/lib/aspose-email-cloud/models/mapi_calendar_dto.rb +561 -0
  192. data/lib/aspose-email-cloud/models/{ai_bcr_ocr_data_part.rb → mapi_calendar_event_recurrence_dto.rb} +259 -297
  193. data/lib/aspose-email-cloud/models/mapi_calendar_exception_info_dto.rb +361 -0
  194. data/lib/aspose-email-cloud/models/{requests/ai_bcr_ocr_request_data.rb → mapi_calendar_from_file_request.rb} +74 -75
  195. data/lib/aspose-email-cloud/models/mapi_calendar_get_request.rb +87 -0
  196. data/lib/aspose-email-cloud/models/mapi_calendar_recurrence_pattern_dto.rb +372 -0
  197. data/lib/aspose-email-cloud/models/mapi_calendar_save_request.rb +232 -0
  198. data/lib/aspose-email-cloud/models/mapi_calendar_time_zone_dto.rb +208 -0
  199. data/lib/aspose-email-cloud/models/{send_email_base_request.rb → mapi_calendar_time_zone_info_dto.rb} +273 -278
  200. data/lib/aspose-email-cloud/models/{delete_folder_base_request.rb → mapi_calendar_time_zone_rule_dto.rb} +344 -315
  201. data/lib/aspose-email-cloud/models/mapi_calendar_weekly_recurrence_pattern_dto.rb +381 -0
  202. data/lib/aspose-email-cloud/models/mapi_calendar_yearly_and_monthly_recurrence_pattern_dto.rb +409 -0
  203. data/lib/aspose-email-cloud/models/mapi_contact_as_file_request.rb +218 -0
  204. data/lib/aspose-email-cloud/models/mapi_contact_dto.rb +440 -0
  205. data/lib/aspose-email-cloud/models/mapi_contact_electronic_address_dto.rb +249 -0
  206. data/lib/aspose-email-cloud/models/mapi_contact_electronic_address_property_set_dto.rb +281 -0
  207. data/lib/aspose-email-cloud/models/mapi_contact_event_property_set_dto.rb +218 -0
  208. data/lib/aspose-email-cloud/models/mapi_contact_from_file_request.rb +84 -0
  209. data/lib/aspose-email-cloud/models/mapi_contact_get_request.rb +97 -0
  210. data/lib/aspose-email-cloud/models/mapi_contact_name_property_set_dto.rb +285 -0
  211. data/lib/aspose-email-cloud/models/mapi_contact_other_property_set_dto.rb +277 -0
  212. data/lib/aspose-email-cloud/models/mapi_contact_personal_info_property_set_dto.rb +366 -0
  213. data/lib/aspose-email-cloud/models/mapi_contact_photo_dto.rb +252 -0
  214. data/lib/aspose-email-cloud/models/mapi_contact_physical_address_dto.rb +276 -0
  215. data/lib/aspose-email-cloud/models/{ai_bcr_storage_image_rq.rb → mapi_contact_physical_address_property_set_dto.rb} +217 -230
  216. data/lib/aspose-email-cloud/models/mapi_contact_professional_property_set_dto.rb +253 -0
  217. data/lib/aspose-email-cloud/models/mapi_contact_save_request.rb +232 -0
  218. data/lib/aspose-email-cloud/models/mapi_contact_telephone_property_set_dto.rb +371 -0
  219. data/lib/aspose-email-cloud/models/mapi_date_time_property_dto.rb +228 -0
  220. data/lib/aspose-email-cloud/models/mapi_electronic_address_dto.rb +235 -0
  221. data/lib/aspose-email-cloud/models/mapi_file_as_property_dto.rb +228 -0
  222. data/lib/aspose-email-cloud/models/mapi_importance_property_dto.rb +228 -0
  223. data/lib/aspose-email-cloud/models/mapi_int_property_dto.rb +228 -0
  224. data/lib/aspose-email-cloud/models/mapi_known_property_descriptor.rb +238 -0
  225. data/lib/aspose-email-cloud/models/mapi_legacy_free_busy_property_dto.rb +228 -0
  226. data/lib/aspose-email-cloud/models/mapi_message_as_file_request.rb +218 -0
  227. data/lib/aspose-email-cloud/models/mapi_message_dto.rb +604 -0
  228. data/lib/aspose-email-cloud/models/{requests/get_email_model_request_data.rb → mapi_message_from_file_request.rb} +84 -88
  229. data/lib/aspose-email-cloud/models/mapi_message_get_request.rb +97 -0
  230. data/lib/aspose-email-cloud/models/mapi_message_item_base_dto.rb +359 -0
  231. data/lib/aspose-email-cloud/models/mapi_message_save_request.rb +232 -0
  232. data/lib/aspose-email-cloud/models/mapi_multi_int_property_dto.rb +223 -0
  233. data/lib/aspose-email-cloud/models/mapi_multi_string_property_dto.rb +223 -0
  234. data/lib/aspose-email-cloud/models/mapi_physical_address_index_property_dto.rb +228 -0
  235. data/lib/aspose-email-cloud/models/mapi_pid_lid_property_descriptor.rb +279 -0
  236. data/lib/aspose-email-cloud/models/mapi_pid_name_property_descriptor.rb +265 -0
  237. data/lib/aspose-email-cloud/models/mapi_pid_property_descriptor.rb +251 -0
  238. data/lib/aspose-email-cloud/models/mapi_pid_tag_property_descriptor.rb +279 -0
  239. data/lib/aspose-email-cloud/models/mapi_property_descriptor.rb +205 -0
  240. data/lib/aspose-email-cloud/models/mapi_property_dto.rb +214 -0
  241. data/lib/aspose-email-cloud/models/mapi_recipient_dto.rb +231 -0
  242. data/lib/aspose-email-cloud/models/{primitive_object.rb → mapi_response_type_property_dto.rb} +228 -242
  243. data/lib/aspose-email-cloud/models/mapi_string_property_dto.rb +223 -0
  244. data/lib/aspose-email-cloud/models/{create_folder_base_request.rb → monthly_recurrence_pattern_dto.rb} +303 -310
  245. data/lib/aspose-email-cloud/models/{requests/move_file_request_data.rb → move_file_request.rb} +101 -92
  246. data/lib/aspose-email-cloud/models/{requests/move_folder_request_data.rb → move_folder_request.rb} +96 -89
  247. data/lib/aspose-email-cloud/models/{value_response.rb → name_value_pair.rb} +208 -210
  248. data/lib/aspose-email-cloud/models/object_exist.rb +218 -233
  249. data/lib/aspose-email-cloud/models/{requests/object_exists_request_data.rb → object_exists_request.rb} +85 -81
  250. data/lib/aspose-email-cloud/models/phone_number.rb +222 -241
  251. data/lib/aspose-email-cloud/models/postal_address.rb +299 -350
  252. data/lib/aspose-email-cloud/models/recurrence_pattern_dto.rb +261 -0
  253. data/lib/aspose-email-cloud/models/reminder_attendee.rb +223 -210
  254. data/lib/aspose-email-cloud/models/reminder_trigger.rb +227 -246
  255. data/lib/aspose-email-cloud/models/storage_exist.rb +204 -215
  256. data/lib/aspose-email-cloud/models/{requests/storage_exists_request_data.rb → storage_exists_request.rb} +74 -75
  257. data/lib/aspose-email-cloud/models/storage_file.rb +245 -272
  258. data/lib/aspose-email-cloud/models/storage_file_location.rb +241 -260
  259. data/lib/aspose-email-cloud/models/storage_file_location_list.rb +199 -0
  260. data/lib/aspose-email-cloud/models/storage_folder_location.rb +208 -223
  261. data/lib/aspose-email-cloud/models/storage_model_of_calendar_dto.rb +217 -222
  262. data/lib/aspose-email-cloud/models/storage_model_of_contact_dto.rb +217 -222
  263. data/lib/aspose-email-cloud/models/storage_model_of_email_client_account.rb +217 -0
  264. data/lib/aspose-email-cloud/models/storage_model_of_email_client_multi_account.rb +217 -0
  265. data/lib/aspose-email-cloud/models/storage_model_of_email_dto.rb +217 -222
  266. data/lib/aspose-email-cloud/models/storage_model_of_mapi_calendar_dto.rb +217 -0
  267. data/lib/aspose-email-cloud/models/storage_model_of_mapi_contact_dto.rb +217 -0
  268. data/lib/aspose-email-cloud/models/storage_model_of_mapi_message_dto.rb +217 -0
  269. data/lib/aspose-email-cloud/models/task_regenerating_pattern_dto.rb +275 -0
  270. data/lib/aspose-email-cloud/models/{requests/upload_file_request_data.rb → upload_file_request.rb} +90 -87
  271. data/lib/aspose-email-cloud/models/url.rb +222 -241
  272. data/lib/aspose-email-cloud/models/{list_response_of_string.rb → value_t_of_boolean.rb} +203 -211
  273. data/lib/aspose-email-cloud/models/value_t_of_string.rb +222 -0
  274. data/lib/aspose-email-cloud/models/weekly_recurrence_pattern_dto.rb +270 -0
  275. data/lib/aspose-email-cloud/models/yearly_recurrence_pattern_dto.rb +317 -0
  276. data/lib/aspose-email-cloud/version.rb +15 -15
  277. metadata +254 -198
  278. data/lib/aspose-email-cloud/models/add_attachment_request.rb +0 -223
  279. data/lib/aspose-email-cloud/models/ai_bcr_rq.rb +0 -210
  280. data/lib/aspose-email-cloud/models/append_email_account_base_request.rb +0 -315
  281. data/lib/aspose-email-cloud/models/append_email_base_request.rb +0 -333
  282. data/lib/aspose-email-cloud/models/append_email_mime_base_request.rb +0 -352
  283. data/lib/aspose-email-cloud/models/append_email_model_rq.rb +0 -333
  284. data/lib/aspose-email-cloud/models/create_email_request.rb +0 -228
  285. data/lib/aspose-email-cloud/models/delete_message_base_request.rb +0 -315
  286. data/lib/aspose-email-cloud/models/email_document.rb +0 -230
  287. data/lib/aspose-email-cloud/models/email_document_response.rb +0 -210
  288. data/lib/aspose-email-cloud/models/email_properties.rb +0 -230
  289. data/lib/aspose-email-cloud/models/email_property_response.rb +0 -210
  290. data/lib/aspose-email-cloud/models/hierarchical_object_request.rb +0 -228
  291. data/lib/aspose-email-cloud/models/list_response_of_hierarchical_object_response.rb +0 -211
  292. data/lib/aspose-email-cloud/models/requests/add_calendar_attachment_request_data.rb +0 -89
  293. data/lib/aspose-email-cloud/models/requests/add_contact_attachment_request_data.rb +0 -96
  294. data/lib/aspose-email-cloud/models/requests/add_email_attachment_request_data.rb +0 -89
  295. data/lib/aspose-email-cloud/models/requests/add_mapi_attachment_request_data.rb +0 -89
  296. data/lib/aspose-email-cloud/models/requests/ai_bcr_parse_ocr_data_model_request_data.rb +0 -75
  297. data/lib/aspose-email-cloud/models/requests/ai_bcr_parse_request_data.rb +0 -75
  298. data/lib/aspose-email-cloud/models/requests/ai_bcr_parse_storage_request_data.rb +0 -75
  299. data/lib/aspose-email-cloud/models/requests/ai_name_expand_parsed_request_data.rb +0 -75
  300. data/lib/aspose-email-cloud/models/requests/ai_name_format_parsed_request_data.rb +0 -75
  301. data/lib/aspose-email-cloud/models/requests/ai_name_format_request_data.rb +0 -94
  302. data/lib/aspose-email-cloud/models/requests/ai_name_genderize_parsed_request_data.rb +0 -75
  303. data/lib/aspose-email-cloud/models/requests/ai_name_genderize_request_data.rb +0 -91
  304. data/lib/aspose-email-cloud/models/requests/ai_name_match_parsed_request_data.rb +0 -75
  305. data/lib/aspose-email-cloud/models/requests/ai_name_match_request_data.rb +0 -99
  306. data/lib/aspose-email-cloud/models/requests/ai_name_parse_email_address_request_data.rb +0 -91
  307. data/lib/aspose-email-cloud/models/requests/ai_name_parse_request_data.rb +0 -91
  308. data/lib/aspose-email-cloud/models/requests/append_email_message_request_data.rb +0 -75
  309. data/lib/aspose-email-cloud/models/requests/append_email_model_message_request_data.rb +0 -75
  310. data/lib/aspose-email-cloud/models/requests/append_mime_message_request_data.rb +0 -75
  311. data/lib/aspose-email-cloud/models/requests/convert_calendar_model_to_alternate_request_data.rb +0 -75
  312. data/lib/aspose-email-cloud/models/requests/create_calendar_request_data.rb +0 -82
  313. data/lib/aspose-email-cloud/models/requests/create_contact_request_data.rb +0 -89
  314. data/lib/aspose-email-cloud/models/requests/create_email_folder_request_data.rb +0 -75
  315. data/lib/aspose-email-cloud/models/requests/create_mapi_request_data.rb +0 -82
  316. data/lib/aspose-email-cloud/models/requests/delete_calendar_property_request_data.rb +0 -96
  317. data/lib/aspose-email-cloud/models/requests/delete_contact_property_request_data.rb +0 -103
  318. data/lib/aspose-email-cloud/models/requests/delete_email_folder_request_data.rb +0 -75
  319. data/lib/aspose-email-cloud/models/requests/delete_email_message_request_data.rb +0 -75
  320. data/lib/aspose-email-cloud/models/requests/delete_mapi_attachment_request_data.rb +0 -89
  321. data/lib/aspose-email-cloud/models/requests/delete_mapi_properties_request_data.rb +0 -82
  322. data/lib/aspose-email-cloud/models/requests/fetch_email_message_request_data.rb +0 -93
  323. data/lib/aspose-email-cloud/models/requests/fetch_email_model_request_data.rb +0 -93
  324. data/lib/aspose-email-cloud/models/requests/get_calendar_attachment_request_data.rb +0 -88
  325. data/lib/aspose-email-cloud/models/requests/get_calendar_list_request_data.rb +0 -95
  326. data/lib/aspose-email-cloud/models/requests/get_calendar_model_as_alternate_request_data.rb +0 -91
  327. data/lib/aspose-email-cloud/models/requests/get_calendar_model_list_request_data.rb +0 -85
  328. data/lib/aspose-email-cloud/models/requests/get_calendar_model_request_data.rb +0 -81
  329. data/lib/aspose-email-cloud/models/requests/get_calendar_request_data.rb +0 -81
  330. data/lib/aspose-email-cloud/models/requests/get_contact_attachment_request_data.rb +0 -95
  331. data/lib/aspose-email-cloud/models/requests/get_contact_list_request_data.rb +0 -87
  332. data/lib/aspose-email-cloud/models/requests/get_contact_properties_request_data.rb +0 -88
  333. data/lib/aspose-email-cloud/models/requests/get_email_property_request_data.rb +0 -88
  334. data/lib/aspose-email-cloud/models/requests/get_mapi_attachment_request_data.rb +0 -88
  335. data/lib/aspose-email-cloud/models/requests/get_mapi_attachments_request_data.rb +0 -81
  336. data/lib/aspose-email-cloud/models/requests/get_mapi_list_request_data.rb +0 -80
  337. data/lib/aspose-email-cloud/models/requests/get_mapi_properties_request_data.rb +0 -81
  338. data/lib/aspose-email-cloud/models/requests/list_email_folders_request_data.rb +0 -88
  339. data/lib/aspose-email-cloud/models/requests/list_email_models_request_data.rb +0 -105
  340. data/lib/aspose-email-cloud/models/requests/save_calendar_model_request_data.rb +0 -82
  341. data/lib/aspose-email-cloud/models/requests/save_contact_model_request_data.rb +0 -89
  342. data/lib/aspose-email-cloud/models/requests/save_mail_account_request_data.rb +0 -75
  343. data/lib/aspose-email-cloud/models/requests/save_mail_o_auth_account_request_data.rb +0 -75
  344. data/lib/aspose-email-cloud/models/requests/send_email_mime_request_data.rb +0 -75
  345. data/lib/aspose-email-cloud/models/requests/send_email_model_request_data.rb +0 -75
  346. data/lib/aspose-email-cloud/models/requests/send_email_request_data.rb +0 -75
  347. data/lib/aspose-email-cloud/models/requests/set_email_property_request_data.rb +0 -89
  348. data/lib/aspose-email-cloud/models/requests/set_email_read_flag_request_data.rb +0 -75
  349. data/lib/aspose-email-cloud/models/requests/update_calendar_properties_request_data.rb +0 -82
  350. data/lib/aspose-email-cloud/models/requests/update_contact_properties_request_data.rb +0 -89
  351. data/lib/aspose-email-cloud/models/requests/update_mapi_properties_request_data.rb +0 -82
  352. data/lib/aspose-email-cloud/models/save_email_account_request.rb +0 -431
  353. data/lib/aspose-email-cloud/models/send_email_mime_base_request.rb +0 -297
  354. data/lib/aspose-email-cloud/models/send_email_model_rq.rb +0 -273
  355. data/lib/aspose-email-cloud/models/set_email_property_request.rb +0 -228
@@ -0,0 +1,147 @@
1
+ # ----------------------------------------------------------------------------
2
+ # <copyright company="Aspose" file="email_api.rb">
3
+ # Copyright (c) 2018-2020 Aspose Pty Ltd. All rights reserved.
4
+ # </copyright>
5
+ # <summary>
6
+ # Permission is hereby granted, free of charge, to any person obtaining a
7
+ # copy of this software and associated documentation files (the "Software"),
8
+ # to deal in the Software without restriction, including without limitation
9
+ # the rights to use, copy, modify, merge, publish, distribute, sublicense,
10
+ # and/or sell copies of the Software, and to permit persons to whom the
11
+ # Software is furnished to do so, subject to the following conditions:
12
+ #
13
+ # The above copyright notice and this permission notice shall be included in
14
+ # all 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
21
+ # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22
+ # DEALINGS IN THE SOFTWARE.
23
+ # </summary>
24
+ # ----------------------------------------------------------------------------
25
+
26
+ require 'uri'
27
+
28
+ module AsposeEmailCloud
29
+ # MapiContactApi operations.
30
+ class MapiContactApi
31
+ attr_reader :api_invoker
32
+
33
+ # Initializes a new instance of the MapiContactApi class.
34
+ # @param [String] app_key Key to access the server.
35
+ # @param [String] app_sid ID to access the server.
36
+ # @param [String] base_url Server URL.
37
+ # @param [String] api_version Api version.
38
+ # @param [Object] debug Debug switch [true, false].
39
+ # def initialize(app_key = nil, app_sid = nil, base_url = 'api-qa.aspose.cloud', api_version = 'v4.0', debug = false)
40
+ # @api_client = ApiClient.new(app_key, app_sid, base_url, api_version, debug)
41
+ # end
42
+
43
+ # Initializes a new instance of the MapiContactApi class.
44
+ # @param [ApiInvoker] api_invoker
45
+ def initialize(api_invoker)
46
+ @api_invoker = api_invoker
47
+ end
48
+
49
+ # Converts MAPI contact model to ContactDto model.
50
+ # @param [MapiContactDto] mapi_contact_dto MAPI contact model to convert.
51
+ # @return [ContactDto]
52
+ def as_contact_dto(mapi_contact_dto)
53
+ # verify the required parameter 'mapi_contact_dto' is set
54
+ if @api_invoker.api_client.config.client_side_validation && mapi_contact_dto.nil?
55
+ raise ArgumentError, "Missing the required parameter 'mapi_contact_dto' when calling MapiContactApi.as_contact_dto"
56
+ end
57
+
58
+ local_var_path = '/email/MapiContact/as-contact-dto'
59
+ post_body = @api_invoker.api_client.object_to_http_body(mapi_contact_dto)
60
+ auth_names = ['JWT']
61
+
62
+ # header parameters
63
+ header_params = {}
64
+ # HTTP header 'Accept' (if needed)
65
+ header_params['Accept'] = EmailRequest.select_header_accept(['application/json'])
66
+ # HTTP header 'Content-Type'
67
+ header_params['Content-Type'] = EmailRequest.select_header_content_type(['application/json'])
68
+ http_request = AsposeEmailCloud::HttpRequest.new(resource_path: local_var_path,
69
+ header_params: header_params,
70
+ body: post_body,
71
+ auth_names: auth_names)
72
+
73
+ @api_invoker.make_request(http_request, :PUT, 'ContactDto')
74
+ end
75
+
76
+ # Converts MAPI contact model to specified format and returns as file.
77
+ # @param [MapiContactAsFileRequest] request MAPI contact model to convert.
78
+ # @return [File]
79
+ def as_file(request)
80
+ # verify the required parameter 'request' is set
81
+ if @api_invoker.api_client.config.client_side_validation && request.nil?
82
+ raise ArgumentError, "Missing the required parameter 'request' when calling MapiContactApi.as_file"
83
+ end
84
+
85
+ local_var_path = '/email/MapiContact/as-file'
86
+ post_body = @api_invoker.api_client.object_to_http_body(request)
87
+ auth_names = ['JWT']
88
+
89
+ # header parameters
90
+ header_params = {}
91
+ # HTTP header 'Accept' (if needed)
92
+ header_params['Accept'] = EmailRequest.select_header_accept(['multipart/form-data'])
93
+ # HTTP header 'Content-Type'
94
+ header_params['Content-Type'] = EmailRequest.select_header_content_type(['application/json'])
95
+ http_request = AsposeEmailCloud::HttpRequest.new(resource_path: local_var_path,
96
+ header_params: header_params,
97
+ body: post_body,
98
+ auth_names: auth_names)
99
+
100
+ @api_invoker.make_request(http_request, :PUT, 'File')
101
+ end
102
+
103
+ # Converts contact file to a MAPI model representation.
104
+ # @param [MapiContactFromFileRequest] request Request object.
105
+ # @return [MapiContactDto]
106
+ def from_file(request)
107
+ http_request = request.to_http_info(@api_invoker.api_client)
108
+ @api_invoker.make_request(http_request, :PUT, 'MapiContactDto')
109
+ end
110
+
111
+ # Get MAPI contact document.
112
+ # @param [MapiContactGetRequest] request Request object.
113
+ # @return [MapiContactDto]
114
+ def get(request)
115
+ http_request = request.to_http_info(@api_invoker.api_client)
116
+ @api_invoker.make_request(http_request, :GET, 'MapiContactDto')
117
+ end
118
+
119
+ # Save MAPI Contact to storage.
120
+ # @param [MapiContactSaveRequest] request Create/Update contact request.
121
+ # @return [nil]
122
+ def save(request)
123
+ # verify the required parameter 'request' is set
124
+ if @api_invoker.api_client.config.client_side_validation && request.nil?
125
+ raise ArgumentError, "Missing the required parameter 'request' when calling MapiContactApi.save"
126
+ end
127
+
128
+ local_var_path = '/email/MapiContact'
129
+ post_body = @api_invoker.api_client.object_to_http_body(request)
130
+ auth_names = ['JWT']
131
+
132
+ # header parameters
133
+ header_params = {}
134
+ # HTTP header 'Accept' (if needed)
135
+ header_params['Accept'] = EmailRequest.select_header_accept(['application/json'])
136
+ # HTTP header 'Content-Type'
137
+ header_params['Content-Type'] = EmailRequest.select_header_content_type(['application/json'])
138
+ http_request = AsposeEmailCloud::HttpRequest.new(resource_path: local_var_path,
139
+ header_params: header_params,
140
+ body: post_body,
141
+ auth_names: auth_names)
142
+
143
+ @api_invoker.make_request(http_request, :PUT, nil)
144
+ nil
145
+ end
146
+ end
147
+ end
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ # ----------------------------------------------------------------------------
4
+ # <copyright company="Aspose" file="mapi_group.rb">
5
+ # Copyright (c) 2018-2020 Aspose Pty Ltd. All rights reserved.
6
+ # </copyright>
7
+ # <summary>
8
+ # Permission is hereby granted, free of charge, to any person obtaining a
9
+ # copy of this software and associated documentation files (the "Software"),
10
+ # to deal in the Software without restriction, including without limitation
11
+ # the rights to use, copy, modify, merge, publish, distribute, sublicense,
12
+ # and/or sell copies of the Software, and to permit persons to whom the
13
+ # Software is furnished to do so, subject to the following conditions:
14
+ #
15
+ # The above copyright notice and this permission notice shall be included in
16
+ # all copies or substantial portions of the Software.
17
+ #
18
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23
+ # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
24
+ # DEALINGS IN THE SOFTWARE.
25
+ # </summary>
26
+ # ----------------------------------------------------------------------------
27
+
28
+ module AsposeEmailCloud
29
+
30
+ # MAPI operations.
31
+ class MapiGroup
32
+
33
+ # MAPI calendar operations.
34
+ attr_reader :calendar
35
+
36
+ # MAPI contact operations
37
+ attr_reader :contact
38
+
39
+ # MAPI message operations
40
+ attr_reader :message
41
+
42
+
43
+ def initialize(api_invoker)
44
+
45
+ @calendar = MapiCalendarApi.new(api_invoker)
46
+
47
+ @contact = MapiContactApi.new(api_invoker)
48
+
49
+ @message = MapiMessageApi.new(api_invoker)
50
+
51
+ end
52
+ end
53
+
54
+ end
@@ -0,0 +1,147 @@
1
+ # ----------------------------------------------------------------------------
2
+ # <copyright company="Aspose" file="email_api.rb">
3
+ # Copyright (c) 2018-2020 Aspose Pty Ltd. All rights reserved.
4
+ # </copyright>
5
+ # <summary>
6
+ # Permission is hereby granted, free of charge, to any person obtaining a
7
+ # copy of this software and associated documentation files (the "Software"),
8
+ # to deal in the Software without restriction, including without limitation
9
+ # the rights to use, copy, modify, merge, publish, distribute, sublicense,
10
+ # and/or sell copies of the Software, and to permit persons to whom the
11
+ # Software is furnished to do so, subject to the following conditions:
12
+ #
13
+ # The above copyright notice and this permission notice shall be included in
14
+ # all 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
21
+ # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22
+ # DEALINGS IN THE SOFTWARE.
23
+ # </summary>
24
+ # ----------------------------------------------------------------------------
25
+
26
+ require 'uri'
27
+
28
+ module AsposeEmailCloud
29
+ # MapiMessageApi operations.
30
+ class MapiMessageApi
31
+ attr_reader :api_invoker
32
+
33
+ # Initializes a new instance of the MapiMessageApi class.
34
+ # @param [String] app_key Key to access the server.
35
+ # @param [String] app_sid ID to access the server.
36
+ # @param [String] base_url Server URL.
37
+ # @param [String] api_version Api version.
38
+ # @param [Object] debug Debug switch [true, false].
39
+ # def initialize(app_key = nil, app_sid = nil, base_url = 'api-qa.aspose.cloud', api_version = 'v4.0', debug = false)
40
+ # @api_client = ApiClient.new(app_key, app_sid, base_url, api_version, debug)
41
+ # end
42
+
43
+ # Initializes a new instance of the MapiMessageApi class.
44
+ # @param [ApiInvoker] api_invoker
45
+ def initialize(api_invoker)
46
+ @api_invoker = api_invoker
47
+ end
48
+
49
+ # Converts MAPI message model to EmailDto model
50
+ # @param [MapiMessageDto] mapi_message MAPI message model to convert
51
+ # @return [EmailDto]
52
+ def as_email_dto(mapi_message)
53
+ # verify the required parameter 'mapi_message' is set
54
+ if @api_invoker.api_client.config.client_side_validation && mapi_message.nil?
55
+ raise ArgumentError, "Missing the required parameter 'mapi_message' when calling MapiMessageApi.as_email_dto"
56
+ end
57
+
58
+ local_var_path = '/email/MapiMessage/as-email-dto'
59
+ post_body = @api_invoker.api_client.object_to_http_body(mapi_message)
60
+ auth_names = ['JWT']
61
+
62
+ # header parameters
63
+ header_params = {}
64
+ # HTTP header 'Accept' (if needed)
65
+ header_params['Accept'] = EmailRequest.select_header_accept(['application/json'])
66
+ # HTTP header 'Content-Type'
67
+ header_params['Content-Type'] = EmailRequest.select_header_content_type(['application/json'])
68
+ http_request = AsposeEmailCloud::HttpRequest.new(resource_path: local_var_path,
69
+ header_params: header_params,
70
+ body: post_body,
71
+ auth_names: auth_names)
72
+
73
+ @api_invoker.make_request(http_request, :PUT, 'EmailDto')
74
+ end
75
+
76
+ # Converts MAPI message model to specified format and returns as file.
77
+ # @param [MapiMessageAsFileRequest] request MAPI message model to convert.
78
+ # @return [File]
79
+ def as_file(request)
80
+ # verify the required parameter 'request' is set
81
+ if @api_invoker.api_client.config.client_side_validation && request.nil?
82
+ raise ArgumentError, "Missing the required parameter 'request' when calling MapiMessageApi.as_file"
83
+ end
84
+
85
+ local_var_path = '/email/MapiMessage/as-file'
86
+ post_body = @api_invoker.api_client.object_to_http_body(request)
87
+ auth_names = ['JWT']
88
+
89
+ # header parameters
90
+ header_params = {}
91
+ # HTTP header 'Accept' (if needed)
92
+ header_params['Accept'] = EmailRequest.select_header_accept(['multipart/form-data'])
93
+ # HTTP header 'Content-Type'
94
+ header_params['Content-Type'] = EmailRequest.select_header_content_type(['application/json'])
95
+ http_request = AsposeEmailCloud::HttpRequest.new(resource_path: local_var_path,
96
+ header_params: header_params,
97
+ body: post_body,
98
+ auth_names: auth_names)
99
+
100
+ @api_invoker.make_request(http_request, :PUT, 'File')
101
+ end
102
+
103
+ # Converts email file to a MAPI model representation
104
+ # @param [MapiMessageFromFileRequest] request Request object.
105
+ # @return [MapiMessageDto]
106
+ def from_file(request)
107
+ http_request = request.to_http_info(@api_invoker.api_client)
108
+ @api_invoker.make_request(http_request, :PUT, 'MapiMessageDto')
109
+ end
110
+
111
+ # Get MAPI message document.
112
+ # @param [MapiMessageGetRequest] request Request object.
113
+ # @return [MapiMessageDto]
114
+ def get(request)
115
+ http_request = request.to_http_info(@api_invoker.api_client)
116
+ @api_invoker.make_request(http_request, :GET, 'MapiMessageDto')
117
+ end
118
+
119
+ # Save MAPI message to storage.
120
+ # @param [MapiMessageSaveRequest] request Message create/update request.
121
+ # @return [nil]
122
+ def save(request)
123
+ # verify the required parameter 'request' is set
124
+ if @api_invoker.api_client.config.client_side_validation && request.nil?
125
+ raise ArgumentError, "Missing the required parameter 'request' when calling MapiMessageApi.save"
126
+ end
127
+
128
+ local_var_path = '/email/MapiMessage'
129
+ post_body = @api_invoker.api_client.object_to_http_body(request)
130
+ auth_names = ['JWT']
131
+
132
+ # header parameters
133
+ header_params = {}
134
+ # HTTP header 'Accept' (if needed)
135
+ header_params['Accept'] = EmailRequest.select_header_accept(['application/json'])
136
+ # HTTP header 'Content-Type'
137
+ header_params['Content-Type'] = EmailRequest.select_header_content_type(['application/json'])
138
+ http_request = AsposeEmailCloud::HttpRequest.new(resource_path: local_var_path,
139
+ header_params: header_params,
140
+ body: post_body,
141
+ auth_names: auth_names)
142
+
143
+ @api_invoker.make_request(http_request, :PUT, nil)
144
+ nil
145
+ end
146
+ end
147
+ end
@@ -0,0 +1,81 @@
1
+ # ----------------------------------------------------------------------------
2
+ # <copyright company="Aspose" file="email_api.rb">
3
+ # Copyright (c) 2018-2020 Aspose Pty Ltd. All rights reserved.
4
+ # </copyright>
5
+ # <summary>
6
+ # Permission is hereby granted, free of charge, to any person obtaining a
7
+ # copy of this software and associated documentation files (the "Software"),
8
+ # to deal in the Software without restriction, including without limitation
9
+ # the rights to use, copy, modify, merge, publish, distribute, sublicense,
10
+ # and/or sell copies of the Software, and to permit persons to whom the
11
+ # Software is furnished to do so, subject to the following conditions:
12
+ #
13
+ # The above copyright notice and this permission notice shall be included in
14
+ # all 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
21
+ # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22
+ # DEALINGS IN THE SOFTWARE.
23
+ # </summary>
24
+ # ----------------------------------------------------------------------------
25
+
26
+ require 'uri'
27
+
28
+ module AsposeEmailCloud
29
+ # StorageApi operations.
30
+ class StorageApi
31
+ attr_reader :api_invoker
32
+
33
+ # Initializes a new instance of the StorageApi class.
34
+ # @param [String] app_key Key to access the server.
35
+ # @param [String] app_sid ID to access the server.
36
+ # @param [String] base_url Server URL.
37
+ # @param [String] api_version Api version.
38
+ # @param [Object] debug Debug switch [true, false].
39
+ # def initialize(app_key = nil, app_sid = nil, base_url = 'api-qa.aspose.cloud', api_version = 'v4.0', debug = false)
40
+ # @api_client = ApiClient.new(app_key, app_sid, base_url, api_version, debug)
41
+ # end
42
+
43
+ # Initializes a new instance of the StorageApi class.
44
+ # @param [ApiInvoker] api_invoker
45
+ def initialize(api_invoker)
46
+ @api_invoker = api_invoker
47
+ end
48
+
49
+ # Get disc usage
50
+ # @param [GetDiscUsageRequest] request Request object.
51
+ # @return [DiscUsage]
52
+ def get_disc_usage(request)
53
+ http_request = request.to_http_info(@api_invoker.api_client)
54
+ @api_invoker.make_request(http_request, :GET, 'DiscUsage')
55
+ end
56
+
57
+ # Get file versions
58
+ # @param [GetFileVersionsRequest] request Request object.
59
+ # @return [FileVersions]
60
+ def get_file_versions(request)
61
+ http_request = request.to_http_info(@api_invoker.api_client)
62
+ @api_invoker.make_request(http_request, :GET, 'FileVersions')
63
+ end
64
+
65
+ # Check if file or folder exists
66
+ # @param [ObjectExistsRequest] request Request object.
67
+ # @return [ObjectExist]
68
+ def object_exists(request)
69
+ http_request = request.to_http_info(@api_invoker.api_client)
70
+ @api_invoker.make_request(http_request, :GET, 'ObjectExist')
71
+ end
72
+
73
+ # Check if storage exists
74
+ # @param [StorageExistsRequest] request Request object.
75
+ # @return [StorageExist]
76
+ def exists(request)
77
+ http_request = request.to_http_info(@api_invoker.api_client)
78
+ @api_invoker.make_request(http_request, :GET, 'StorageExist')
79
+ end
80
+ end
81
+ end
@@ -1,382 +1,387 @@
1
- # ----------------------------------------------------------------------------
2
- # <copyright company="Aspose" file="api_client.rb">
3
- # Copyright (c) 2018-2019 Aspose Pty Ltd. All rights reserved.
4
- # </copyright>
5
- # <summary>
6
- # Permission is hereby granted, free of charge, to any person obtaining a
7
- # copy of this software and associated documentation files (the "Software"),
8
- # to deal in the Software without restriction, including without limitation
9
- # the rights to use, copy, modify, merge, publish, distribute, sublicense,
10
- # and/or sell copies of the Software, and to permit persons to whom the
11
- # Software is furnished to do so, subject to the following conditions:
12
- #
13
- # The above copyright notice and this permission notice shall be included in
14
- # all 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
21
- # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22
- # DEALINGS IN THE 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 'uri'
33
-
34
- module AsposeEmailCloud
35
- # Generic API client
36
- # Swagger generic API client. This client handles the client-
37
- # server communication, and is invariant across implementations.
38
- class ApiClient
39
- # The Configuration object holding settings to be used in the API client.
40
- attr_accessor :config
41
-
42
- # Defines the headers to be used in HTTP requests of all API calls by default.
43
- #
44
- # @return [Hash]
45
- attr_accessor :default_headers
46
-
47
- # Initializes the ApiClient
48
- # @param [String] app_key Key to access the server.
49
- # @param [String] app_sid ID to access the server.
50
- # @param [String] base_url Server URL.
51
- # @param [String] api_version Api version.
52
- # @param [Object] debug Debug switch [true, false].
53
- def initialize(app_key = nil, app_sid = nil, base_url = 'api-qa.aspose.cloud', api_version = 'v3.0', debug = false)
54
- @config = Configuration.new(app_key, app_sid, base_url, api_version, debug)
55
- @default_headers = {
56
- 'x-aspose-client' => 'ruby sdk',
57
- 'x-aspose-version' => '19.7'
58
- }
59
- end
60
-
61
- # Call an API with given options.
62
- #
63
- # @return [Array<(Object, Fixnum, Hash)>] an array of 3 elements:
64
- # the data deserialized from response body (could be nil), response status code and response headers.
65
- def call_api(http_method, path, opts = {})
66
- response = build_request(http_method, path, opts)
67
- download_file response if opts[:return_type] == 'File'
68
-
69
- if @config.debugging
70
- @config.logger.debug "'HTTP' response body '~BEGIN~'\n #{response.body}\n'~END~'\n"
71
- end
72
-
73
- unless response.success?
74
- if response.status.zero?
75
- # Errors from libcurl will be made visible here
76
- raise ApiError.new(response.return_message, 0)
77
- else
78
- begin
79
- error = convert_to_type(JSON.parse(response.body, symbolize_names: true)[:error], "Error")
80
- ensure
81
- raise ApiError.new("#{response.status} Error connecting to the API #{path}; Message: #{error}",
82
- response.status, error)
83
- end
84
- end
85
- end
86
-
87
- data = (deserialize(response, opts[:return_type]) if opts[:return_type])
88
- [data, response.status, response.headers]
89
- end
90
-
91
- # Builds the HTTP request
92
- #
93
- # @param [String] http_method HTTP method/verb (e.g. POST)
94
- # @param [String] path URL path (e.g. /account/new)
95
- # @option opts [Hash] :header_params Header parameters
96
- # @option opts [Hash] :query_params Query parameters
97
- # @option opts [Hash] :form_params Query parameters
98
- # @option opts [Object] :body HTTP body (JSON/XML)
99
- # @option opts [String] :host Should not be used
100
- # @return [Faraday::Response] A Faraday Response
101
- def build_request(http_method, path, opts = {})
102
- url = build_request_url(path, opts[:host])
103
- http_method = http_method.to_sym.downcase
104
-
105
- header_params = @default_headers.merge(opts[:header_params] || {})
106
- query_params = opts[:query_params] || {}
107
- form_params = opts[:form_params] || {}
108
- body = opts[:body] if opts[:body] || nil?
109
-
110
- update_params_for_auth! header_params, query_params, opts[:auth_names]
111
-
112
- req_opts = {
113
- :method => http_method,
114
- :headers => header_params,
115
- :params => query_params,
116
- :body => body
117
- }
118
-
119
- if [:post, :patch, :put, :delete].include?(http_method)
120
- req_body = build_request_body(header_params, form_params, opts[:body])
121
- req_opts.update :body => req_body
122
- if @config.debugging
123
- @config.logger.debug "HTTP request body param ~BEGIN~\n#{req_body}\n~END~\n"
124
- end
125
- elsif http_method == :get && body.nil? && !form_params.any? && header_params['Content-Type'] == 'multipart/form-data'
126
- req_opts[:headers].delete('Content-Type')
127
- end
128
-
129
- conn = Faraday.new url, { :params => query_params, :headers => header_params } do |f|
130
- f.request :multipart
131
- f.request :url_encoded
132
- f.adapter Faraday.default_adapter
133
- end
134
-
135
- case http_method
136
- when :post
137
- return conn.post url, req_opts[:body]
138
- when :put
139
- return conn.put url, req_opts[:body]
140
- when :get
141
- return conn.get url, req_opts[:body]
142
- else
143
- return conn.delete url do |c|
144
- c.body = req_opts[:body]
145
- end
146
- end
147
- end
148
-
149
- # Check if the given MIME is a JSON MIME.
150
- # JSON MIME examples:
151
- # application/json
152
- # application/json; charset=UTF8
153
- # APPLICATION/JSON
154
- # */*
155
- # @param [String] mime MIME
156
- # @return [Boolean] True if the MIME is application/json
157
- def json_mime?(mime)
158
- (mime == '*/*') || !(mime =~ %r{Application/.*json(?!p)(;.*)?}i).nil?
159
- end
160
-
161
- # Deserialize the response to the given return type.
162
- #
163
- # @param [Response] response HTTP response
164
- # @param [String] return_type some examples: "User", "Array[User]", "Hash[String,Integer]"
165
- def deserialize(response, return_type)
166
- body = response.body
167
-
168
- # handle file downloading - return the File instance processed in request callbacks
169
- # note that response body is empty when the file is written in chunks in request on_body callback
170
- return @tempfile if return_type == 'File'
171
-
172
- return nil if body.nil? || body.empty?
173
-
174
- # return response body directly for String return type
175
- return body if return_type == 'String'
176
-
177
- # ensuring a default content type
178
- content_type = response.headers['Content-Type'] || 'application/json'
179
-
180
- raise "Content-Type is not supported: #{content_type}" unless json_mime?(content_type)
181
-
182
- begin
183
- data = JSON.parse("[#{body}]", symbolize_names: true)[0]
184
- rescue JSON::ParserError => e
185
- if %w[String Date DateTime].include?(return_type)
186
- data = body
187
- else
188
- raise e
189
- end
190
- end
191
-
192
- convert_to_type data, return_type
193
- end
194
-
195
- # Convert data to the given return type.
196
- # @param [Object] data Data to be converted
197
- # @param [String] return_type Return type
198
- # @return [Mixed] Data in a particular type
199
- def convert_to_type(data, return_type)
200
- return nil if data.nil?
201
-
202
- case return_type
203
- when 'String'
204
- data.to_s
205
- when 'Integer'
206
- data.to_i
207
- when 'Float'
208
- data.to_f
209
- when 'BOOLEAN'
210
- data == true
211
- when 'DateTime'
212
- # parse date time (expecting ISO 8601 format)
213
- DateTime.parse data
214
- when 'Date'
215
- # parse date time (expecting ISO 8601 format)
216
- Date.parse data
217
- when 'Object'
218
- # generic object (usually a Hash), return directly
219
- data
220
- when /\AArray<(.+)>\z/
221
- # e.g. Array<Pet>
222
- sub_type = Regexp.last_match(1)
223
- data.map { |item| convert_to_type(item, sub_type) }
224
- when /\AHash\<String, (.+)\>\z/
225
- # e.g. Hash<String, Integer>
226
- sub_type = Regexp.last_match(1)
227
- {}.tap do |hash|
228
- data.each { |k, v| hash[k] = convert_to_type(v, sub_type) }
229
- end
230
- else
231
- # models, e.g. Pet
232
- AsposeEmailCloud.const_get(return_type).new.tap do |model|
233
- model.build_from_hash data
234
- end
235
- end
236
- end
237
-
238
- # Save response body into a file in (the defined) temporary folder, using the filename
239
- # from the "Content-Disposition" header if provided, otherwise a random filename.
240
- # The response body is written to the file in chunks in order to handle files which
241
- # size is larger than maximum Ruby String or even larger than the maximum memory a Ruby
242
- # process can use.
243
- #
244
- # @see Configuration#temp_folder_path
245
- def download_file(response)
246
- tempfile = nil
247
- encoding = nil
248
- content_disposition = response.headers['Content-Disposition']
249
- if content_disposition and content_disposition =~ /filename=/i
250
- filename = content_disposition[/filename=['"]?([^'"\s]+)['"]?/, 1]
251
- prefix = sanitize_filename(filename)
252
- else
253
- prefix = 'download-'
254
- end
255
- prefix += '-' unless prefix.end_with?('-')
256
- encoding = response.body.encoding
257
- tempfile = Tempfile.open(prefix, @config.temp_folder_path, encoding: encoding)
258
- @tempfile = tempfile
259
- tempfile.write(response.body)
260
- response.on_complete do |resp|
261
- tempfile.close
262
- @config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder "\
263
- "with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file "\
264
- "will be deleted automatically with GC. It's also recommended to delete the temp file "\
265
- "explicitly with `tempfile.delete`"
266
- end
267
- end
268
-
269
- # Sanitize filename by removing path.
270
- # e.g. ../../sun.gif becomes sun.gif
271
- #
272
- # @param [String] filename the filename to be sanitized
273
- # @return [String] the sanitized filename
274
- def sanitize_filename(filename)
275
- filename.gsub(%r{.*[/\\]}, '')
276
- end
277
-
278
- def build_request_url(path, host = nil)
279
- # Add leading and trailing slashes to path
280
- path = "/#{path}".gsub(%r{/+}, '/')
281
- URI.encode((host || @config.base_url) + path)
282
- end
283
-
284
- # Builds the HTTP request body
285
- #
286
- # @param [Hash] header_params Header parameters
287
- # @param [Hash] form_params Query parameters
288
- # @param [Object] body HTTP body (JSON/XML)
289
- # @return [String] HTTP body data in the form of string
290
- def build_request_body(header_params, form_params, body)
291
- # http form
292
- if (header_params['Content-Type'] == 'application/x-www-form-urlencoded' ||
293
- header_params['Content-Type'] == 'multipart/form-data') && form_params.any?
294
- data = {}
295
- form_params.each do |key, value|
296
- case value
297
- when ::File
298
- data[key] = Faraday::UploadIO.new(value.path, MimeMagic.by_magic(value).to_s, key)
299
- when ::Tempfile
300
- data[key] = Faraday::UploadIO.new(value.path, key)
301
- when ::Array, nil
302
- data[key] = value
303
- else
304
- data[key] = value.to_s
305
- end
306
- end
307
- elsif body
308
- data = body.is_a?(String) ? body : body.to_json
309
- else
310
- data = nil
311
- end
312
- data
313
- end
314
-
315
- # Update hearder and query params based on authentication settings.
316
- #
317
- # @param [Hash] header_params Header parameters
318
- # @param [Hash] query_params Query parameters
319
- # @param [String] auth_names Authentication scheme name
320
- def update_params_for_auth!(header_params, query_params, auth_names)
321
- Array(auth_names).each do |auth_name|
322
- auth_setting = @config.auth_settings[auth_name.to_sym]
323
- next unless auth_setting
324
-
325
- case auth_setting[:in]
326
- when 'header'
327
- header_params[auth_setting[:key]] = auth_setting[:value]
328
- when 'query'
329
- query_params[auth_setting[:key]] = auth_setting[:value]
330
- else
331
- raise ArgumentError, 'Authentication token must be in `query` of `header`'
332
- end
333
- end
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.nil? || model.is_a?(String)
341
-
342
- local_body = nil
343
- local_body = if model.is_a?(Array)
344
- model.map { |m| object_to_hash(m) }
345
- else
346
- 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 typhoeus 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
1
+ # frozen_string_literal: true
2
+
3
+ # ----------------------------------------------------------------------------
4
+ # <copyright company="Aspose" file="api_client.rb">
5
+ # Copyright (c) 2018-2020 Aspose Pty Ltd. All rights reserved.
6
+ # </copyright>
7
+ # <summary>
8
+ # Permission is hereby granted, free of charge, to any person obtaining a
9
+ # copy of this software and associated documentation files (the "Software"),
10
+ # to deal in the Software without restriction, including without limitation
11
+ # the rights to use, copy, modify, merge, publish, distribute, sublicense,
12
+ # and/or sell copies of the Software, and to permit persons to whom the
13
+ # Software is furnished to do so, subject to the following conditions:
14
+ #
15
+ # The above copyright notice and this permission notice shall be included in
16
+ # all copies or substantial portions of the Software.
17
+ #
18
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23
+ # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
24
+ # DEALINGS IN THE SOFTWARE.
25
+ # </summary>
26
+ # ----------------------------------------------------------------------------
27
+
28
+ require 'date'
29
+ require 'json'
30
+ require 'logger'
31
+ require 'tempfile'
32
+ require 'faraday'
33
+ require 'mimemagic'
34
+ require 'uri'
35
+
36
+ module AsposeEmailCloud
37
+ # Generic API client
38
+ # Swagger generic API client. This client handles the client-
39
+ # server communication, and is invariant across implementations.
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
+ # @param [String] app_key Key to access the server.
51
+ # @param [String] app_sid ID to access the server.
52
+ # @param [String] base_url Server URL.
53
+ # @param [String] api_version Api version.
54
+ # @param [Object] debug Debug switch [true, false].
55
+ def initialize(app_key = nil, app_sid = nil, base_url = 'api.aspose.cloud', api_version = 'v4.0', debug = false)
56
+ @config = Configuration.new(app_key, app_sid, base_url, api_version, debug)
57
+ @default_headers = {
58
+ 'x-aspose-client' => 'ruby sdk'
59
+ }
60
+ end
61
+
62
+ # Call an API with given options.
63
+ #
64
+ # @return [Array<(Object, Fixnum, Hash)>] an array of 3 elements:
65
+ # the data deserialized from response body (could be nil), response status code and response headers.
66
+ def call_api(http_method, path, opts = {})
67
+ response = build_request(http_method, path, opts)
68
+ download_file response if opts[:return_type] == 'File'
69
+
70
+ if @config.debugging
71
+ @config.logger.debug "'HTTP' response body '~BEGIN~'\n #{response.body}\n'~END~'\n"
72
+ end
73
+
74
+ unless response.success?
75
+ if response.status.zero?
76
+ # Errors from libcurl will be made visible here
77
+ raise ApiError.new(response.return_message, 0)
78
+ else
79
+ begin
80
+ error = convert_to_type(JSON.parse(response.body, symbolize_names: true)[:error], "Error")
81
+ ensure
82
+ raise ApiError.new("#{response.status} Error connecting to the API #{path}; Message: #{error}",
83
+ response.status, error)
84
+ end
85
+ end
86
+ end
87
+
88
+ data = (deserialize(response, opts[:return_type]) if opts[:return_type])
89
+ [data, response.status, response.headers]
90
+ end
91
+
92
+ # Builds the HTTP request
93
+ #
94
+ # @param [String] http_method HTTP method/verb (e.g. POST)
95
+ # @param [String] path URL path (e.g. /account/new)
96
+ # @option opts [Hash] :header_params Header parameters
97
+ # @option opts [Hash] :query_params Query parameters
98
+ # @option opts [Hash] :form_params Query parameters
99
+ # @option opts [Object] :body HTTP body (JSON/XML)
100
+ # @option opts [String] :host Should not be used
101
+ # @return [Faraday::Response] A Faraday Response
102
+ def build_request(http_method, path, opts = {})
103
+ url = build_request_url(path, opts[:host])
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] if opts[:body] || nil?
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
+ elsif http_method == :get && body.nil? && !form_params.any? && header_params['Content-Type'] == 'multipart/form-data'
127
+ req_opts[:headers].delete('Content-Type')
128
+ end
129
+
130
+ conn = Faraday.new url, { :params => query_params, :headers => header_params } do |f|
131
+ f.request :multipart
132
+ f.request :url_encoded
133
+ f.adapter Faraday.default_adapter
134
+ end
135
+
136
+ case http_method
137
+ when :post
138
+ return conn.post url, req_opts[:body]
139
+ when :put
140
+ return conn.put url, req_opts[:body]
141
+ when :get
142
+ return conn.get url, req_opts[:body]
143
+ else
144
+ return conn.delete url do |c|
145
+ c.body = req_opts[:body]
146
+ end
147
+ end
148
+ end
149
+
150
+ # Check if the given MIME is a JSON MIME.
151
+ # JSON MIME examples:
152
+ # application/json
153
+ # application/json; charset=UTF8
154
+ # APPLICATION/JSON
155
+ # */*
156
+ # @param [String] mime MIME
157
+ # @return [Boolean] True if the MIME is application/json
158
+ def json_mime?(mime)
159
+ (mime == '*/*') || !(mime =~ %r{Application/.*json(?!p)(;.*)?}i).nil?
160
+ end
161
+
162
+ # Deserialize the response to the given return type.
163
+ #
164
+ # @param [Response] response HTTP response
165
+ # @param [String] return_type some examples: "User", "Array[User]", "Hash[String,Integer]"
166
+ def deserialize(response, return_type)
167
+ body = response.body
168
+
169
+ # handle file downloading - return the File instance processed in request callbacks
170
+ # note that response body is empty when the file is written in chunks in request on_body callback
171
+ return @tempfile if return_type == 'File'
172
+
173
+ return nil if body.nil? || body.empty?
174
+
175
+ # return response body directly for String return type
176
+ return body if return_type == 'String'
177
+
178
+ # ensuring a default content type
179
+ content_type = response.headers['Content-Type'] || 'application/json'
180
+
181
+ raise "Content-Type is not supported: #{content_type}" unless json_mime?(content_type)
182
+
183
+ begin
184
+ data = JSON.parse("[#{body}]", symbolize_names: true)[0]
185
+ rescue JSON::ParserError => e
186
+ if %w[String Date DateTime].include?(return_type)
187
+ data = body
188
+ else
189
+ raise e
190
+ end
191
+ end
192
+
193
+ convert_to_type data, return_type
194
+ end
195
+
196
+ # Convert data to the given return type.
197
+ # @param [Object] data Data to be converted
198
+ # @param [String] return_type Return type
199
+ # @return [Mixed] Data in a particular type
200
+ def convert_to_type(data, return_type)
201
+ return nil if data.nil?
202
+
203
+ case return_type
204
+ when 'String'
205
+ data.to_s
206
+ when 'Integer'
207
+ data.to_i
208
+ when 'Float'
209
+ data.to_f
210
+ when 'BOOLEAN'
211
+ data == true
212
+ when 'DateTime'
213
+ # parse date time (expecting ISO 8601 format)
214
+ DateTime.parse data
215
+ when 'Date'
216
+ # parse date time (expecting ISO 8601 format)
217
+ Date.parse data
218
+ when 'Object'
219
+ # generic object (usually a Hash), return directly
220
+ data
221
+ when /\AArray<(.+)>\z/
222
+ # e.g. Array<Pet>
223
+ sub_type = Regexp.last_match(1)
224
+ data.map { |item| convert_to_type(item, sub_type) }
225
+ when /\AHash\<String, (.+)\>\z/
226
+ # e.g. Hash<String, Integer>
227
+ sub_type = Regexp.last_match(1)
228
+ {}.tap do |hash|
229
+ data.each { |k, v| hash[k] = convert_to_type(v, sub_type) }
230
+ end
231
+ else
232
+ # models, e.g. Pet
233
+ sub_type = data[:type] || data[:discriminator] || return_type
234
+ if AsposeEmailCloud.const_defined?(sub_type)
235
+ return_type = sub_type
236
+ end
237
+ AsposeEmailCloud.const_get(return_type).new.tap do |model|
238
+ model.build_from_hash data
239
+ end
240
+ end
241
+ end
242
+
243
+ # Save response body into a file in (the defined) temporary folder, using the filename
244
+ # from the "Content-Disposition" header if provided, otherwise a random filename.
245
+ # The response body is written to the file in chunks in order to handle files which
246
+ # size is larger than maximum Ruby String or even larger than the maximum memory a Ruby
247
+ # process can use.
248
+ #
249
+ # @see Configuration#temp_folder_path
250
+ def download_file(response)
251
+ tempfile = nil
252
+ content_disposition = response.headers['Content-Disposition']
253
+ if content_disposition and content_disposition =~ /filename=/i
254
+ filename = content_disposition[/filename=['"]?([^'"\s]+)['"]?/, 1]
255
+ prefix = sanitize_filename(filename)
256
+ else
257
+ prefix = 'download-'
258
+ end
259
+ prefix += '-' unless prefix.end_with?('-')
260
+ tempfile = Tempfile.open(prefix, @config.temp_folder_path)
261
+ tempfile.binmode
262
+ @tempfile = tempfile
263
+ tempfile.write(response.body)
264
+ response.on_complete do |resp|
265
+ tempfile.close
266
+ @config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder "\
267
+ "with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file "\
268
+ "will be deleted automatically with GC. It's also recommended to delete the temp file "\
269
+ "explicitly with `tempfile.delete`"
270
+ end
271
+ end
272
+
273
+ # Sanitize filename by removing path.
274
+ # e.g. ../../sun.gif becomes sun.gif
275
+ #
276
+ # @param [String] filename the filename to be sanitized
277
+ # @return [String] the sanitized filename
278
+ def sanitize_filename(filename)
279
+ filename.gsub(%r{.*[/\\]}, '')
280
+ end
281
+
282
+ def build_request_url(path, host = nil)
283
+ # Add leading and trailing slashes to path
284
+ path = "/#{path}".gsub(%r{/+}, '/')
285
+ URI.encode((host || @config.base_url) + path)
286
+ end
287
+
288
+ # Builds the HTTP request body
289
+ #
290
+ # @param [Hash] header_params Header parameters
291
+ # @param [Hash] form_params Query parameters
292
+ # @param [Object] body HTTP body (JSON/XML)
293
+ # @return [String] HTTP body data in the form of string
294
+ def build_request_body(header_params, form_params, body)
295
+ # http form
296
+ if (header_params['Content-Type'] == 'application/x-www-form-urlencoded' ||
297
+ header_params['Content-Type'] == 'multipart/form-data') && form_params.any?
298
+ data = {}
299
+ form_params.each do |key, value|
300
+ case value
301
+ when ::File
302
+ data[key] = Faraday::UploadIO.new(value.path, MimeMagic.by_magic(value).to_s, key)
303
+ when ::Tempfile
304
+ data[key] = Faraday::UploadIO.new(value.path, key)
305
+ when ::Array, nil
306
+ data[key] = value
307
+ else
308
+ data[key] = value.to_s
309
+ end
310
+ end
311
+ elsif body
312
+ data = body.is_a?(String) ? body : body.to_json
313
+ else
314
+ data = nil
315
+ end
316
+ data
317
+ end
318
+
319
+ # Update hearder and query params based on authentication settings.
320
+ #
321
+ # @param [Hash] header_params Header parameters
322
+ # @param [Hash] query_params Query parameters
323
+ # @param [String] auth_names Authentication scheme name
324
+ def update_params_for_auth!(header_params, query_params, auth_names)
325
+ Array(auth_names).each do |auth_name|
326
+ auth_setting = @config.auth_settings[auth_name.to_sym]
327
+ next unless auth_setting
328
+
329
+ case auth_setting[:in]
330
+ when 'header'
331
+ header_params[auth_setting[:key]] = auth_setting[:value]
332
+ when 'query'
333
+ query_params[auth_setting[:key]] = auth_setting[:value]
334
+ else
335
+ raise ArgumentError, 'Authentication token must be in `query` of `header`'
336
+ end
337
+ end
338
+ end
339
+
340
+ # Convert object (array, hash, object, etc) to JSON string.
341
+ # @param [Object] model object to be converted into JSON string
342
+ # @return [String] JSON string representation of the object
343
+ def object_to_http_body(model)
344
+ return model if model.nil? || model.is_a?(String)
345
+
346
+ local_body = nil
347
+ local_body = if model.is_a?(Array)
348
+ model.map { |m| object_to_hash(m) }
349
+ else
350
+ object_to_hash(model)
351
+ end
352
+ local_body.to_json
353
+ end
354
+
355
+ # Convert object(non-array) to hash.
356
+ # @param [Object] obj object to be converted into JSON string
357
+ # @return [String] JSON string representation of the object
358
+ def object_to_hash(obj)
359
+ if obj.respond_to?(:to_hash)
360
+ obj.to_hash
361
+ else
362
+ obj
363
+ end
364
+ end
365
+
366
+ # Build parameter value according to the given collection format.
367
+ # @param [String] collection_format one of :csv, :ssv, :tsv, :pipes and :multi
368
+ def build_collection_param(param, collection_format)
369
+ case collection_format
370
+ when :csv
371
+ param.join(',')
372
+ when :ssv
373
+ param.join(' ')
374
+ when :tsv
375
+ param.join("\t")
376
+ when :pipes
377
+ param.join('|')
378
+ when :multi
379
+ # return the array directly as typhoeus will handle it as expected
380
+ param
381
+ else
382
+ raise "unknown collection format: #{collection_format.inspect}"
383
+ end
384
+ end
385
+ end
386
+ end
387
+