ZCRMSDK 1.0.4 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (464) hide show
  1. checksums.yaml +4 -4
  2. data/src/ZCRMSDK.rb +447 -0
  3. data/src/com/zoho/api/authenticator/oauth_token.rb +272 -0
  4. data/src/com/zoho/api/authenticator/store/db_store.rb +191 -0
  5. data/src/com/zoho/api/authenticator/store/file_store.rb +235 -0
  6. data/src/com/zoho/api/authenticator/store/token_store.rb +33 -0
  7. data/src/com/zoho/api/authenticator/token.rb +10 -0
  8. data/src/com/zoho/api/logger/sdk_logger.rb +78 -0
  9. data/src/com/zoho/crm/api/assignment_rules/api_exception.rb +121 -0
  10. data/src/com/zoho/crm/api/assignment_rules/assignment_rule.rb +215 -0
  11. data/src/com/zoho/crm/api/assignment_rules/assignment_rules_operations.rb +61 -0
  12. data/src/com/zoho/crm/api/assignment_rules/default_user.rb +80 -0
  13. data/src/com/zoho/crm/api/assignment_rules/response_handler.rb +10 -0
  14. data/src/com/zoho/crm/api/assignment_rules/response_wrapper.rb +63 -0
  15. data/src/com/zoho/crm/api/attachments/action_handler.rb +10 -0
  16. data/src/com/zoho/crm/api/attachments/action_response.rb +10 -0
  17. data/src/com/zoho/crm/api/attachments/action_wrapper.rb +63 -0
  18. data/src/com/zoho/crm/api/attachments/api_exception.rb +125 -0
  19. data/src/com/zoho/crm/api/attachments/attachment.rb +405 -0
  20. data/src/com/zoho/crm/api/attachments/attachments_operations.rb +196 -0
  21. data/src/com/zoho/crm/api/attachments/file_body_wrapper.rb +64 -0
  22. data/src/com/zoho/crm/api/attachments/response_handler.rb +10 -0
  23. data/src/com/zoho/crm/api/attachments/response_wrapper.rb +83 -0
  24. data/src/com/zoho/crm/api/attachments/success_response.rb +121 -0
  25. data/src/com/zoho/crm/api/blue_print/action_response.rb +10 -0
  26. data/src/com/zoho/crm/api/blue_print/api_exception.rb +123 -0
  27. data/src/com/zoho/crm/api/blue_print/blue_print.rb +119 -0
  28. data/src/com/zoho/crm/api/blue_print/blue_print_operations.rb +67 -0
  29. data/src/com/zoho/crm/api/blue_print/body_wrapper.rb +61 -0
  30. data/src/com/zoho/crm/api/blue_print/escalation.rb +80 -0
  31. data/src/com/zoho/crm/api/blue_print/field.rb +1127 -0
  32. data/src/com/zoho/crm/api/blue_print/next_transition.rb +118 -0
  33. data/src/com/zoho/crm/api/blue_print/process_info.rb +251 -0
  34. data/src/com/zoho/crm/api/blue_print/response_handler.rb +10 -0
  35. data/src/com/zoho/crm/api/blue_print/response_wrapper.rb +63 -0
  36. data/src/com/zoho/crm/api/blue_print/success_response.rb +121 -0
  37. data/src/com/zoho/crm/api/blue_print/transition.rb +271 -0
  38. data/src/com/zoho/crm/api/blue_print/validation_error.rb +137 -0
  39. data/src/com/zoho/crm/api/bulk_read/action_handler.rb +10 -0
  40. data/src/com/zoho/crm/api/bulk_read/action_response.rb +10 -0
  41. data/src/com/zoho/crm/api/bulk_read/action_wrapper.rb +82 -0
  42. data/src/com/zoho/crm/api/bulk_read/api_exception.rb +125 -0
  43. data/src/com/zoho/crm/api/bulk_read/bulk_read_operations.rb +74 -0
  44. data/src/com/zoho/crm/api/bulk_read/call_back.rb +81 -0
  45. data/src/com/zoho/crm/api/bulk_read/criteria.rb +155 -0
  46. data/src/com/zoho/crm/api/bulk_read/file_body_wrapper.rb +64 -0
  47. data/src/com/zoho/crm/api/bulk_read/job_detail.rb +196 -0
  48. data/src/com/zoho/crm/api/bulk_read/query.rb +138 -0
  49. data/src/com/zoho/crm/api/bulk_read/request_wrapper.rb +100 -0
  50. data/src/com/zoho/crm/api/bulk_read/response_handler.rb +10 -0
  51. data/src/com/zoho/crm/api/bulk_read/response_wrapper.rb +63 -0
  52. data/src/com/zoho/crm/api/bulk_read/result.rb +137 -0
  53. data/src/com/zoho/crm/api/bulk_read/success_response.rb +121 -0
  54. data/src/com/zoho/crm/api/bulk_write/action_response.rb +10 -0
  55. data/src/com/zoho/crm/api/bulk_write/api_exception.rb +239 -0
  56. data/src/com/zoho/crm/api/bulk_write/bulk_write_operations.rb +112 -0
  57. data/src/com/zoho/crm/api/bulk_write/bulk_write_response.rb +216 -0
  58. data/src/com/zoho/crm/api/bulk_write/call_back.rb +81 -0
  59. data/src/com/zoho/crm/api/bulk_write/field_mapping.rb +156 -0
  60. data/src/com/zoho/crm/api/bulk_write/file.rb +157 -0
  61. data/src/com/zoho/crm/api/bulk_write/file_body_wrapper.rb +64 -0
  62. data/src/com/zoho/crm/api/bulk_write/request_wrapper.rb +119 -0
  63. data/src/com/zoho/crm/api/bulk_write/resource.rb +215 -0
  64. data/src/com/zoho/crm/api/bulk_write/response_handler.rb +10 -0
  65. data/src/com/zoho/crm/api/bulk_write/response_wrapper.rb +10 -0
  66. data/src/com/zoho/crm/api/bulk_write/result.rb +61 -0
  67. data/src/com/zoho/crm/api/bulk_write/success_response.rb +121 -0
  68. data/src/com/zoho/crm/api/contact_roles/action_handler.rb +10 -0
  69. data/src/com/zoho/crm/api/contact_roles/action_response.rb +10 -0
  70. data/src/com/zoho/crm/api/contact_roles/action_wrapper.rb +63 -0
  71. data/src/com/zoho/crm/api/contact_roles/api_exception.rb +125 -0
  72. data/src/com/zoho/crm/api/contact_roles/body_wrapper.rb +61 -0
  73. data/src/com/zoho/crm/api/contact_roles/contact_role.rb +99 -0
  74. data/src/com/zoho/crm/api/contact_roles/contact_roles_operations.rb +161 -0
  75. data/src/com/zoho/crm/api/contact_roles/response_handler.rb +10 -0
  76. data/src/com/zoho/crm/api/contact_roles/response_wrapper.rb +63 -0
  77. data/src/com/zoho/crm/api/contact_roles/success_response.rb +121 -0
  78. data/src/com/zoho/crm/api/currencies/action_handler.rb +10 -0
  79. data/src/com/zoho/crm/api/currencies/action_response.rb +10 -0
  80. data/src/com/zoho/crm/api/currencies/action_wrapper.rb +63 -0
  81. data/src/com/zoho/crm/api/currencies/api_exception.rb +127 -0
  82. data/src/com/zoho/crm/api/currencies/base_currency_action_handler.rb +10 -0
  83. data/src/com/zoho/crm/api/currencies/base_currency_action_wrapper.rb +63 -0
  84. data/src/com/zoho/crm/api/currencies/base_currency_wrapper.rb +61 -0
  85. data/src/com/zoho/crm/api/currencies/body_wrapper.rb +61 -0
  86. data/src/com/zoho/crm/api/currencies/currencies_operations.rb +156 -0
  87. data/src/com/zoho/crm/api/currencies/currency.rb +290 -0
  88. data/src/com/zoho/crm/api/currencies/format.rb +100 -0
  89. data/src/com/zoho/crm/api/currencies/response_handler.rb +10 -0
  90. data/src/com/zoho/crm/api/currencies/response_wrapper.rb +63 -0
  91. data/src/com/zoho/crm/api/currencies/success_response.rb +121 -0
  92. data/src/com/zoho/crm/api/custom_views/api_exception.rb +121 -0
  93. data/src/com/zoho/crm/api/custom_views/criteria.rb +136 -0
  94. data/src/com/zoho/crm/api/custom_views/custom_view.rb +386 -0
  95. data/src/com/zoho/crm/api/custom_views/custom_views_operations.rb +75 -0
  96. data/src/com/zoho/crm/api/custom_views/info.rb +156 -0
  97. data/src/com/zoho/crm/api/custom_views/range.rb +80 -0
  98. data/src/com/zoho/crm/api/custom_views/response_handler.rb +10 -0
  99. data/src/com/zoho/crm/api/custom_views/response_wrapper.rb +82 -0
  100. data/src/com/zoho/crm/api/custom_views/shared_to.rb +118 -0
  101. data/src/com/zoho/crm/api/custom_views/translation.rb +118 -0
  102. data/src/com/zoho/crm/api/dc/au_datacenter.rb +18 -0
  103. data/src/com/zoho/crm/api/dc/cn_datacenter.rb +18 -0
  104. data/src/com/zoho/crm/api/dc/datacenter.rb +21 -0
  105. data/src/com/zoho/crm/api/dc/eu_datacenter.rb +18 -0
  106. data/src/com/zoho/crm/api/dc/in_datacenter.rb +18 -0
  107. data/src/com/zoho/crm/api/dc/us_datacenter.rb +18 -0
  108. data/src/com/zoho/crm/api/email_templates/api_exception.rb +121 -0
  109. data/src/com/zoho/crm/api/email_templates/attachment.rb +118 -0
  110. data/src/com/zoho/crm/api/email_templates/email_template.rb +390 -0
  111. data/src/com/zoho/crm/api/email_templates/email_templates_operations.rb +61 -0
  112. data/src/com/zoho/crm/api/email_templates/response_handler.rb +10 -0
  113. data/src/com/zoho/crm/api/email_templates/response_wrapper.rb +83 -0
  114. data/src/com/zoho/crm/api/exception/sdk_exception.rb +47 -0
  115. data/src/com/zoho/crm/api/field_attachments/api_exception.rb +121 -0
  116. data/src/com/zoho/crm/api/field_attachments/body_wrapper.rb +62 -0
  117. data/src/com/zoho/crm/api/field_attachments/field_attachments_operations.rb +52 -0
  118. data/src/com/zoho/crm/api/field_attachments/file_body_wrapper.rb +64 -0
  119. data/src/com/zoho/crm/api/field_attachments/response_handler.rb +10 -0
  120. data/src/com/zoho/crm/api/fields/api_exception.rb +121 -0
  121. data/src/com/zoho/crm/api/fields/association_details.rb +80 -0
  122. data/src/com/zoho/crm/api/fields/auto_number.rb +99 -0
  123. data/src/com/zoho/crm/api/fields/crypt.rb +156 -0
  124. data/src/com/zoho/crm/api/fields/currency.rb +80 -0
  125. data/src/com/zoho/crm/api/fields/external.rb +99 -0
  126. data/src/com/zoho/crm/api/fields/field.rb +1110 -0
  127. data/src/com/zoho/crm/api/fields/fields_operations.rb +71 -0
  128. data/src/com/zoho/crm/api/fields/formula.rb +80 -0
  129. data/src/com/zoho/crm/api/fields/history_tracking.rb +80 -0
  130. data/src/com/zoho/crm/api/fields/lookup_field.rb +80 -0
  131. data/src/com/zoho/crm/api/fields/maps.rb +80 -0
  132. data/src/com/zoho/crm/api/fields/module.rb +157 -0
  133. data/src/com/zoho/crm/api/fields/multi_module_lookup.rb +99 -0
  134. data/src/com/zoho/crm/api/fields/multi_select_lookup.rb +175 -0
  135. data/src/com/zoho/crm/api/fields/multi_user_lookup.rb +175 -0
  136. data/src/com/zoho/crm/api/fields/pick_list_value.rb +194 -0
  137. data/src/com/zoho/crm/api/fields/private.rb +99 -0
  138. data/src/com/zoho/crm/api/fields/related_details.rb +156 -0
  139. data/src/com/zoho/crm/api/fields/response_handler.rb +10 -0
  140. data/src/com/zoho/crm/api/fields/response_wrapper.rb +63 -0
  141. data/src/com/zoho/crm/api/fields/tool_tip.rb +80 -0
  142. data/src/com/zoho/crm/api/fields/unique.rb +61 -0
  143. data/src/com/zoho/crm/api/fields/view_type.rb +118 -0
  144. data/src/com/zoho/crm/api/files/action_handler.rb +10 -0
  145. data/src/com/zoho/crm/api/files/action_response.rb +10 -0
  146. data/src/com/zoho/crm/api/files/action_wrapper.rb +63 -0
  147. data/src/com/zoho/crm/api/files/api_exception.rb +125 -0
  148. data/src/com/zoho/crm/api/files/body_wrapper.rb +62 -0
  149. data/src/com/zoho/crm/api/files/file_body_wrapper.rb +64 -0
  150. data/src/com/zoho/crm/api/files/file_operations.rb +75 -0
  151. data/src/com/zoho/crm/api/files/response_handler.rb +10 -0
  152. data/src/com/zoho/crm/api/files/success_response.rb +121 -0
  153. data/src/com/zoho/crm/api/header.rb +10 -0
  154. data/src/com/zoho/crm/api/header_map.rb +55 -0
  155. data/src/com/zoho/crm/api/initializer.rb +220 -0
  156. data/src/com/zoho/crm/api/inventory_templates/api_exception.rb +121 -0
  157. data/src/com/zoho/crm/api/inventory_templates/inventory_template.rb +352 -0
  158. data/src/com/zoho/crm/api/inventory_templates/inventory_templates_operations.rb +82 -0
  159. data/src/com/zoho/crm/api/inventory_templates/response_handler.rb +10 -0
  160. data/src/com/zoho/crm/api/inventory_templates/response_wrapper.rb +83 -0
  161. data/src/com/zoho/crm/api/layouts/api_exception.rb +121 -0
  162. data/src/com/zoho/crm/api/layouts/layout.rb +310 -0
  163. data/src/com/zoho/crm/api/layouts/layouts_operations.rb +61 -0
  164. data/src/com/zoho/crm/api/layouts/properties.rb +100 -0
  165. data/src/com/zoho/crm/api/layouts/response_handler.rb +10 -0
  166. data/src/com/zoho/crm/api/layouts/response_wrapper.rb +63 -0
  167. data/src/com/zoho/crm/api/layouts/section.rb +252 -0
  168. data/src/com/zoho/crm/api/modules/action_handler.rb +10 -0
  169. data/src/com/zoho/crm/api/modules/action_response.rb +10 -0
  170. data/src/com/zoho/crm/api/modules/action_wrapper.rb +63 -0
  171. data/src/com/zoho/crm/api/modules/api_exception.rb +125 -0
  172. data/src/com/zoho/crm/api/modules/argument.rb +80 -0
  173. data/src/com/zoho/crm/api/modules/body_wrapper.rb +61 -0
  174. data/src/com/zoho/crm/api/modules/module.rb +939 -0
  175. data/src/com/zoho/crm/api/modules/modules_operations.rb +111 -0
  176. data/src/com/zoho/crm/api/modules/related_list_properties.rb +99 -0
  177. data/src/com/zoho/crm/api/modules/response_handler.rb +10 -0
  178. data/src/com/zoho/crm/api/modules/response_wrapper.rb +63 -0
  179. data/src/com/zoho/crm/api/modules/success_response.rb +121 -0
  180. data/src/com/zoho/crm/api/modules/territory.rb +99 -0
  181. data/src/com/zoho/crm/api/notes/action_handler.rb +10 -0
  182. data/src/com/zoho/crm/api/notes/action_response.rb +10 -0
  183. data/src/com/zoho/crm/api/notes/action_wrapper.rb +63 -0
  184. data/src/com/zoho/crm/api/notes/api_exception.rb +125 -0
  185. data/src/com/zoho/crm/api/notes/body_wrapper.rb +61 -0
  186. data/src/com/zoho/crm/api/notes/info.rb +118 -0
  187. data/src/com/zoho/crm/api/notes/note.rb +368 -0
  188. data/src/com/zoho/crm/api/notes/notes_operations.rb +219 -0
  189. data/src/com/zoho/crm/api/notes/response_handler.rb +10 -0
  190. data/src/com/zoho/crm/api/notes/response_wrapper.rb +82 -0
  191. data/src/com/zoho/crm/api/notes/success_response.rb +121 -0
  192. data/src/com/zoho/crm/api/notification/action_handler.rb +10 -0
  193. data/src/com/zoho/crm/api/notification/action_response.rb +10 -0
  194. data/src/com/zoho/crm/api/notification/action_wrapper.rb +63 -0
  195. data/src/com/zoho/crm/api/notification/api_exception.rb +125 -0
  196. data/src/com/zoho/crm/api/notification/body_wrapper.rb +61 -0
  197. data/src/com/zoho/crm/api/notification/info.rb +118 -0
  198. data/src/com/zoho/crm/api/notification/notification.rb +251 -0
  199. data/src/com/zoho/crm/api/notification/notification_operations.rb +164 -0
  200. data/src/com/zoho/crm/api/notification/response_handler.rb +10 -0
  201. data/src/com/zoho/crm/api/notification/response_wrapper.rb +82 -0
  202. data/src/com/zoho/crm/api/notification/success_response.rb +121 -0
  203. data/src/com/zoho/crm/api/org/action_response.rb +10 -0
  204. data/src/com/zoho/crm/api/org/api_exception.rb +123 -0
  205. data/src/com/zoho/crm/api/org/file_body_wrapper.rb +62 -0
  206. data/src/com/zoho/crm/api/org/hierarchy_preference.rb +61 -0
  207. data/src/com/zoho/crm/api/org/license_details.rb +156 -0
  208. data/src/com/zoho/crm/api/org/org.rb +669 -0
  209. data/src/com/zoho/crm/api/org/org_operations.rb +49 -0
  210. data/src/com/zoho/crm/api/org/response_handler.rb +10 -0
  211. data/src/com/zoho/crm/api/org/response_wrapper.rb +63 -0
  212. data/src/com/zoho/crm/api/org/success_response.rb +121 -0
  213. data/src/com/zoho/crm/api/param.rb +10 -0
  214. data/src/com/zoho/crm/api/parameter_map.rb +54 -0
  215. data/src/com/zoho/crm/api/pipeline/action_handler.rb +10 -0
  216. data/src/com/zoho/crm/api/pipeline/action_response.rb +10 -0
  217. data/src/com/zoho/crm/api/pipeline/action_wrapper.rb +63 -0
  218. data/src/com/zoho/crm/api/pipeline/api_exception.rb +129 -0
  219. data/src/com/zoho/crm/api/pipeline/body_wrapper.rb +61 -0
  220. data/src/com/zoho/crm/api/pipeline/forecast_category.rb +80 -0
  221. data/src/com/zoho/crm/api/pipeline/pick_list_value.rb +175 -0
  222. data/src/com/zoho/crm/api/pipeline/pipeline.rb +213 -0
  223. data/src/com/zoho/crm/api/pipeline/pipeline_operations.rb +165 -0
  224. data/src/com/zoho/crm/api/pipeline/response_handler.rb +10 -0
  225. data/src/com/zoho/crm/api/pipeline/response_wrapper.rb +63 -0
  226. data/src/com/zoho/crm/api/pipeline/stage.rb +80 -0
  227. data/src/com/zoho/crm/api/pipeline/success_response.rb +123 -0
  228. data/src/com/zoho/crm/api/pipeline/transfer_action_handler.rb +10 -0
  229. data/src/com/zoho/crm/api/pipeline/transfer_action_response.rb +10 -0
  230. data/src/com/zoho/crm/api/pipeline/transfer_action_wrapper.rb +63 -0
  231. data/src/com/zoho/crm/api/pipeline/transfer_and_delete_wrapper.rb +61 -0
  232. data/src/com/zoho/crm/api/pipeline/transfer_pipe_line.rb +80 -0
  233. data/src/com/zoho/crm/api/profiles/api_exception.rb +121 -0
  234. data/src/com/zoho/crm/api/profiles/category.rb +118 -0
  235. data/src/com/zoho/crm/api/profiles/default_view.rb +99 -0
  236. data/src/com/zoho/crm/api/profiles/permission_detail.rb +137 -0
  237. data/src/com/zoho/crm/api/profiles/profile.rb +328 -0
  238. data/src/com/zoho/crm/api/profiles/profiles_operations.rb +61 -0
  239. data/src/com/zoho/crm/api/profiles/response_handler.rb +10 -0
  240. data/src/com/zoho/crm/api/profiles/response_wrapper.rb +63 -0
  241. data/src/com/zoho/crm/api/profiles/section.rb +80 -0
  242. data/src/com/zoho/crm/api/query/api_exception.rb +121 -0
  243. data/src/com/zoho/crm/api/query/body_wrapper.rb +61 -0
  244. data/src/com/zoho/crm/api/query/query_operations.rb +35 -0
  245. data/src/com/zoho/crm/api/query/response_handler.rb +10 -0
  246. data/src/com/zoho/crm/api/query/response_wrapper.rb +84 -0
  247. data/src/com/zoho/crm/api/record/action_handler.rb +10 -0
  248. data/src/com/zoho/crm/api/record/action_response.rb +10 -0
  249. data/src/com/zoho/crm/api/record/action_wrapper.rb +63 -0
  250. data/src/com/zoho/crm/api/record/api_exception.rb +145 -0
  251. data/src/com/zoho/crm/api/record/body_wrapper.rb +137 -0
  252. data/src/com/zoho/crm/api/record/carry_over_tags.rb +99 -0
  253. data/src/com/zoho/crm/api/record/comment.rb +118 -0
  254. data/src/com/zoho/crm/api/record/consent.rb +185 -0
  255. data/src/com/zoho/crm/api/record/convert_action_handler.rb +10 -0
  256. data/src/com/zoho/crm/api/record/convert_action_response.rb +10 -0
  257. data/src/com/zoho/crm/api/record/convert_action_wrapper.rb +63 -0
  258. data/src/com/zoho/crm/api/record/convert_body_wrapper.rb +61 -0
  259. data/src/com/zoho/crm/api/record/count_handler.rb +10 -0
  260. data/src/com/zoho/crm/api/record/count_wrapper.rb +63 -0
  261. data/src/com/zoho/crm/api/record/criteria.rb +135 -0
  262. data/src/com/zoho/crm/api/record/deleted_record.rb +157 -0
  263. data/src/com/zoho/crm/api/record/deleted_records_handler.rb +10 -0
  264. data/src/com/zoho/crm/api/record/deleted_records_wrapper.rb +82 -0
  265. data/src/com/zoho/crm/api/record/download_handler.rb +10 -0
  266. data/src/com/zoho/crm/api/record/field.rb +2109 -0
  267. data/src/com/zoho/crm/api/record/file_body_wrapper.rb +66 -0
  268. data/src/com/zoho/crm/api/record/file_details.rb +327 -0
  269. data/src/com/zoho/crm/api/record/file_handler.rb +10 -0
  270. data/src/com/zoho/crm/api/record/image_upload.rb +213 -0
  271. data/src/com/zoho/crm/api/record/info.rb +118 -0
  272. data/src/com/zoho/crm/api/record/lead_converter.rb +194 -0
  273. data/src/com/zoho/crm/api/record/line_item_product.rb +65 -0
  274. data/src/com/zoho/crm/api/record/line_tax.rb +137 -0
  275. data/src/com/zoho/crm/api/record/mass_update.rb +140 -0
  276. data/src/com/zoho/crm/api/record/mass_update_action_handler.rb +10 -0
  277. data/src/com/zoho/crm/api/record/mass_update_action_response.rb +10 -0
  278. data/src/com/zoho/crm/api/record/mass_update_action_wrapper.rb +63 -0
  279. data/src/com/zoho/crm/api/record/mass_update_body_wrapper.rb +156 -0
  280. data/src/com/zoho/crm/api/record/mass_update_response.rb +10 -0
  281. data/src/com/zoho/crm/api/record/mass_update_response_handler.rb +10 -0
  282. data/src/com/zoho/crm/api/record/mass_update_response_wrapper.rb +63 -0
  283. data/src/com/zoho/crm/api/record/mass_update_success_response.rb +121 -0
  284. data/src/com/zoho/crm/api/record/mass_update_territory.rb +80 -0
  285. data/src/com/zoho/crm/api/record/multi_select_lookup.rb +99 -0
  286. data/src/com/zoho/crm/api/record/multi_select_picklist.rb +80 -0
  287. data/src/com/zoho/crm/api/record/options.rb +10 -0
  288. data/src/com/zoho/crm/api/record/participants.rb +116 -0
  289. data/src/com/zoho/crm/api/record/price_book.rb +31 -0
  290. data/src/com/zoho/crm/api/record/pricing_details.rb +65 -0
  291. data/src/com/zoho/crm/api/record/record.rb +192 -0
  292. data/src/com/zoho/crm/api/record/record_operations.rb +847 -0
  293. data/src/com/zoho/crm/api/record/recurring_activity.rb +61 -0
  294. data/src/com/zoho/crm/api/record/remind_at.rb +61 -0
  295. data/src/com/zoho/crm/api/record/reminder.rb +80 -0
  296. data/src/com/zoho/crm/api/record/response_handler.rb +10 -0
  297. data/src/com/zoho/crm/api/record/response_wrapper.rb +82 -0
  298. data/src/com/zoho/crm/api/record/success_response.rb +161 -0
  299. data/src/com/zoho/crm/api/record/successful_convert.rb +101 -0
  300. data/src/com/zoho/crm/api/record/tax.rb +80 -0
  301. data/src/com/zoho/crm/api/record/territory.rb +138 -0
  302. data/src/com/zoho/crm/api/record/widget.rb +80 -0
  303. data/src/com/zoho/crm/api/record/wizard.rb +80 -0
  304. data/src/com/zoho/crm/api/related_lists/api_exception.rb +121 -0
  305. data/src/com/zoho/crm/api/related_lists/related_list.rb +251 -0
  306. data/src/com/zoho/crm/api/related_lists/related_lists_operations.rb +61 -0
  307. data/src/com/zoho/crm/api/related_lists/response_handler.rb +10 -0
  308. data/src/com/zoho/crm/api/related_lists/response_wrapper.rb +63 -0
  309. data/src/com/zoho/crm/api/related_records/action_handler.rb +10 -0
  310. data/src/com/zoho/crm/api/related_records/action_response.rb +10 -0
  311. data/src/com/zoho/crm/api/related_records/action_wrapper.rb +63 -0
  312. data/src/com/zoho/crm/api/related_records/api_exception.rb +125 -0
  313. data/src/com/zoho/crm/api/related_records/body_wrapper.rb +62 -0
  314. data/src/com/zoho/crm/api/related_records/file_body_wrapper.rb +64 -0
  315. data/src/com/zoho/crm/api/related_records/related_records_operations.rb +235 -0
  316. data/src/com/zoho/crm/api/related_records/response_handler.rb +10 -0
  317. data/src/com/zoho/crm/api/related_records/response_wrapper.rb +84 -0
  318. data/src/com/zoho/crm/api/related_records/success_response.rb +121 -0
  319. data/src/com/zoho/crm/api/request_proxy.rb +15 -0
  320. data/src/com/zoho/crm/api/roles/api_exception.rb +121 -0
  321. data/src/com/zoho/crm/api/roles/response_handler.rb +10 -0
  322. data/src/com/zoho/crm/api/roles/response_wrapper.rb +63 -0
  323. data/src/com/zoho/crm/api/roles/role.rb +195 -0
  324. data/src/com/zoho/crm/api/roles/roles_operations.rb +47 -0
  325. data/src/com/zoho/crm/api/sdk_config.rb +12 -0
  326. data/src/com/zoho/crm/api/send_mail/action_handler.rb +10 -0
  327. data/src/com/zoho/crm/api/send_mail/action_response.rb +10 -0
  328. data/src/com/zoho/crm/api/send_mail/action_wrapper.rb +63 -0
  329. data/src/com/zoho/crm/api/send_mail/api_exception.rb +125 -0
  330. data/src/com/zoho/crm/api/send_mail/body_wrapper.rb +61 -0
  331. data/src/com/zoho/crm/api/send_mail/data_subject_request.rb +80 -0
  332. data/src/com/zoho/crm/api/send_mail/inventory_details.rb +100 -0
  333. data/src/com/zoho/crm/api/send_mail/mail.rb +423 -0
  334. data/src/com/zoho/crm/api/send_mail/response_handler.rb +10 -0
  335. data/src/com/zoho/crm/api/send_mail/response_wrapper.rb +63 -0
  336. data/src/com/zoho/crm/api/send_mail/send_mail_operations.rb +61 -0
  337. data/src/com/zoho/crm/api/send_mail/success_response.rb +121 -0
  338. data/src/com/zoho/crm/api/send_mail/template.rb +10 -0
  339. data/src/com/zoho/crm/api/send_mail/user_address.rb +137 -0
  340. data/src/com/zoho/crm/api/share_records/action_handler.rb +10 -0
  341. data/src/com/zoho/crm/api/share_records/action_response.rb +10 -0
  342. data/src/com/zoho/crm/api/share_records/action_wrapper.rb +63 -0
  343. data/src/com/zoho/crm/api/share_records/api_exception.rb +129 -0
  344. data/src/com/zoho/crm/api/share_records/body_wrapper.rb +61 -0
  345. data/src/com/zoho/crm/api/share_records/delete_action_handler.rb +10 -0
  346. data/src/com/zoho/crm/api/share_records/delete_action_response.rb +10 -0
  347. data/src/com/zoho/crm/api/share_records/delete_action_wrapper.rb +63 -0
  348. data/src/com/zoho/crm/api/share_records/response_handler.rb +10 -0
  349. data/src/com/zoho/crm/api/share_records/response_wrapper.rb +83 -0
  350. data/src/com/zoho/crm/api/share_records/share_record.rb +157 -0
  351. data/src/com/zoho/crm/api/share_records/share_records_operations.rb +128 -0
  352. data/src/com/zoho/crm/api/share_records/shared_through.rb +100 -0
  353. data/src/com/zoho/crm/api/share_records/success_response.rb +123 -0
  354. data/src/com/zoho/crm/api/tags/action_handler.rb +10 -0
  355. data/src/com/zoho/crm/api/tags/action_response.rb +10 -0
  356. data/src/com/zoho/crm/api/tags/action_wrapper.rb +63 -0
  357. data/src/com/zoho/crm/api/tags/api_exception.rb +131 -0
  358. data/src/com/zoho/crm/api/tags/body_wrapper.rb +61 -0
  359. data/src/com/zoho/crm/api/tags/conflict_wrapper.rb +61 -0
  360. data/src/com/zoho/crm/api/tags/count_handler.rb +10 -0
  361. data/src/com/zoho/crm/api/tags/count_wrapper.rb +63 -0
  362. data/src/com/zoho/crm/api/tags/info.rb +80 -0
  363. data/src/com/zoho/crm/api/tags/merge_wrapper.rb +61 -0
  364. data/src/com/zoho/crm/api/tags/record_action_handler.rb +10 -0
  365. data/src/com/zoho/crm/api/tags/record_action_response.rb +10 -0
  366. data/src/com/zoho/crm/api/tags/record_action_wrapper.rb +120 -0
  367. data/src/com/zoho/crm/api/tags/response_handler.rb +10 -0
  368. data/src/com/zoho/crm/api/tags/response_wrapper.rb +82 -0
  369. data/src/com/zoho/crm/api/tags/success_response.rb +123 -0
  370. data/src/com/zoho/crm/api/tags/tag.rb +176 -0
  371. data/src/com/zoho/crm/api/tags/tags_operations.rb +387 -0
  372. data/src/com/zoho/crm/api/taxes/action_handler.rb +10 -0
  373. data/src/com/zoho/crm/api/taxes/action_response.rb +10 -0
  374. data/src/com/zoho/crm/api/taxes/action_wrapper.rb +63 -0
  375. data/src/com/zoho/crm/api/taxes/api_exception.rb +125 -0
  376. data/src/com/zoho/crm/api/taxes/body_wrapper.rb +61 -0
  377. data/src/com/zoho/crm/api/taxes/preference.rb +80 -0
  378. data/src/com/zoho/crm/api/taxes/response_handler.rb +10 -0
  379. data/src/com/zoho/crm/api/taxes/response_wrapper.rb +82 -0
  380. data/src/com/zoho/crm/api/taxes/success_response.rb +121 -0
  381. data/src/com/zoho/crm/api/taxes/tax.rb +137 -0
  382. data/src/com/zoho/crm/api/taxes/taxes_operations.rb +136 -0
  383. data/src/com/zoho/crm/api/territories/api_exception.rb +121 -0
  384. data/src/com/zoho/crm/api/territories/response_handler.rb +10 -0
  385. data/src/com/zoho/crm/api/territories/response_wrapper.rb +83 -0
  386. data/src/com/zoho/crm/api/territories/territories_operations.rb +47 -0
  387. data/src/com/zoho/crm/api/territories/territory.rb +272 -0
  388. data/src/com/zoho/crm/api/user_signature.rb +27 -0
  389. data/src/com/zoho/crm/api/users/action_handler.rb +10 -0
  390. data/src/com/zoho/crm/api/users/action_response.rb +10 -0
  391. data/src/com/zoho/crm/api/users/action_wrapper.rb +63 -0
  392. data/src/com/zoho/crm/api/users/api_exception.rb +125 -0
  393. data/src/com/zoho/crm/api/users/body_wrapper.rb +61 -0
  394. data/src/com/zoho/crm/api/users/customize_info.rb +156 -0
  395. data/src/com/zoho/crm/api/users/info.rb +118 -0
  396. data/src/com/zoho/crm/api/users/request_wrapper.rb +61 -0
  397. data/src/com/zoho/crm/api/users/response_handler.rb +10 -0
  398. data/src/com/zoho/crm/api/users/response_wrapper.rb +82 -0
  399. data/src/com/zoho/crm/api/users/shift.rb +80 -0
  400. data/src/com/zoho/crm/api/users/success_response.rb +121 -0
  401. data/src/com/zoho/crm/api/users/tab_theme.rb +80 -0
  402. data/src/com/zoho/crm/api/users/territory.rb +99 -0
  403. data/src/com/zoho/crm/api/users/theme.rb +156 -0
  404. data/src/com/zoho/crm/api/users/user.rb +730 -0
  405. data/src/com/zoho/crm/api/users/users_operations.rb +181 -0
  406. data/src/com/zoho/crm/api/util/api_http_connector.rb +112 -0
  407. data/src/com/zoho/crm/api/util/api_response.rb +16 -0
  408. data/src/com/zoho/crm/api/util/choice.rb +9 -0
  409. data/src/com/zoho/crm/api/util/common_api_handler.rb +237 -0
  410. data/src/com/zoho/crm/api/util/constants.rb +661 -0
  411. data/src/com/zoho/crm/api/util/converter.rb +236 -0
  412. data/src/com/zoho/crm/api/util/data_type_converter.rb +168 -0
  413. data/src/com/zoho/crm/api/util/downloader.rb +83 -0
  414. data/src/com/zoho/crm/api/util/form_data_converter.rb +156 -0
  415. data/src/com/zoho/crm/api/util/header_param_validator.rb +55 -0
  416. data/src/com/zoho/crm/api/util/json_converter.rb +724 -0
  417. data/src/com/zoho/crm/api/util/model.rb +5 -0
  418. data/src/com/zoho/crm/api/util/module_fields_handler.rb +78 -0
  419. data/src/com/zoho/crm/api/util/stream_wrapper.rb +37 -0
  420. data/src/com/zoho/crm/api/util/utility.rb +914 -0
  421. data/src/com/zoho/crm/api/variable_groups/api_exception.rb +121 -0
  422. data/src/com/zoho/crm/api/variable_groups/response_handler.rb +10 -0
  423. data/src/com/zoho/crm/api/variable_groups/response_wrapper.rb +63 -0
  424. data/src/com/zoho/crm/api/variable_groups/variable_group.rb +137 -0
  425. data/src/com/zoho/crm/api/variable_groups/variable_groups_operations.rb +66 -0
  426. data/src/com/zoho/crm/api/variables/action_handler.rb +10 -0
  427. data/src/com/zoho/crm/api/variables/action_response.rb +10 -0
  428. data/src/com/zoho/crm/api/variables/action_wrapper.rb +63 -0
  429. data/src/com/zoho/crm/api/variables/api_exception.rb +125 -0
  430. data/src/com/zoho/crm/api/variables/body_wrapper.rb +61 -0
  431. data/src/com/zoho/crm/api/variables/response_handler.rb +10 -0
  432. data/src/com/zoho/crm/api/variables/response_wrapper.rb +63 -0
  433. data/src/com/zoho/crm/api/variables/success_response.rb +121 -0
  434. data/src/com/zoho/crm/api/variables/variable.rb +173 -0
  435. data/src/com/zoho/crm/api/variables/variables_operations.rb +241 -0
  436. data/src/com/zoho/crm/api/wizards/api_exception.rb +121 -0
  437. data/src/com/zoho/crm/api/wizards/button.rb +252 -0
  438. data/src/com/zoho/crm/api/wizards/chart_data.rb +118 -0
  439. data/src/com/zoho/crm/api/wizards/connection.rb +80 -0
  440. data/src/com/zoho/crm/api/wizards/container.rb +119 -0
  441. data/src/com/zoho/crm/api/wizards/node.rb +118 -0
  442. data/src/com/zoho/crm/api/wizards/response_handler.rb +10 -0
  443. data/src/com/zoho/crm/api/wizards/response_wrapper.rb +63 -0
  444. data/src/com/zoho/crm/api/wizards/screen.rb +99 -0
  445. data/src/com/zoho/crm/api/wizards/segment.rb +176 -0
  446. data/src/com/zoho/crm/api/wizards/transition.rb +80 -0
  447. data/src/com/zoho/crm/api/wizards/wizard.rb +273 -0
  448. data/src/com/zoho/crm/api/wizards/wizards_operations.rb +61 -0
  449. data/src/resources/JSONDetails.json +1 -0
  450. data/src/version.rb +3 -0
  451. metadata +476 -41
  452. data/lib/ZCRMSDK.rb +0 -14
  453. data/lib/ZCRMSDK/handler.rb +0 -3290
  454. data/lib/ZCRMSDK/oauth_client.rb +0 -257
  455. data/lib/ZCRMSDK/oauth_utility.rb +0 -161
  456. data/lib/ZCRMSDK/operations.rb +0 -1091
  457. data/lib/ZCRMSDK/org.rb +0 -174
  458. data/lib/ZCRMSDK/persistence.rb +0 -129
  459. data/lib/ZCRMSDK/request.rb +0 -83
  460. data/lib/ZCRMSDK/response.rb +0 -216
  461. data/lib/ZCRMSDK/restclient.rb +0 -65
  462. data/lib/ZCRMSDK/test.rb +0 -5748
  463. data/lib/ZCRMSDK/utility.rb +0 -310
  464. data/lib/ZCRMSDK/version.rb +0 -5
@@ -0,0 +1,5 @@
1
+ module Util
2
+ module Model
3
+ def initialize; end
4
+ end
5
+ end
@@ -0,0 +1,78 @@
1
+ require 'json'
2
+ require 'monitor'
3
+
4
+ module Util
5
+ class ModuleFieldsHandler
6
+ @@sync_lock = Monitor.new
7
+
8
+ def self.delete_fields_file
9
+ @@sync_lock.synchronize do
10
+ record_field_details_path = Converter.new(nil).get_record_json_file_path
11
+ File.delete(record_field_details_path) if File.exist? record_field_details_path
12
+ end
13
+ rescue StandardError => e
14
+ ex = SDKException.new(nil, nil, nil, e)
15
+ SDKLog::SDKLogger.severe(Constants::DELETE_FIELD_FILE_ERROR, ex)
16
+ raise ex
17
+ end
18
+
19
+ def self.delete_all_fields_file
20
+ @@sync_lock.synchronize do
21
+ initializer = Initializer.get_initializer
22
+ resources_path = initializer.resources_path + '/' + Constants::RESOURCES
23
+ if Dir.exist? resources_path
24
+ Dir.foreach(resources_path) do |f|
25
+ File.delete(resources_path + '/' + f) if (f != '.') && (f != '..')
26
+ end
27
+ end
28
+ end
29
+ rescue StandardError => e
30
+ ex = SDKException.new(nil, nil, nil, e)
31
+ SDKLog::SDKLogger.severe(Constants::DELETE_FIELD_FILES_ERROR, ex)
32
+ raise ex
33
+ end
34
+
35
+ def self.delete_fields(module_api_name)
36
+ record_field_details_path = Converter.new(nil).get_record_json_file_path
37
+ if File.exist? record_field_details_path
38
+ record_field_details_json = JSON.parse(File.read(record_field_details_path))
39
+ if record_field_details_json.key? module_api_name.downcase
40
+ Utility.delete_fields(record_field_details_json,module_api_name)
41
+ File.open(record_field_details_path, 'w') do |f|
42
+ f.write(record_field_details_json.to_json)
43
+ end
44
+ end
45
+ end
46
+ rescue StandardError => e
47
+ ex = SDKException.new(nil, nil, nil, e)
48
+ raise ex
49
+ end
50
+
51
+ def self.refresh_fields(module_api_name)
52
+ @@sync_lock.synchronize do
53
+ delete_fields(module_api_name)
54
+ Utility.get_fields_info(module_api_name)
55
+ end
56
+ rescue SDKException => e
57
+ SDKLog::SDKLogger.severe(Constants::REFRESH_SINGLE_MODULE_FIELDS_ERROR + module_api_name, e)
58
+ raise e
59
+ rescue StandardError => e
60
+ ex = SDKException.new(nil, nil, nil, e)
61
+ SDKLog::SDKLogger.severe(Constants::REFRESH_SINGLE_MODULE_FIELDS_ERROR + module_api_name, ex)
62
+ raise ex
63
+ end
64
+
65
+ def self.refresh_all_modules
66
+ @@sync_lock.synchronize do
67
+ Utility.refresh_modules
68
+ end
69
+ rescue SDKException => e
70
+ SDKLog::SDKLogger.severe(Constants::REFRESH_ALL_MODULE_FIELDS_ERROR, e)
71
+ raise e
72
+ rescue StandardError => e
73
+ ex = SDKException.new(nil, nil, nil, e)
74
+ SDKLog::SDKLogger.severe(Constants::REFRESH_ALL_MODULE_FIELDS_ERROR, ex)
75
+ raise ex
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,37 @@
1
+ require_relative 'model'
2
+ require_relative 'constants'
3
+
4
+ module Util
5
+ # This class handles the file stream and name.
6
+ class StreamWrapper
7
+ include Model
8
+
9
+ # Creates a StreamWrapper class instance with the specified parameters.
10
+ # @param name [String] A String containing the file name.
11
+ # @param stream An InputStream containing the file stream.
12
+ # @param file_path [String] A String containing the absolute file path.
13
+ def initialize(name = nil, stream = nil, file_path = nil)
14
+ @name = name
15
+
16
+ @stream = stream
17
+ return if file_path.nil?
18
+ if File.exist? file_path
19
+ file = File.open(file_path)
20
+
21
+ @name = File.basename(file_path)
22
+
23
+ @stream = file.read
24
+ else
25
+ raise SDKException.new(Constants::FILE_ERROR,Constants::FILE_DOES_NOT_EXISTS + " " + file_path)
26
+ end
27
+ end
28
+
29
+ def name
30
+ @name
31
+ end
32
+
33
+ def stream
34
+ @stream
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,914 @@
1
+ require 'json'
2
+ require 'monitor'
3
+
4
+ require_relative '../related_lists/related_lists_operations'
5
+ require_relative '../related_lists/related_list'
6
+ require_relative '../fields/fields_operations'
7
+ require_relative '../fields/field'
8
+ require_relative '../fields/response_wrapper'
9
+ require_relative '../fields/api_exception'
10
+ require_relative '../modules/module'
11
+ require_relative '../modules/modules_operations'
12
+ require_relative 'constants'
13
+ require_relative '../exception/sdk_exception'
14
+ require_relative '../../../api/logger/sdk_logger'
15
+
16
+ module Util
17
+ # This class handles module field details.
18
+ class Utility
19
+ @@sync_lock = Monitor.new
20
+
21
+ @@apitype_vs_datatype = {}
22
+
23
+ @@apitype_vs_structurename = {}
24
+
25
+ @@new_file = false
26
+
27
+ @@get_modified_modules = false
28
+
29
+ @@api_supported_module = {}
30
+
31
+ @@module_api_name = nil
32
+
33
+ @@force_refresh = false
34
+ def self.set_handler_api_path(module_api_name, handler_instance)
35
+ if handler_instance.nil?
36
+ return
37
+ end
38
+ api_path = handler_instance.api_path
39
+ if module_api_name.downcase == api_path.downcase
40
+ api_path_split = api_path.split('/')
41
+ api_path_split.each do |api_path_split|
42
+ split_lower = api_path_split[i].downcase
43
+ if split_lower == module_api_name.downcase
44
+ api_path_splits[i] = module_api_name
45
+ elsif Constants::DEFAULT_MODULENAME_VS_APINAME.key? split_lower && !Constants::DEFAULT_MODULENAME_VS_APINAME[split_lower].nil?
46
+ api_path_splits[i] = Constants::DEFAULT_MODULENAME_VS_APINAME[split_lower]
47
+ end
48
+ api_path = api_path_splits.join("/")
49
+ handler_instance.api_path = api_path
50
+ end
51
+ end
52
+ end
53
+
54
+ def self.file_exists_flow(module_api_name,record_field_details_path,last_modified_time)
55
+ @@sync_lock.synchronize do
56
+ initializer = Initializer.get_initializer
57
+ record_field_details_json = JSON.parse(File.read(record_field_details_path))
58
+ last_modified_time_exists = false
59
+ if record_field_details_json.key?(Constants::FIELDS_LAST_MODIFIED_TIME) && !record_field_details_json[Constants::FIELDS_LAST_MODIFIED_TIME].nil?
60
+ if get_current_time_in_millis - record_field_details_json[Constants::FIELDS_LAST_MODIFIED_TIME] > 3_600_000
61
+ last_modified_time_exists = true
62
+ end
63
+ end
64
+ if !record_field_details_json.key?(Constants::FIELDS_LAST_MODIFIED_TIME) || @@force_refresh
65
+ last_modified_time_exists = true
66
+ end
67
+
68
+ if initializer.sdk_config.auto_refresh_fields && !@@new_file && !@@get_modified_modules && last_modified_time_exists
69
+ @@get_modified_modules = true
70
+ last_modified_time = (record_field_details_json.key? Constants::FIELDS_LAST_MODIFIED_TIME) ? record_field_details_json[Constants::FIELDS_LAST_MODIFIED_TIME] : nil
71
+ modify_fields(record_field_details_path, last_modified_time)
72
+ @@get_modified_modules = false
73
+ elsif !initializer.sdk_config.auto_refresh_fields && @@force_refresh && !@@get_modified_modules
74
+ @@get_modified_modules = true
75
+ modify_fields(record_field_details_path, last_modified_time)
76
+ @@get_modified_modules = false
77
+ end
78
+
79
+ record_field_details_json = JSON.parse(File.read(record_field_details_path))
80
+ return if module_api_name.nil? || record_field_details_json.key?(module_api_name.downcase)
81
+
82
+ fill_data_type()
83
+
84
+ record_field_details_json[module_api_name.downcase] = {}
85
+
86
+ File.open(record_field_details_path, 'w') do |f|
87
+ f.write(record_field_details_json.to_json)
88
+ end
89
+ field_details = get_fields_details(module_api_name)
90
+ record_field_details_json = JSON.parse(File.read(record_field_details_path))
91
+
92
+ record_field_details_json[module_api_name.downcase] = field_details
93
+
94
+ File.open(record_field_details_path, 'w') do |f|
95
+ f.write(record_field_details_json.to_json)
96
+ end
97
+ end
98
+ end
99
+
100
+ def self.get_fields(module_api_name, handler_instance=nil)
101
+ @@sync_lock.synchronize do
102
+ @@module_api_name = module_api_name
103
+ get_fields_info(module_api_name,handler_instance)
104
+ end
105
+ end
106
+
107
+ def self.get_fields_info(module_api_name, handler_instance=nil)
108
+ require_relative '../initializer'
109
+ initializer = Initializer.get_initializer
110
+ record_field_details_path = nil
111
+ last_modified_time = nil
112
+
113
+ @@sync_lock.synchronize do
114
+ begin
115
+ return if !module_api_name.nil? && !search_json_details(module_api_name).nil?
116
+
117
+ resoures_folder_path = initializer.resources_path + '/' + Constants::RESOURCES
118
+
119
+ Dir.mkdir resoures_folder_path unless File.exist? resoures_folder_path
120
+ record_field_details_path = get_record_json_file_path()
121
+ module_api_name = verify_module_api_name(module_api_name)
122
+ set_handler_api_path(module_api_name,handler_instance)
123
+
124
+ if File.exist? record_field_details_path
125
+ file_exists_flow(module_api_name,record_field_details_path,last_modified_time)
126
+ elsif initializer.sdk_config.auto_refresh_fields
127
+ @@new_file = true
128
+ fill_data_type()
129
+ @@api_supported_module = @@api_supported_module.length == 0 ? get_modules(nil) : @@api_supported_module
130
+
131
+ record_field_details_json = File.exist? record_field_details_path ? JSON.parse(File.read(record_field_details_path)) : {}
132
+
133
+ record_field_details_json = { Constants::FIELDS_LAST_MODIFIED_TIME => get_current_time_in_millis }
134
+ @@api_supported_module.each_key do |module_name|
135
+ unless record_field_details_json.key? module_name.downcase
136
+ record_field_details_json[module_name.downcase] = {}
137
+ File.open(record_field_details_path, 'w') do |f|
138
+ f.write(record_field_details_json.to_json)
139
+ end
140
+ field_details = get_fields_details( @@api_supported_module[module_name][Constants::API_NAME])
141
+ record_field_details_json = JSON.parse(File.read(record_field_details_path))
142
+ record_field_details_json[module_name.downcase] = field_details
143
+ File.open(record_field_details_path, 'w') do |f|
144
+ f.write(record_field_details_json.to_json)
145
+ end
146
+ end
147
+ end
148
+ @@new_file = false
149
+ elsif @@force_refresh && !@@get_modified_modules
150
+ @@get_modified_modules = true
151
+ record_field_details_json = {}
152
+ File.open(record_field_details_path, 'w') do |f|
153
+ f.write(record_field_details_json.to_json)
154
+ end
155
+ modify_fields(record_field_details_path, last_modified_time)
156
+ @@get_modified_modules = false
157
+ else
158
+ fill_data_type()
159
+
160
+ record_field_details_json = { module_api_name.downcase => {} }
161
+
162
+ File.open(record_field_details_path, 'w') do |f|
163
+ f.write(record_field_details_json.to_json)
164
+ end
165
+ field_details = get_fields_details(module_api_name)
166
+ record_field_details_json = JSON.parse(File.read(record_field_details_path))
167
+ record_field_details_json[module_api_name.downcase] = field_details
168
+
169
+ File.open(record_field_details_path, 'w') do |f|
170
+ f.write(record_field_details_json.to_json)
171
+ end
172
+ end
173
+ rescue StandardError => e
174
+ if !record_field_details_path.nil? && File.exist?(record_field_details_path)
175
+ begin
176
+ record_field_details_json = JSON.parse(File.read(record_field_details_path))
177
+ if record_field_details_json.key? module_api_name.downcase
178
+ record_field_details_json.delete(module_api_name.downcase)
179
+ end
180
+ if @@new_file
181
+ unless record_field_details_json[Constants::FIELDS_LAST_MODIFIED_TIME].nil?
182
+ record_field_details_json.delete(Constants::FIELDS_LAST_MODIFIED_TIME)
183
+ end
184
+ @@new_file = false
185
+ end
186
+ if @@get_modified_modules || @@force_refresh
187
+ @@get_modified_modules = false
188
+ @@force_refresh = false
189
+ unless last_modified_time.nil?
190
+ record_field_details_json[Constants::FIELDS_LAST_MODIFIED_TIME] = last_modified_time
191
+ end
192
+ end
193
+ File.open(record_field_details_path, 'w') do |f|
194
+ f.write(record_field_details_json.to_json)
195
+ end
196
+ rescue StandardError => e
197
+ exception = SDKException.new(nil, Constants::EXCEPTION, nil, e)
198
+ SDKLog::SDKLogger.severe(Constants::EXCEPTION, exception)
199
+ raise exception
200
+ end
201
+ end
202
+ ex = (e.class.to_s == 'SDKException') ? e : SDKException.new(nil, Constants::EXCEPTION, nil, e)
203
+ SDKLog::SDKLogger.severe(Constants::EXCEPTION, ex)
204
+ raise ex
205
+ end
206
+ end
207
+ end
208
+
209
+ def self.modify_fields(record_field_details_path, modified_time)
210
+ modified_modules = get_modules(modified_time)
211
+ record_field_details_json = JSON.parse(File.open(record_field_details_path).read)
212
+ record_field_details_json[Constants::FIELDS_LAST_MODIFIED_TIME] = get_current_time_in_millis()
213
+ File.open(record_field_details_path, 'w') do |f|
214
+ f.write(record_field_details_json.to_json)
215
+ end
216
+ return unless modified_modules.any?
217
+
218
+ modified_modules.each_key do |module_api_name|
219
+ if record_field_details_json.key? module_api_name.downcase
220
+ delete_fields(record_field_details_json, module_api_name)
221
+ end
222
+ end
223
+
224
+ File.open(record_field_details_path, 'w') do |f|
225
+ f.write(record_field_details_json.to_json)
226
+ end
227
+ modified_modules.each_key do |module_api_name|
228
+ module_data = modified_modules[module_api_name]
229
+ get_fields_info(module_data[Constants::API_NAME])
230
+ end
231
+ end
232
+
233
+ def self.verify_module_api_name(module_api_name)
234
+
235
+ if !module_api_name.nil?
236
+ if Constants::DEFAULT_MODULENAME_VS_APINAME.key? (module_api_name.downcase) && !Constants::DEFAULT_MODULENAME_VS_APINAME[module_api_name.downcase].nil?
237
+ return Constants::DEFAULT_MODULENAME_VS_APINAME[module_api_name.downcase]
238
+ end
239
+ end
240
+
241
+ record_field_details_path = get_record_json_file_path()
242
+
243
+ if File.exist? record_field_details_path
244
+ fields_json = JSON.parse(File.open(record_field_details_path).read)
245
+ if fields_json.key? Constants::SDK_MODULE_METADATA and fields_json[Constants::SDK_MODULE_METADATA].key? module_api_name.downcase
246
+ return fields_json[Constants::SDK_MODULE_METADATA][module_api_name.downcase][Constants::API_NAME]
247
+ end
248
+ end
249
+ return module_api_name
250
+ end
251
+
252
+ def self.delete_fields(record_field_details_json, module_api_name)
253
+ subform_modules = []
254
+
255
+ field_json = record_field_details_json[module_api_name.downcase]
256
+ field_json.each_key do |key|
257
+ if field_json[key].key?(Constants::SUBFORM) && field_json[key][Constants::SUBFORM]
258
+ if record_field_details_json.key? field_json[key][Constants::MODULE]
259
+ subform_modules.push(field_json[key][Constants::MODULE])
260
+ end
261
+ end
262
+ end
263
+ record_field_details_json.delete(module_api_name.downcase)
264
+ return unless subform_modules.any?
265
+
266
+ subform_modules.each do |subform_module|
267
+ delete_fields(record_field_details_json, subform_module)
268
+ end
269
+ end
270
+
271
+ def self.get_record_json_file_path()
272
+ Converter.new(nil).get_record_json_file_path()
273
+ end
274
+
275
+ def self.get_related_lists(related_module_name, module_api_name, common_api_handler)
276
+ require_relative '../initializer'
277
+
278
+ initializer = Initializer.get_initializer
279
+
280
+ @@sync_lock.synchronize do
281
+ begin
282
+ is_new_data = false
283
+ key = module_api_name + Constants::UNDERSCORE + Constants::RELATED_LISTS
284
+ key = key.downcase
285
+ resoures_folder_path = initializer.resources_path + '/' + Constants::RESOURCES
286
+ Dir.mkdir resoures_folder_path unless File.exist? resoures_folder_path
287
+
288
+ record_field_details_path = get_record_json_file_path()
289
+ if !File.exist?(record_field_details_path) || (File.exist?(record_field_details_path) && !(JSON.parse(File.read(record_field_details_path)).key? key))
290
+ is_new_data = true
291
+ related_list_values = get_related_list_details(module_api_name)
292
+ if File.exist? (record_field_details_path)
293
+ record_field_details_json = JSON.parse(File.read(record_field_details_path))
294
+ else
295
+ record_field_details_json = {}
296
+ end
297
+ record_field_details_json[key] = related_list_values
298
+ File.open(record_field_details_path, 'w') do |f|
299
+ f.write(record_field_details_json.to_json)
300
+ end
301
+ end
302
+ record_field_details_json = JSON.parse(File.read(record_field_details_path))
303
+ module_related_list = record_field_details_json[key]
304
+ if !check_related_list_exists(related_module_name, module_related_list, common_api_handler) && !is_new_data
305
+ record_field_details_json.delete(key)
306
+ File.open(record_field_details_path, 'w') do |f|
307
+ f.write(record_field_details_json.to_json)
308
+ end
309
+ get_related_lists(related_module_name, module_api_name, common_api_handler)
310
+ end
311
+ rescue SDKException => e
312
+ SDKLog::SDKLogger.severe(Constants::EXCEPTION, e)
313
+ raise e
314
+ rescue StandardError => e
315
+ ex = SDKException.new(nil, Constants::EXCEPTION, nil, e)
316
+ SDKLog::SDKLogger.severe(Constants::EXCEPTION, ex)
317
+ raise ex
318
+ end
319
+ end
320
+ end
321
+
322
+ def self.get_fields_details(module_api_name)
323
+ response = Fields::FieldsOperations.new(module_api_name).get_fields(nil)
324
+ fields_details = {}
325
+
326
+ unless response.nil?
327
+
328
+ return fields_details if response.status_code == Constants::RESPONSECODE_NO_CONTENT
329
+
330
+ if response.is_expected
331
+ data_object = response.data_object
332
+
333
+ if data_object.is_a? Fields::ResponseWrapper
334
+ fields = data_object.fields
335
+
336
+ fields.each do |field|
337
+ key_name = field.api_name
338
+ next if Constants::KEYS_TO_SKIP.include? key_name
339
+
340
+ field_detail = {}
341
+ set_data_type(field_detail, field, module_api_name)
342
+ fields_details[key_name] = field_detail
343
+ end
344
+ if Constants::INVENTORY_MODULES.include? module_api_name.downcase
345
+ field_detail = {}
346
+ field_detail[Constants::NAME] = Constants::LINE_TAX
347
+ field_detail[Constants::TYPE] = Constants::LIST_NAMESPACE
348
+ field_detail[Constants::STRUCTURE_NAME] = Constants::LINE_TAX_NAMESPACE
349
+ field_detail[Constants::LOOKUP] = true
350
+ fields_details[Constants::LINE_TAX] = field_detail
351
+ end
352
+
353
+ if module_api_name.downcase == Constants::NOTES.downcase
354
+ field_detail = {}
355
+ field_detail[Constants::NAME] = Constants::ATTACHMENTS
356
+ field_detail[Constants::TYPE] = Constants::LIST_NAMESPACE
357
+ field_detail[Constants::STRUCTURE_NAME] = Constants::ATTACHMENTS_NAMESPACE
358
+ fields_details[Constants::ATTACHMENTS] = field_detail
359
+ end
360
+
361
+ elsif data_object.is_a? Fields::APIException
362
+ error_response = {}
363
+ error_response[Constants::CODE] = data_object.code.value
364
+ error_response[Constants::STATUS] = data_object.status.value
365
+ error_response[Constants::MESSAGE] = data_object.message.value
366
+ error_response[Constants::DETAILS] = data_object.details
367
+ raise SDKException.new(Constants::API_EXCEPTION, nil, error_response)
368
+ end
369
+ else
370
+ error_response = {}
371
+ error_response[Constants::CODE] = response.status_code
372
+ raise SDKException.new(Constants::API_EXCEPTION, nil, error_response)
373
+ end
374
+ end
375
+ fields_details
376
+ end
377
+
378
+ def self.search_json_details(key)
379
+ require_relative '../initializer'
380
+
381
+ package_name = Constants::PACKAGE_PREFIX + 'record.' + key
382
+
383
+ Initializer.json_details.each_key do |class_key|
384
+ if class_key.downcase == package_name.downcase
385
+ return_json = {
386
+ Constants::MODULEPACKAGENAME => class_key,
387
+ Constants::MODULEDETAILS => Initializer.json_details[class_key]
388
+ }
389
+
390
+ return return_json
391
+ end
392
+ end
393
+
394
+ nil
395
+ end
396
+
397
+ def self.get_json_object(json, key)
398
+ json.each_key do |key_in_json|
399
+ return json[key_in_json] if key_in_json == key
400
+ end
401
+
402
+ nil
403
+ end
404
+
405
+ def self.fill_data_type
406
+ return unless @@apitype_vs_datatype.empty?
407
+
408
+ field_api_names_string = %w[autonumber textarea text website email phone mediumtext profileimage]
409
+ field_api_names_integer = %w[integer]
410
+ field_api_names_boolean = %w[boolean]
411
+ field_api_names_long = %w[bigint long]
412
+ field_api_names_double = %w[double percent lookup currency]
413
+ field_api_names_field_file = %w[fileupload]
414
+ field_api_names_datetime = %w[datetime event_reminder]
415
+ field_api_names_date = %w[date]
416
+ field_api_names_lookup = %w[lookup]
417
+ field_api_names_picklist = %w[picklist]
418
+ field_api_names_multiselect_picklist = %w[multiselectpicklist]
419
+ field_api_names_subform = %w[subform]
420
+ field_api_names_owner_lookup = %w[ownerlookup userlookup]
421
+ field_api_names_multiuser_lookup = %w[multiuserlookup]
422
+ field_api_names_multimodule_lookup = %w[multimodulelookup]
423
+ field_api_names_task_remind_at = %w[ALARM]
424
+ field_api_names_recurring_activity = %w[RRULE]
425
+ field_api_names_reminder = %w[multireminder]
426
+ field_api_names_consent_look_up = %w[consent_lookup]
427
+ field_api_name_image_upload = %w[imageupload]
428
+ field_api_name_multiselect_lookup = %w[multiselectlookup]
429
+ field_api_name_line_tax = %w[linetax]
430
+
431
+ field_api_names_string.each do |field_api_name|
432
+ @@apitype_vs_datatype[field_api_name] = Constants::STRING
433
+ end
434
+
435
+ field_api_names_integer.each do |field_api_name|
436
+ @@apitype_vs_datatype[field_api_name] = Constants::INTEGER
437
+ end
438
+
439
+ field_api_names_boolean.each do |field_api_name|
440
+ @@apitype_vs_datatype[field_api_name] = Constants::BOOLEAN
441
+ end
442
+
443
+ field_api_names_double.each do |field_api_name|
444
+ @@apitype_vs_datatype[field_api_name] = Constants::DOUBLE
445
+ end
446
+
447
+ field_api_names_long.each do |field_api_name|
448
+ @@apitype_vs_datatype[field_api_name] = Constants::LONG
449
+ end
450
+
451
+ field_api_names_field_file.each do |field_api_name|
452
+ @@apitype_vs_datatype[field_api_name] = Constants::LIST_NAMESPACE
453
+ @@apitype_vs_structurename[field_api_name] = Constants::FIELD_FILE_NAMESPACE
454
+ end
455
+
456
+ field_api_names_task_remind_at.each do |field_api_name|
457
+ @@apitype_vs_datatype[field_api_name] = Constants::REMINDAT_NAMESPACE
458
+ @@apitype_vs_structurename[field_api_name] = Constants::REMINDAT_NAMESPACE
459
+ end
460
+
461
+ field_api_names_recurring_activity.each do |field_api_name|
462
+ @@apitype_vs_datatype[field_api_name] = Constants::RECURRING_ACTIVITY_NAMESPACE
463
+ @@apitype_vs_structurename[field_api_name] = Constants::RECURRING_ACTIVITY_NAMESPACE
464
+ end
465
+
466
+ field_api_names_reminder.each do |field_api_name|
467
+ @@apitype_vs_datatype[field_api_name] = Constants::LIST_NAMESPACE
468
+ @@apitype_vs_structurename[field_api_name] = Constants::REMINDER_NAMESPACE
469
+ end
470
+
471
+ field_api_names_datetime.each do |field_api_name|
472
+ @@apitype_vs_datatype[field_api_name] = Constants::DATETIME_NAMESPACE
473
+ end
474
+
475
+ field_api_names_date.each do |field_api_name|
476
+ @@apitype_vs_datatype[field_api_name] = Constants::DATE_NAMESPACE
477
+ end
478
+
479
+ field_api_names_lookup.each do |field_api_name|
480
+ @@apitype_vs_datatype[field_api_name] = Constants::RECORD_NAMESPACE
481
+
482
+ @@apitype_vs_structurename[field_api_name] = Constants::RECORD_NAMESPACE
483
+ end
484
+
485
+ field_api_names_owner_lookup.each do |field_api_name|
486
+ @@apitype_vs_datatype[field_api_name] = Constants::USER_NAMESPACE
487
+
488
+ @@apitype_vs_structurename[field_api_name] = Constants::USER_NAMESPACE
489
+ end
490
+
491
+ field_api_names_multiuser_lookup.each do |field_api_name|
492
+ @@apitype_vs_datatype[field_api_name] = Constants::LIST_NAMESPACE
493
+
494
+ @@apitype_vs_structurename[field_api_name] = Constants::RECORD_NAMESPACE
495
+ end
496
+
497
+ field_api_names_multimodule_lookup.each do |field_api_name|
498
+ @@apitype_vs_datatype[field_api_name] = Constants::LIST_NAMESPACE
499
+
500
+ @@apitype_vs_structurename[field_api_name] = Constants::MODULE_NAMESPACE
501
+ end
502
+
503
+ field_api_names_picklist.each do |field_api_name|
504
+ @@apitype_vs_datatype[field_api_name] = Constants::CHOICE_NAMESPACE
505
+ end
506
+
507
+ field_api_names_multiselect_picklist.each do |field_api_name|
508
+ @@apitype_vs_datatype[field_api_name] = Constants::LIST_NAMESPACE
509
+
510
+ @@apitype_vs_structurename[field_api_name] = Constants::CHOICE_NAMESPACE
511
+ end
512
+
513
+ field_api_names_subform.each do |field_api_name|
514
+ @@apitype_vs_datatype[field_api_name] = Constants::LIST_NAMESPACE
515
+
516
+ @@apitype_vs_structurename[field_api_name] = Constants::RECORD_NAMESPACE
517
+ end
518
+
519
+ field_api_names_consent_look_up.each do |field_api_name|
520
+ @@apitype_vs_datatype[field_api_name] = Constants::CONSENT_NAMESPACE
521
+
522
+ @@apitype_vs_structurename[field_api_name] = Constants::CONSENT_NAMESPACE
523
+ end
524
+
525
+ field_api_name_image_upload.each do |field_api_name|
526
+ @@apitype_vs_datatype[field_api_name] = Constants::LIST_NAMESPACE
527
+
528
+ @@apitype_vs_structurename[field_api_name] = Constants::IMAGEUPLOAD_NAMESPACE
529
+ end
530
+
531
+ field_api_name_multiselect_lookup.each do |field_api_name|
532
+ @@apitype_vs_datatype[field_api_name] = Constants::LIST_NAMESPACE
533
+
534
+ @@apitype_vs_structurename[field_api_name] = Constants::RECORD_NAMESPACE
535
+ end
536
+
537
+ field_api_name_line_tax.each do |field_api_name|
538
+ @@apitype_vs_datatype[field_api_name] = Constants::LIST_NAMESPACE
539
+
540
+ @@apitype_vs_structurename[field_api_name] = Constants::LINE_TAX_NAMESPACE
541
+ end
542
+ end
543
+
544
+ def self.set_data_type(field_detail, field_instance, module_api_name)
545
+ data_type = field_instance.data_type
546
+
547
+ key_name = field_instance.api_name
548
+
549
+ module_name = ''
550
+
551
+ module_api_name = module_api_name.downcase
552
+ if !field_instance.system_mandatory.nil? && field_instance.system_mandatory && !((module_api_name == Constants::CALLS.downcase) && (key_name.downcase == Constants::CALL_DURATION.downcase))
553
+ field_detail[Constants::REQUIRED] = true
554
+ end
555
+
556
+ if (key_name.downcase == Constants::PRICING_DETAILS.downcase) && (module_api_name == Constants::PRICE_BOOKS.downcase)
557
+ field_detail[Constants::NAME] = key_name
558
+ field_detail[Constants::TYPE] = Constants::LIST_NAMESPACE
559
+ field_detail[Constants::STRUCTURE_NAME] = Constants::PRICINGDETAILS
560
+ field_detail[Constants::SKIP_MANDATORY] = true
561
+ return
562
+ elsif (key_name.downcase == Constants::PARTICIPANT_API_NAME.downcase) && ((module_api_name == Constants::EVENTS.downcase) || (module_api_name == Constants::ACTIVITIES.downcase))
563
+ field_detail[Constants::NAME] = key_name
564
+ field_detail[Constants::TYPE] = Constants::LIST_NAMESPACE
565
+ field_detail[Constants::STRUCTURE_NAME] = Constants::PARTICIPANTS
566
+ field_detail[Constants::SKIP_MANDATORY] = true
567
+ return
568
+ elsif (key_name.downcase == Constants::COMMENTS.downcase) && ((module_api_name == Constants::SOLUTIONS.downcase) || (module_api_name == Constants::CASES.downcase))
569
+ field_detail[Constants::NAME] = key_name
570
+ field_detail[Constants::TYPE] = Constants::LIST_NAMESPACE
571
+ field_detail[Constants::STRUCTURE_NAME] = Constants::COMMENTS_NAMESPACE
572
+ field_detail[Constants::LOOKUP] = true
573
+ return
574
+ elsif key_name.downcase == Constants::LAYOUT.downcase
575
+ field_detail[Constants::NAME] = key_name
576
+ field_detail[Constants::TYPE] = Constants::LAYOUT_NAMESPACE
577
+ field_detail[Constants::LOOKUP] = true
578
+ field_detail[Constants::STRUCTURE_NAME] = Constants::LAYOUT_NAMESPACE
579
+ return
580
+ elsif (key_name.downcase() == Constants::TERRITORIES.downcase or key_name.downcase() == Constants::TERRITORY.downcase) and !field_instance.custom_field.nil? and !field_instance.custom_field
581
+ field_detail[Constants::NAME] = key_name
582
+ field_detail[Constants::TYPE] = Constants::LIST_NAMESPACE
583
+ field_detail[Constants::STRUCTURE_NAME] = Constants::TERRITORY_NAMESPACE
584
+ field_detail[Constants::LOOKUP] = true
585
+ return
586
+ elsif key_name.downcase() == Constants::PRODUCT_NAME.downcase and Constants::INVENTORY_MODULES_ITEMS.include? module_api_name.downcase
587
+ field_detail[Constants::NAME] = key_name
588
+ field_detail[Constants::TYPE] = Constants::LINEITEM_PRODUCT
589
+ field_detail[Constants::STRUCTURE_NAME] = Constants::LINEITEM_PRODUCT
590
+ field_detail[Constants::LOOKUP] = true
591
+ return
592
+ elsif key_name.downcase() == Constants::DISCOUNT.downcase and Constants::INVENTORY_MODULES_ITEMS.include? module_api_name.downcase
593
+ field_detail[Constants::NAME] = key_name
594
+ field_detail[Constants::TYPE] = Constants::STRING
595
+ return
596
+ elsif key_name.downcase() == Constants::TAX.downcase and module_api_name.downcase() == Constants::PRODUCTS.downcase
597
+ field_detail[Constants::NAME] = key_name
598
+ field_detail[Constants::TYPE] = Constants::LIST_NAMESPACE
599
+ field_detail[Constants::STRUCTURE_NAME] = Constants::TAX_NAMESPACE
600
+ return
601
+ elsif @@apitype_vs_datatype.include? data_type
602
+ field_detail[Constants::TYPE] = @@apitype_vs_datatype[data_type]
603
+ elsif data_type.downcase == Constants::FORMULA.downcase
604
+ unless field_instance.formula.nil?
605
+ return_type = field_instance.formula.return_type
606
+ unless @@apitype_vs_datatype[return_type].nil?
607
+ field_detail[Constants::TYPE] = @@apitype_vs_datatype[return_type]
608
+ end
609
+ field_detail[Constants::READ_ONLY] = true
610
+ end
611
+ else
612
+ return
613
+ end
614
+ field_detail[Constants::LOOKUP] = true if data_type.downcase.include? Constants::LOOKUP
615
+ field_detail[Constants::SKIP_MANDATORY] = true if data_type.downcase.include? Constants::CONSENT_LOOKUP
616
+
617
+ if data_type.downcase.include? Constants::MULTI_SELECT_LOOKUP
618
+ field_detail[Constants::SKIP_MANDATORY] = true
619
+ if !field_instance.multiselectlookup.nil?
620
+ if !field_instance.multiselectlookup.linking_module.nil?
621
+ linking_module = field_instance.multiselectlookup.linking_module
622
+ field_detail[Constants::MODULE] = linking_module
623
+ module_name = linking_module
624
+ end
625
+ end
626
+ field_detail[Constants::SUBFORM] = true
627
+ end
628
+
629
+ if data_type.downcase.include? Constants::MULTI_USER_LOOKUP
630
+ field_detail[Constants::SKIP_MANDATORY] = true
631
+ if !field_instance.multiuserlookup.nil?
632
+ if !field_instance.multiuserlookup.linking_module.nil?
633
+ linking_module = field_instance.multiuserlookup.linking_module
634
+ field_detail[Constants::MODULE] = linking_module
635
+ module_name = linking_module
636
+ end
637
+ end
638
+ field_detail[Constants::SUBFORM] = true
639
+ end
640
+
641
+ if @@apitype_vs_structurename.include? data_type
642
+ field_detail[Constants::STRUCTURE_NAME] = @@apitype_vs_structurename[data_type]
643
+ end
644
+
645
+ if (field_instance.data_type.downcase == Constants::PICKLIST.downcase) && !field_instance.pick_list_values.nil? && !field_instance.pick_list_values.empty?
646
+ values = []
647
+
648
+ field_instance.pick_list_values.each do |pick_list_value|
649
+ values.push(pick_list_value.display_value)
650
+ end
651
+ field_detail[Constants::PICKLIST] = true
652
+ field_detail[Constants::VALUES] = values
653
+ end
654
+
655
+ if data_type.downcase == Constants::SUBFORM.downcase
656
+ module_name = field_instance.subform.module
657
+ field_detail[Constants::SUBFORM] = true
658
+ field_detail[Constants::SKIP_MANDATORY] = true
659
+ field_detail[Constants::MODULE] = module_name
660
+ end
661
+
662
+ if data_type.downcase == Constants::LOOKUP.downcase && !field_instance.lookup.nil?
663
+ module_name = field_instance.lookup.module
664
+ if !module_name.nil? && (module_name.downcase != Constants::SE_MODULE.downcase)
665
+ field_detail[Constants::MODULE] = module_name
666
+ if (module_name.downcase == Constants::ACCOUNTS.downcase) && !field_instance.custom_field
667
+ field_detail[Constants::SKIP_MANDATORY] = true
668
+ end
669
+ else
670
+ module_name = ''
671
+ end
672
+ field_detail[Constants::LOOKUP] = true
673
+ end
674
+ get_fields_info(module_name) if !module_name.nil? && !module_name.empty?
675
+ field_detail[Constants::NAME] = key_name
676
+ end
677
+
678
+ def self.get_modules(header)
679
+ api_names = {}
680
+ header_map = HeaderMap.new
681
+ unless header.nil?
682
+ header_value = Time.at(header.to_i / 1000).iso8601
683
+ header_map.add(Modules::ModulesOperations::GetModulesHeader.If_modified_since, header_value)
684
+ end
685
+ response = Modules::ModulesOperations.new.get_modules(header_map)
686
+
687
+ unless response.nil?
688
+ if [Constants::RESPONSECODE_NO_CONTENT, Constants::RESPONSECODE_NOT_MODIFIED].include? response.status_code
689
+ return api_names
690
+ end
691
+
692
+ if response.is_expected
693
+ response_object = response.data_object
694
+ if response_object.is_a? Modules::ResponseWrapper
695
+ modules = response_object.modules
696
+ modules.each do |module_ins|
697
+ if module_ins.api_supported
698
+ module_details = {}
699
+ module_details[Constants::API_NAME]=module_ins.api_name
700
+ module_details[Constants::GENERATED_TYPE]=module_ins.generated_type.value
701
+ api_names[module_ins.api_name.downcase] =module_details
702
+ end
703
+ end
704
+ elsif response_object.is_a? Modules::APIException
705
+ error_response = {}
706
+ error_response[Constants::CODE] = response_object.code.value
707
+ error_response[Constants::STATUS] = response_object.status.value
708
+ error_response[Constants::MESSAGE] = response_object.message.value
709
+ raise SDKException.new(Constants::API_EXCEPTION, nil, error_response)
710
+ end
711
+ end
712
+ end
713
+ if header.nil?
714
+ begin
715
+ initializer = Initializer.get_initializer
716
+ resoures_folder_path = initializer.resources_path + '/' + Constants::RESOURCES
717
+ Dir.mkdir resoures_folder_path unless File.exist? resoures_folder_path
718
+ record_field_details_path = get_record_json_file_path()
719
+ write_module_meta_data(record_field_details_path, api_names)
720
+ end
721
+ end
722
+ api_names
723
+ end
724
+
725
+ def self.check_related_list_exists(related_module_name, module_related_list_ja, common_api_handler)
726
+ (0..module_related_list_ja.length - 1).each do |i|
727
+ related_list_jo = module_related_list_ja[i]
728
+ if !related_list_jo[Constants::API_NAME].nil? && (related_list_jo[Constants::API_NAME].downcase == related_module_name.downcase)
729
+ if related_list_jo[Constants::HREF] == Constants::NULL_VALUE
730
+ raise SDKException.new(Constants::UNSUPPORTED_IN_API, common_api_handler.http_method + ' ' + common_api_handler.api_path + Constants::UNSUPPORTED_IN_API_MESSAGE)
731
+ end
732
+
733
+ if related_list_jo[Constants::MODULE] != Constants::NULL_VALUE
734
+ common_api_handler.module_api_name = related_list_jo[Constants::MODULE]
735
+ get_fields_info(related_list_jo[Constants::MODULE])
736
+ end
737
+ return true
738
+ end
739
+ end
740
+ false
741
+ end
742
+
743
+ def self.verify_photo_support(module_api_name)
744
+ @@sync_lock.synchronize do
745
+ begin
746
+ module_api_name = verify_module_api_name(module_api_name)
747
+ if Constants::PHOTO_SUPPORTED_MODULES.include? module_api_name.downcase
748
+ return true
749
+ end
750
+ modules = get_module_names()
751
+
752
+ if modules.key? module_api_name.downcase || !modules[module_api_name.downcase].nil?
753
+ module_meta_data = modules[module_api_name.downcase]
754
+
755
+ if module_meta_data.key? Constants::GENERATED_TYPE && module_meta_data[Constants::GENERATED_TYPE] != Constants::GENERATED_TYPE_CUSTOM
756
+ raise SDKException.new(Constants::UPLOAD_PHOTO_UNSUPPORTED_ERROR,Constants::UPLOAD_PHOTO_UNSUPPORTED_MESSAGE + module_api_name)
757
+ end
758
+ end
759
+ rescue SDKException => e
760
+ raise e
761
+ rescue StandardError => e
762
+ ex = SDKException.new(nil, Constants::EXCEPTION, nil, e)
763
+ SDKLog::SDKLogger.severe(Constants::EXCEPTION, ex)
764
+ raise ex
765
+ end
766
+ return true
767
+ end
768
+ end
769
+
770
+ def self.get_module_names()
771
+ module_data = {}
772
+ initializer = Initializer.get_initializer
773
+ resoures_folder_path = initializer.resources_path + '/' + Constants::RESOURCES
774
+ Dir.mkdir resoures_folder_path unless File.exist? resoures_folder_path
775
+
776
+ record_field_details_path = get_record_json_file_path()
777
+
778
+ call_get_modules = false
779
+ if File.exists? record_field_details_path
780
+ json = JSON.parse(File.read(record_field_details_path))
781
+ if !json.key? Constants::SDK_MODULE_METADATA
782
+ call_get_modules = true
783
+ elsif json[Constants::SDK_MODULE_METADATA].nil? || json[Constants::SDK_MODULE_METADATA].length == 0
784
+ call_get_modules = true
785
+ end
786
+ else
787
+ call_get_modules = true
788
+ end
789
+ if call_get_modules
790
+ module_data = get_modules(nil)
791
+ write_module_meta_data(record_field_details_path, module_data)
792
+ return module_data
793
+ end
794
+ record_field_details_json = JSON.parse(File.read(record_field_details_path))
795
+ module_data = record_field_details_json[Constants::SDK_MODULE_METADATA]
796
+ return module_data
797
+ end
798
+
799
+ def self.write_module_meta_data(record_field_details_path, module_data)
800
+ field_details_json = (File.exist? record_field_details_path) ? JSON.parse(File.read(record_field_details_path)):{}
801
+ field_details_json[Constants::SDK_MODULE_METADATA] = module_data
802
+ File.open(record_field_details_path, 'w') do |f|
803
+ f.write(field_details_json.to_json)
804
+ end
805
+ end
806
+
807
+ def self.get_related_list_details(module_api_name)
808
+ rlo = RelatedLists::RelatedListsOperations.new(module_api_name)
809
+ response = rlo.get_related_lists
810
+ related_lists_ja = []
811
+ unless response.nil?
812
+ return related_lists_ja if response.status_code == Constants::RESPONSECODE_NO_CONTENT
813
+
814
+ if response.is_expected
815
+ response_handler = response.data_object
816
+ if response_handler.is_a? RelatedLists::ResponseWrapper
817
+ response_wrapper = response_handler
818
+ related_lists = response_wrapper.related_lists
819
+ related_lists.each do |related_list|
820
+ related_list_detail = {}
821
+ related_list_detail[Constants::API_NAME] = related_list.api_name
822
+ related_list_detail[Constants::MODULE] = related_list.module.nil? ? Constants::NULL_VALUE : related_list.module
823
+ related_list_detail[Constants::NAME] = related_list.name
824
+ related_list_detail[Constants::HREF] = related_list.href.nil? ? Constants::NULL_VALUE : related_list.href
825
+ related_lists_ja.push(related_list_detail)
826
+ end
827
+ elsif response_handler.is_a? RelatedLists::APIException
828
+ exception = response_handler
829
+ error_response = {}
830
+ error_response[Constants::CODE] = exception.code.value
831
+ error_response[Constants::STATUS] = exception.status.value
832
+ error_response[Constants::MESSAGE] = exception.message.value
833
+ raise SDKException.new(Constants::API_EXCEPTION, nil, error_response)
834
+ end
835
+ else
836
+ error_response = {}
837
+ error_response[Constants::CODE] = response.status_code
838
+ raise SDKException.new(Constants::API_EXCEPTION, nil, error_response)
839
+ end
840
+ end
841
+ related_lists_ja
842
+ end
843
+
844
+ def self.get_current_time_in_millis
845
+ (Time.now.to_f * 1000).to_i
846
+ end
847
+
848
+ def self.refresh_modules
849
+ @@force_refresh = true
850
+ get_fields_info(nil)
851
+ @@force_refresh = false
852
+ end
853
+
854
+ def self.classname_to_filename(class_name)
855
+ changed_class_name = ''
856
+ camel_case_split = (class_name.to_s.split(/([[:upper:]][[:lower:]]+)/)).delete_if(&:empty?)
857
+ camel_case_split.each_with_index do |each_name, i|
858
+ changed_class_name += Constants::UNDERSCORE if i.positive?
859
+ changed_class_name += each_name.to_s.downcase
860
+ end
861
+
862
+ changed_class_name
863
+ end
864
+
865
+ def self.class_to_load(class_path)
866
+ package_to_load = ''
867
+
868
+ class_path = class_path.to_s
869
+
870
+ split_names = class_path.split(Constants::DOT)
871
+
872
+ package_name_split = split_names[-2].to_s.split(Constants::UNDERSCORE)
873
+
874
+ package_name_split.each do |name|
875
+ name[0] = name[0].to_s.upcase
876
+ package_to_load += name
877
+ end
878
+
879
+ package_to_load += Constants::DOUBLE_COLON
880
+
881
+ package_to_load += split_names[-1]
882
+
883
+ package_to_load
884
+ end
885
+
886
+ def self.path_to_package(class_path)
887
+ if class_path.to_s.include? Constants::DOUBLE_COLON
888
+ name = Constants::PACKAGE_PREFIX
889
+ class_path = class_path.to_s
890
+ class_split = class_path.to_s.split(Constants::DOUBLE_COLON)
891
+ class_split[0] = classname_to_filename(class_split[0])
892
+ name += class_split[0] + Constants::DOT + class_split[1]
893
+ name
894
+ else
895
+ class_path
896
+ end
897
+ end
898
+
899
+ def self.check_data_type(value,type)
900
+ if value.nil?
901
+ return false
902
+ end
903
+ if type.downcase == Constants::OBJECT.downcase
904
+ return true
905
+ end
906
+ type = Constants::DATA_TYPE[type].downcase
907
+ class_name = value.class.name.downcase
908
+ if type == Constants::BOOLEAN.downcase
909
+ class_name = ([true, false].include? value) ? Constants::BOOLEAN.downcase : class_name
910
+ end
911
+ class_name == type
912
+ end
913
+ end
914
+ end