ZCRMSDK 2.0.0 → 3.0.0.beta
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/src/ZCRMSDK.rb +84 -1
- data/src/com/zoho/api/authenticator/oauth_token.rb +87 -31
- data/src/com/zoho/api/authenticator/store/db_store.rb +48 -28
- data/src/com/zoho/api/authenticator/store/file_store.rb +69 -21
- data/src/com/zoho/api/authenticator/store/token_store.rb +7 -0
- data/src/com/zoho/api/logger/sdk_logger.rb +18 -9
- data/src/com/zoho/crm/api/assignment_rules/api_exception.rb +121 -0
- data/src/com/zoho/crm/api/assignment_rules/assignment_rule.rb +215 -0
- data/src/com/zoho/crm/api/assignment_rules/assignment_rules_operations.rb +61 -0
- data/src/com/zoho/crm/api/assignment_rules/default_user.rb +80 -0
- data/src/com/zoho/crm/api/assignment_rules/response_handler.rb +10 -0
- data/src/com/zoho/crm/api/assignment_rules/response_wrapper.rb +63 -0
- data/src/com/zoho/crm/api/attachments/attachment.rb +4 -4
- data/src/com/zoho/crm/api/attachments/attachments_operations.rb +6 -6
- data/src/com/zoho/crm/api/blue_print/blue_print_operations.rb +2 -2
- data/src/com/zoho/crm/api/blue_print/escalation.rb +80 -0
- data/src/com/zoho/crm/api/blue_print/field.rb +1107 -0
- data/src/com/zoho/crm/api/blue_print/next_transition.rb +38 -0
- data/src/com/zoho/crm/api/blue_print/process_info.rb +4 -4
- data/src/com/zoho/crm/api/blue_print/transition.rb +19 -1
- data/src/com/zoho/crm/api/blue_print/validation_error.rb +57 -0
- data/src/com/zoho/crm/api/bulk_read/bulk_read_operations.rb +3 -3
- data/src/com/zoho/crm/api/bulk_read/criteria.rb +20 -0
- data/src/com/zoho/crm/api/bulk_read/query.rb +5 -4
- data/src/com/zoho/crm/api/bulk_write/bulk_write_operations.rb +3 -3
- data/src/com/zoho/crm/api/bulk_write/resource.rb +24 -4
- data/src/com/zoho/crm/api/contact_roles/contact_roles_operations.rb +7 -7
- data/src/com/zoho/crm/api/currencies/currencies_operations.rb +7 -7
- data/src/com/zoho/crm/api/custom_views/criteria.rb +5 -4
- data/src/com/zoho/crm/api/custom_views/custom_view.rb +100 -41
- data/src/com/zoho/crm/api/custom_views/custom_views_operations.rb +2 -2
- data/src/com/zoho/crm/api/custom_views/{shared_details.rb → shared_to.rb} +2 -2
- data/src/com/zoho/crm/api/dc/au_datacenter.rb +3 -3
- data/src/com/zoho/crm/api/dc/cn_datacenter.rb +3 -3
- data/src/com/zoho/crm/api/dc/datacenter.rb +3 -2
- data/src/com/zoho/crm/api/dc/eu_datacenter.rb +3 -3
- data/src/com/zoho/crm/api/dc/in_datacenter.rb +3 -3
- data/src/com/zoho/crm/api/dc/us_datacenter.rb +3 -3
- data/src/com/zoho/crm/api/email_templates/api_exception.rb +121 -0
- data/src/com/zoho/crm/api/email_templates/attachment.rb +118 -0
- data/src/com/zoho/crm/api/email_templates/email_template.rb +390 -0
- data/src/com/zoho/crm/api/email_templates/email_templates_operations.rb +61 -0
- data/src/com/zoho/crm/api/email_templates/response_handler.rb +10 -0
- data/src/com/zoho/crm/api/email_templates/response_wrapper.rb +83 -0
- data/src/com/zoho/crm/api/field_attachments/api_exception.rb +121 -0
- data/src/com/zoho/crm/api/field_attachments/body_wrapper.rb +62 -0
- data/src/com/zoho/crm/api/field_attachments/field_attachments_operations.rb +52 -0
- data/src/com/zoho/crm/api/field_attachments/file_body_wrapper.rb +64 -0
- data/src/com/zoho/crm/api/field_attachments/response_handler.rb +10 -0
- data/src/com/zoho/crm/api/fields/external.rb +99 -0
- data/src/com/zoho/crm/api/fields/field.rb +192 -38
- data/src/com/zoho/crm/api/fields/fields_operations.rb +2 -2
- data/src/com/zoho/crm/api/fields/history_tracking.rb +80 -0
- data/src/com/zoho/crm/api/fields/maps.rb +80 -0
- data/src/com/zoho/crm/api/fields/multi_select_lookup.rb +19 -0
- data/src/com/zoho/crm/api/fields/multi_user_lookup.rb +175 -0
- data/src/com/zoho/crm/api/fields/pick_list_value.rb +19 -0
- data/src/com/zoho/crm/api/fields/related_details.rb +19 -0
- data/src/com/zoho/crm/api/files/file_operations.rb +2 -2
- data/src/com/zoho/crm/api/initializer.rb +41 -16
- data/src/com/zoho/crm/api/inventory_templates/api_exception.rb +121 -0
- data/src/com/zoho/crm/api/inventory_templates/inventory_template.rb +352 -0
- data/src/com/zoho/crm/api/inventory_templates/inventory_templates_operations.rb +82 -0
- data/src/com/zoho/crm/api/inventory_templates/response_handler.rb +10 -0
- data/src/com/zoho/crm/api/inventory_templates/response_wrapper.rb +83 -0
- data/src/com/zoho/crm/api/layouts/layout.rb +38 -0
- data/src/com/zoho/crm/api/layouts/layouts_operations.rb +2 -2
- data/src/com/zoho/crm/api/layouts/section.rb +19 -0
- data/src/com/zoho/crm/api/modules/module.rb +57 -0
- data/src/com/zoho/crm/api/modules/modules_operations.rb +4 -4
- data/src/com/zoho/crm/api/notes/notes_operations.rb +7 -7
- data/src/com/zoho/crm/api/notification/notification_operations.rb +6 -6
- data/src/com/zoho/crm/api/org/org_operations.rb +2 -2
- data/src/com/zoho/crm/api/pipeline/action_handler.rb +10 -0
- data/src/com/zoho/crm/api/pipeline/action_response.rb +10 -0
- data/src/com/zoho/crm/api/pipeline/action_wrapper.rb +63 -0
- data/src/com/zoho/crm/api/pipeline/api_exception.rb +129 -0
- data/src/com/zoho/crm/api/pipeline/body_wrapper.rb +61 -0
- data/src/com/zoho/crm/api/pipeline/forecast_category.rb +80 -0
- data/src/com/zoho/crm/api/pipeline/pick_list_value.rb +175 -0
- data/src/com/zoho/crm/api/pipeline/pipeline.rb +213 -0
- data/src/com/zoho/crm/api/pipeline/pipeline_operations.rb +165 -0
- data/src/com/zoho/crm/api/pipeline/response_handler.rb +10 -0
- data/src/com/zoho/crm/api/pipeline/response_wrapper.rb +63 -0
- data/src/com/zoho/crm/api/pipeline/stage.rb +80 -0
- data/src/com/zoho/crm/api/pipeline/success_response.rb +123 -0
- data/src/com/zoho/crm/api/pipeline/transfer_action_handler.rb +10 -0
- data/src/com/zoho/crm/api/pipeline/transfer_action_response.rb +10 -0
- data/src/com/zoho/crm/api/pipeline/transfer_action_wrapper.rb +63 -0
- data/src/com/zoho/crm/api/pipeline/transfer_and_delete_wrapper.rb +61 -0
- data/src/com/zoho/crm/api/pipeline/transfer_pipe_line.rb +80 -0
- data/src/com/zoho/crm/api/profiles/default_view.rb +99 -0
- data/src/com/zoho/crm/api/profiles/profile.rb +57 -0
- data/src/com/zoho/crm/api/profiles/profiles_operations.rb +2 -2
- data/src/com/zoho/crm/api/query/query_operations.rb +1 -1
- data/src/com/zoho/crm/api/record/api_exception.rb +2 -0
- data/src/com/zoho/crm/api/record/body_wrapper.rb +0 -19
- data/src/com/zoho/crm/api/record/count_handler.rb +10 -0
- data/src/com/zoho/crm/api/record/count_wrapper.rb +63 -0
- data/src/com/zoho/crm/api/record/field.rb +1 -0
- data/src/com/zoho/crm/api/record/image_upload.rb +213 -0
- data/src/com/zoho/crm/api/record/inventory_line_items.rb +56 -39
- data/src/com/zoho/crm/api/record/mass_update_body_wrapper.rb +4 -4
- data/src/com/zoho/crm/api/record/mass_update_territory.rb +80 -0
- data/src/com/zoho/crm/api/record/multi_select_lookup.rb +99 -0
- data/src/com/zoho/crm/api/record/multi_select_picklist.rb +80 -0
- data/src/com/zoho/crm/api/record/price_book.rb +31 -0
- data/src/com/zoho/crm/api/record/record_operations.rb +196 -26
- data/src/com/zoho/crm/api/record/tax.rb +80 -0
- data/src/com/zoho/crm/api/record/territory.rb +70 -12
- data/src/com/zoho/crm/api/record/widget.rb +80 -0
- data/src/com/zoho/crm/api/record/wizard.rb +80 -0
- data/src/com/zoho/crm/api/related_lists/related_lists_operations.rb +2 -2
- data/src/com/zoho/crm/api/related_records/related_records_operations.rb +6 -6
- data/src/com/zoho/crm/api/request_proxy.rb +3 -4
- data/src/com/zoho/crm/api/roles/roles_operations.rb +2 -2
- data/src/com/zoho/crm/api/sdk_config.rb +2 -68
- data/src/com/zoho/crm/api/send_mail/action_handler.rb +10 -0
- data/src/com/zoho/crm/api/send_mail/action_response.rb +10 -0
- data/src/com/zoho/crm/api/send_mail/action_wrapper.rb +63 -0
- data/src/com/zoho/crm/api/send_mail/api_exception.rb +125 -0
- data/src/com/zoho/crm/api/send_mail/body_wrapper.rb +61 -0
- data/src/com/zoho/crm/api/send_mail/data_subject_request.rb +80 -0
- data/src/com/zoho/crm/api/send_mail/inventory_details.rb +100 -0
- data/src/com/zoho/crm/api/send_mail/mail.rb +423 -0
- data/src/com/zoho/crm/api/send_mail/response_handler.rb +10 -0
- data/src/com/zoho/crm/api/send_mail/response_wrapper.rb +63 -0
- data/src/com/zoho/crm/api/send_mail/send_mail_operations.rb +61 -0
- data/src/com/zoho/crm/api/send_mail/success_response.rb +121 -0
- data/src/com/zoho/crm/api/send_mail/template.rb +10 -0
- data/src/com/zoho/crm/api/send_mail/user_address.rb +137 -0
- data/src/com/zoho/crm/api/share_records/share_records_operations.rb +4 -4
- data/src/com/zoho/crm/api/tags/tag.rb +19 -0
- data/src/com/zoho/crm/api/tags/tags_operations.rb +11 -11
- data/src/com/zoho/crm/api/taxes/taxes_operations.rb +6 -6
- data/src/com/zoho/crm/api/territories/response_wrapper.rb +20 -0
- data/src/com/zoho/crm/api/territories/territories_operations.rb +2 -2
- data/src/com/zoho/crm/api/territories/territory.rb +61 -23
- data/src/com/zoho/crm/api/users/users_operations.rb +6 -6
- data/src/com/zoho/crm/api/util/api_http_connector.rb +5 -4
- data/src/com/zoho/crm/api/util/constants.rb +140 -13
- data/src/com/zoho/crm/api/util/converter.rb +21 -4
- data/src/com/zoho/crm/api/util/form_data_converter.rb +3 -14
- data/src/com/zoho/crm/api/util/utility.rb +226 -70
- data/src/com/zoho/crm/api/variable_groups/variable_groups_operations.rb +3 -3
- data/src/com/zoho/crm/api/variables/variables_operations.rb +9 -9
- data/src/com/zoho/crm/api/wizards/api_exception.rb +121 -0
- data/src/com/zoho/crm/api/wizards/button.rb +214 -0
- data/src/com/zoho/crm/api/wizards/chart_data.rb +118 -0
- data/src/com/zoho/crm/api/wizards/connection.rb +80 -0
- data/src/com/zoho/crm/api/wizards/container.rb +119 -0
- data/src/com/zoho/crm/api/wizards/node.rb +118 -0
- data/src/com/zoho/crm/api/wizards/response_handler.rb +10 -0
- data/src/com/zoho/crm/api/wizards/response_wrapper.rb +63 -0
- data/src/com/zoho/crm/api/wizards/screen.rb +99 -0
- data/src/com/zoho/crm/api/wizards/segment.rb +176 -0
- data/src/com/zoho/crm/api/wizards/wizard.rb +273 -0
- data/src/com/zoho/crm/api/wizards/wizards_operations.rb +61 -0
- data/src/resources/JSONDetails.json +1 -1
- data/src/version.rb +1 -1
- metadata +88 -5
@@ -56,7 +56,23 @@ module Util
|
|
56
56
|
check = true
|
57
57
|
|
58
58
|
unless value.nil?
|
59
|
-
|
59
|
+
if key_details.key? Constants::INTERFACE and key_details[Constants::INTERFACE] == true
|
60
|
+
json_details = Initializer.get_initializer.json_details
|
61
|
+
interface_details = json_details[key_details[Constants::STRUCTURE_NAME]]
|
62
|
+
classes = interface_details[Constants::CLASSES]
|
63
|
+
check = false
|
64
|
+
classes.each do |each_class_name|
|
65
|
+
class_name_lower = each_class_name.to_s.downcase
|
66
|
+
value_class_name = til::Utility.path_to_package(value.class.name).downcase
|
67
|
+
|
68
|
+
if class_name_lower.downcase == value_class_name
|
69
|
+
check = true
|
70
|
+
break
|
71
|
+
end
|
72
|
+
end
|
73
|
+
else
|
74
|
+
var_type = value.class.name
|
75
|
+
end
|
60
76
|
end
|
61
77
|
|
62
78
|
if Constants::DATA_TYPE.key? type
|
@@ -70,7 +86,6 @@ module Util
|
|
70
86
|
instance_number = index
|
71
87
|
type = Constants::LIST_NAMESPACE + '(' + structure_name + ')'
|
72
88
|
var_type = Constants::LIST_NAMESPACE + '(' + class_name + ')'
|
73
|
-
expected_list_type = false
|
74
89
|
check = false
|
75
90
|
|
76
91
|
break
|
@@ -108,7 +123,9 @@ module Util
|
|
108
123
|
|
109
124
|
if key_details.key?(Constants::VALUES) && (!key_details.key?(Constants::PICKLIST) || (key_details[Constants::PICKLIST] && Initializer.get_initializer.sdk_config.pick_list_validation))
|
110
125
|
value = value.value if value.is_a? Util::Choice
|
111
|
-
|
126
|
+
|
127
|
+
values_ja = key_details[Constants::VALUES]
|
128
|
+
unless values_ja.include? value
|
112
129
|
|
113
130
|
unless instance_number.nil?
|
114
131
|
error[Constants::INDEX] = instance_number
|
@@ -120,7 +137,7 @@ module Util
|
|
120
137
|
|
121
138
|
error[Constants::ERROR_HASH_FIELD] = member_name
|
122
139
|
|
123
|
-
error[Constants::ACCEPTED_VALUES] =
|
140
|
+
error[Constants::ACCEPTED_VALUES] = values_ja
|
124
141
|
|
125
142
|
raise SDKException.new(Constants::UNACCEPTED_VALUES_ERROR, nil, error, nil)
|
126
143
|
end
|
@@ -13,10 +13,10 @@ module Util
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def append_to_request(request_base, request_object)
|
16
|
-
request_base.set_form(
|
16
|
+
request_base.set_form(set_file_body(request_object), Constants::MULTIPART_FORM_DATA) if request_object.is_a?(Hash)
|
17
17
|
end
|
18
18
|
|
19
|
-
def
|
19
|
+
def set_file_body(request_object)
|
20
20
|
data = []
|
21
21
|
request_object.each do |key, value|
|
22
22
|
if value.is_a? Array
|
@@ -38,18 +38,7 @@ module Util
|
|
38
38
|
|
39
39
|
def form_request(request_instance, class_path, instance_no, member_json_details = nil)
|
40
40
|
require_relative '../initializer'
|
41
|
-
|
42
|
-
path = @common_api_handler.api_path.split("/")
|
43
|
-
if path.length == 6
|
44
|
-
module_api_name = path[3].downcase
|
45
|
-
if path[1].downcase == Constants::CRM && path[2].downcase == Constants::API_VERSION && path[5].downcase == Constants::PHOTO && !(Constants::PHOTO_SUPPORTED_MODULES.include? module_api_name)
|
46
|
-
api_supported_module = Utility::api_supported_module
|
47
|
-
if api_supported_module.key?(module_api_name) && api_supported_module[module_api_name].downcase != "custom"
|
48
|
-
raise SDKException.new(Constants::INVALID_MODULE, Constants::PHOTO_UPLOAD_ERROR_MESSAGE)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
41
|
+
|
53
42
|
package_name = Utility.path_to_package(class_path)
|
54
43
|
class_details = Initializer.json_details[package_name]
|
55
44
|
request_hash = {}
|
@@ -22,17 +22,78 @@ module Util
|
|
22
22
|
|
23
23
|
@@apitype_vs_structurename = {}
|
24
24
|
|
25
|
-
@@api_supported_module ={}
|
26
|
-
|
27
25
|
@@new_file = false
|
28
26
|
|
29
27
|
@@get_modified_modules = false
|
30
28
|
|
31
29
|
@@force_refresh = false
|
32
|
-
def self.
|
33
|
-
|
30
|
+
def self.set_handler_api_path(module_api_name, handler_instance)
|
31
|
+
if handler_instance.nil?
|
32
|
+
return
|
33
|
+
end
|
34
|
+
api_path = handler_instance.api_path
|
35
|
+
if module_api_name.downcase == api_path.downcase
|
36
|
+
api_path_split = api_path.split('/')
|
37
|
+
api_path_split.each do |api_path_split|
|
38
|
+
split_lower = api_path_split[i].downcase
|
39
|
+
if split_lower == module_api_name.downcase
|
40
|
+
api_path_splits[i] = module_api_name
|
41
|
+
elsif Constants::DEFAULT_MODULENAME_VS_APINAME.key? split_lower && !Constants::DEFAULT_MODULENAME_VS_APINAME[split_lower].nil?
|
42
|
+
api_path_splits[i] = Constants::DEFAULT_MODULENAME_VS_APINAME[split_lower]
|
43
|
+
end
|
44
|
+
api_path = api_path_splits.join("/")
|
45
|
+
handler_instance.api_path = api_path
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def self.file_exists_flow(module_api_name,record_field_details_path,last_modified_time)
|
51
|
+
@@sync_lock.synchronize do
|
52
|
+
initializer = Initializer.get_initializer
|
53
|
+
record_field_details_json = JSON.parse(File.read(record_field_details_path))
|
54
|
+
last_modified_time_exists = false
|
55
|
+
if record_field_details_json.key?(Constants::FIELDS_LAST_MODIFIED_TIME) && !record_field_details_json[Constants::FIELDS_LAST_MODIFIED_TIME].nil?
|
56
|
+
if get_current_time_in_millis - record_field_details_json[Constants::FIELDS_LAST_MODIFIED_TIME] > 3_600_000
|
57
|
+
last_modified_time_exists = true
|
58
|
+
end
|
59
|
+
end
|
60
|
+
if !record_field_details_json.key?(Constants::FIELDS_LAST_MODIFIED_TIME) || @@force_refresh
|
61
|
+
last_modified_time_exists = true
|
62
|
+
end
|
63
|
+
|
64
|
+
if initializer.sdk_config.auto_refresh_fields && !@@new_file && !@@get_modified_modules && last_modified_time_exists
|
65
|
+
@@get_modified_modules = true
|
66
|
+
last_modified_time = (record_field_details_json.key? Constants::FIELDS_LAST_MODIFIED_TIME) ? record_field_details_json[Constants::FIELDS_LAST_MODIFIED_TIME] : nil
|
67
|
+
modify_fields(record_field_details_path, last_modified_time)
|
68
|
+
@@get_modified_modules = false
|
69
|
+
elsif !initializer.sdk_config.auto_refresh_fields && @@force_refresh && !@@get_modified_modules
|
70
|
+
@@get_modified_modules = true
|
71
|
+
modify_fields(record_field_details_path, last_modified_time)
|
72
|
+
@@get_modified_modules = false
|
73
|
+
end
|
74
|
+
|
75
|
+
record_field_details_json = JSON.parse(File.read(record_field_details_path))
|
76
|
+
return if module_api_name.nil? || record_field_details_json.key?(module_api_name.downcase)
|
77
|
+
|
78
|
+
fill_data_type
|
79
|
+
|
80
|
+
record_field_details_json[module_api_name.downcase] = {}
|
81
|
+
|
82
|
+
File.open(record_field_details_path, 'w') do |f|
|
83
|
+
f.write(record_field_details_json.to_json)
|
84
|
+
end
|
85
|
+
field_details = get_fields_details(module_api_name)
|
86
|
+
record_field_details_json = JSON.parse(File.read(record_field_details_path))
|
87
|
+
|
88
|
+
record_field_details_json[module_api_name.downcase] = field_details
|
89
|
+
|
90
|
+
File.open(record_field_details_path, 'w') do |f|
|
91
|
+
f.write(record_field_details_json.to_json)
|
92
|
+
end
|
93
|
+
end
|
34
94
|
end
|
35
|
-
|
95
|
+
|
96
|
+
def self.get_fields(module_api_name, handler_instance=nil)
|
36
97
|
require_relative '../initializer'
|
37
98
|
initializer = Initializer.get_initializer
|
38
99
|
record_field_details_path = nil
|
@@ -46,62 +107,25 @@ module Util
|
|
46
107
|
|
47
108
|
Dir.mkdir resoures_folder_path unless File.exist? resoures_folder_path
|
48
109
|
record_field_details_path = get_record_json_file_path
|
49
|
-
|
110
|
+
module_api_name = verify_module_api_name(module_api_name)
|
111
|
+
set_handler_api_path(module_api_name,handler_instance)
|
112
|
+
|
50
113
|
if File.exist? record_field_details_path
|
51
|
-
|
52
|
-
last_modified_time_exists = false
|
53
|
-
if @@force_refresh
|
54
|
-
if record_field_details_json.key?(Constants::FIELDS_LAST_MODIFIED_TIME) && !record_field_details_json[Constants::FIELDS_LAST_MODIFIED_TIME].nil?
|
55
|
-
if get_current_time_in_millis - record_field_details_json[Constants::FIELDS_LAST_MODIFIED_TIME] > 3_600_000
|
56
|
-
last_modified_time_exists = true
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
if initializer.sdk_config.auto_refresh_fields && !@@new_file && !@@get_modified_modules && last_modified_time_exists
|
61
|
-
@@get_modified_modules = true
|
62
|
-
last_modified_time = (record_field_details_json.key? Constants::FIELDS_LAST_MODIFIED_TIME) ? record_field_details_json[Constants::FIELDS_LAST_MODIFIED_TIME] : nil
|
63
|
-
modify_fields(record_field_details_path, last_modified_time)
|
64
|
-
@@get_modified_modules = false
|
65
|
-
elsif !initializer.sdk_config.auto_refresh_fields && @@force_refresh && !@@get_modified_modules
|
66
|
-
@@get_modified_modules = true
|
67
|
-
modify_fields(record_field_details_path, last_modified_time)
|
68
|
-
@@get_modified_modules = false
|
69
|
-
end
|
70
|
-
|
71
|
-
record_field_details_json = JSON.parse(File.read(record_field_details_path))
|
72
|
-
return if module_api_name.nil? || record_field_details_json.key?(module_api_name.downcase)
|
73
|
-
|
74
|
-
fill_data_type
|
75
|
-
|
76
|
-
record_field_details_json[module_api_name.downcase] = {}
|
77
|
-
|
78
|
-
File.open(record_field_details_path, 'w') do |f|
|
79
|
-
f.write(record_field_details_json.to_json)
|
80
|
-
end
|
81
|
-
field_details = get_fields_details(module_api_name)
|
82
|
-
record_field_details_json = JSON.parse(File.read(record_field_details_path))
|
83
|
-
|
84
|
-
record_field_details_json[module_api_name.downcase] = field_details
|
85
|
-
|
86
|
-
File.open(record_field_details_path, 'w') do |f|
|
87
|
-
f.write(record_field_details_json.to_json)
|
88
|
-
end
|
89
|
-
|
114
|
+
file_exists_flow(module_api_name,record_field_details_path,last_modified_time)
|
90
115
|
elsif initializer.sdk_config.auto_refresh_fields
|
91
116
|
@@new_file = true
|
92
117
|
fill_data_type
|
93
|
-
|
94
|
-
|
95
|
-
end
|
118
|
+
api_supported_modules = get_modules(nil)
|
119
|
+
record_field_details_json = File.exist? record_field_details_path ? JSON.parse(File.read(record_field_details_path)) : {}
|
96
120
|
|
97
121
|
record_field_details_json = { Constants::FIELDS_LAST_MODIFIED_TIME => get_current_time_in_millis }
|
98
|
-
|
122
|
+
api_supported_modules.each_key do |module_name|
|
99
123
|
unless record_field_details_json.key? module_name.downcase
|
100
124
|
record_field_details_json[module_name.downcase] = {}
|
101
125
|
File.open(record_field_details_path, 'w') do |f|
|
102
126
|
f.write(record_field_details_json.to_json)
|
103
127
|
end
|
104
|
-
field_details = get_fields_details(module_name)
|
128
|
+
field_details = get_fields_details(api_supported_modules[module_name][Constants::API_NAME])
|
105
129
|
record_field_details_json = JSON.parse(File.read(record_field_details_path))
|
106
130
|
record_field_details_json[module_name.downcase] = field_details
|
107
131
|
File.open(record_field_details_path, 'w') do |f|
|
@@ -189,10 +213,30 @@ module Util
|
|
189
213
|
f.write(record_field_details_json.to_json)
|
190
214
|
end
|
191
215
|
modified_modules.each_key do |module_api_name|
|
192
|
-
|
216
|
+
module_data = modified_modules[module_api_name]
|
217
|
+
get_fields(module_data[Constants::API_NAME])
|
193
218
|
end
|
194
219
|
end
|
195
220
|
|
221
|
+
def self.verify_module_api_name(module_api_name)
|
222
|
+
|
223
|
+
if !module_api_name.nil?
|
224
|
+
if Constants::DEFAULT_MODULENAME_VS_APINAME.key? (module_api_name.downcase) && !Constants::DEFAULT_MODULENAME_VS_APINAME[module_api_name.downcase].nil?
|
225
|
+
return Constants::DEFAULT_MODULENAME_VS_APINAME[module_api_name.downcase]
|
226
|
+
end
|
227
|
+
end
|
228
|
+
|
229
|
+
record_field_details_path = get_record_json_file_path
|
230
|
+
|
231
|
+
if File.exist? record_field_details_path
|
232
|
+
fields_json = JSON.parse(File.open(record_field_details_path).read)
|
233
|
+
if fields_json.key? Constants::SDK_MODULE_METADATA and fields_json[Constants::SDK_MODULE_METADATA].key? module_api_name.downcase
|
234
|
+
return fields_json[Constants::SDK_MODULE_METADATA][module_api_name.downcase][Constants::API_NAME]
|
235
|
+
end
|
236
|
+
end
|
237
|
+
return module_api_name
|
238
|
+
end
|
239
|
+
|
196
240
|
def self.delete_fields(record_field_details_json, module_api_name)
|
197
241
|
subform_modules = []
|
198
242
|
|
@@ -233,9 +277,10 @@ module Util
|
|
233
277
|
if !File.exist?(record_field_details_path) || (File.exist?(record_field_details_path) && !(JSON.parse(File.read(record_field_details_path)).key? key))
|
234
278
|
is_new_data = true
|
235
279
|
related_list_values = get_related_list_details(module_api_name)
|
236
|
-
|
237
|
-
if File.exist? record_field_details_path
|
280
|
+
if File.exist? (record_field_details_path)
|
238
281
|
record_field_details_json = JSON.parse(File.read(record_field_details_path))
|
282
|
+
else
|
283
|
+
record_field_details_json = {}
|
239
284
|
end
|
240
285
|
record_field_details_json[key] = related_list_values
|
241
286
|
File.open(record_field_details_path, 'w') do |f|
|
@@ -253,6 +298,7 @@ module Util
|
|
253
298
|
end
|
254
299
|
rescue SDKException => e
|
255
300
|
SDKLog::SDKLogger.severe(Constants::EXCEPTION, e)
|
301
|
+
raise e
|
256
302
|
rescue StandardError => e
|
257
303
|
ex = SDKException.new(nil, Constants::EXCEPTION, nil, e)
|
258
304
|
SDKLog::SDKLogger.severe(Constants::EXCEPTION, ex)
|
@@ -347,12 +393,11 @@ module Util
|
|
347
393
|
def self.fill_data_type
|
348
394
|
return unless @@apitype_vs_datatype.empty?
|
349
395
|
|
350
|
-
field_api_names_string = %w[autonumber textarea text website email phone mediumtext
|
396
|
+
field_api_names_string = %w[autonumber textarea text website email phone mediumtext profileimage]
|
351
397
|
field_api_names_integer = %w[integer]
|
352
398
|
field_api_names_boolean = %w[boolean]
|
353
399
|
field_api_names_long = %w[bigint long]
|
354
400
|
field_api_names_double = %w[double percent lookup currency]
|
355
|
-
field_api_names_file = %w[imageupload]
|
356
401
|
field_api_names_field_file = %w[fileupload]
|
357
402
|
field_api_names_datetime = %w[datetime event_reminder]
|
358
403
|
field_api_names_date = %w[date]
|
@@ -367,6 +412,8 @@ module Util
|
|
367
412
|
field_api_names_recurring_activity = %w[RRULE]
|
368
413
|
field_api_names_reminder = %w[multireminder]
|
369
414
|
field_api_names_consent_look_up = %w[consent_lookup]
|
415
|
+
field_api_name_image_upload = %w["imageupload"]
|
416
|
+
field_api_name_multiselect_lookup = %w["multiselectlookup"]
|
370
417
|
|
371
418
|
field_api_names_string.each do |field_api_name|
|
372
419
|
@@apitype_vs_datatype[field_api_name] = Constants::STRING
|
@@ -388,10 +435,6 @@ module Util
|
|
388
435
|
@@apitype_vs_datatype[field_api_name] = Constants::LONG
|
389
436
|
end
|
390
437
|
|
391
|
-
field_api_names_file.each do |field_api_name|
|
392
|
-
@@apitype_vs_datatype[field_api_name] = Constants::FILE_NAMESPACE
|
393
|
-
end
|
394
|
-
|
395
438
|
field_api_names_field_file.each do |field_api_name|
|
396
439
|
@@apitype_vs_datatype[field_api_name] = Constants::LIST_NAMESPACE
|
397
440
|
@@apitype_vs_structurename[field_api_name] = Constants::FIELD_FILE_NAMESPACE
|
@@ -435,7 +478,7 @@ module Util
|
|
435
478
|
field_api_names_multiuser_lookup.each do |field_api_name|
|
436
479
|
@@apitype_vs_datatype[field_api_name] = Constants::LIST_NAMESPACE
|
437
480
|
|
438
|
-
@@apitype_vs_structurename[field_api_name] = Constants::
|
481
|
+
@@apitype_vs_structurename[field_api_name] = Constants::RECORD_NAMESPACE
|
439
482
|
end
|
440
483
|
|
441
484
|
field_api_names_multimodule_lookup.each do |field_api_name|
|
@@ -465,6 +508,15 @@ module Util
|
|
465
508
|
|
466
509
|
@@apitype_vs_structurename[field_api_name] = Constants::CONSENT_NAMESPACE
|
467
510
|
end
|
511
|
+
|
512
|
+
field_api_name_image_upload.each do |field_api_name|
|
513
|
+
@@apitype_vs_datatype[field_api_name] = Constants::LIST_NAMESPACE
|
514
|
+
@@apitype_vs_structurename[field_api_name] = Constants::IMAGEUPLOAD_NAMESPACE
|
515
|
+
end
|
516
|
+
field_api_name_multiselect_lookup.each do |field_api_name|
|
517
|
+
@@apitype_vs_datatype[field_api_name] = Constants::LIST_NAMESPACE
|
518
|
+
@@apitype_vs_structurename[field_api_name] = Constants::RECORD_NAMESPACE
|
519
|
+
end
|
468
520
|
end
|
469
521
|
|
470
522
|
def self.set_data_type(field_detail, field_instance, module_api_name)
|
@@ -478,7 +530,8 @@ module Util
|
|
478
530
|
if !field_instance.system_mandatory.nil? && field_instance.system_mandatory && !((module_api_name == Constants::CALLS.downcase) && (key_name.downcase == Constants::CALL_DURATION.downcase))
|
479
531
|
field_detail[Constants::REQUIRED] = true
|
480
532
|
end
|
481
|
-
|
533
|
+
|
534
|
+
if Constants::KEY_VS_INVENTORY_MODULE.key?(key_name) && (module_api_name.downcase == Constants::KEY_VS_INVENTORY_MODULE[key_name].downcase)
|
482
535
|
field_detail[Constants::NAME] = key_name
|
483
536
|
field_detail[Constants::TYPE] = Constants::LIST_NAMESPACE
|
484
537
|
field_detail[Constants::STRUCTURE_NAME] = Constants::INVENTORY_LINE_ITEMS
|
@@ -498,7 +551,7 @@ module Util
|
|
498
551
|
return
|
499
552
|
elsif (key_name.downcase == Constants::COMMENTS.downcase) && ((module_api_name == Constants::SOLUTIONS.downcase) || (module_api_name == Constants::CASES.downcase))
|
500
553
|
field_detail[Constants::NAME] = key_name
|
501
|
-
field_detail[Constants::TYPE] = Constants::
|
554
|
+
field_detail[Constants::TYPE] = Constants::LIST_NAMESPACE
|
502
555
|
field_detail[Constants::STRUCTURE_NAME] = Constants::COMMENTS_NAMESPACE
|
503
556
|
field_detail[Constants::LOOKUP] = true
|
504
557
|
return
|
@@ -508,6 +561,17 @@ module Util
|
|
508
561
|
field_detail[Constants::LOOKUP] = true
|
509
562
|
field_detail[Constants::STRUCTURE_NAME] = Constants::LAYOUT_NAMESPACE
|
510
563
|
return
|
564
|
+
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
|
565
|
+
field_detail[Constants::NAME] = key_name
|
566
|
+
field_detail[Constants::TYPE] = Constants::LIST_NAMESPACE
|
567
|
+
field_detail[Constants::STRUCTURE_NAME] = Constants::TERRITORY_NAMESPACE
|
568
|
+
field_detail[Constants::LOOKUP] = true
|
569
|
+
return
|
570
|
+
elsif key_name.downcase() == Constants::TAX.downcase and module_api_name.downcase() == Constants::PRODUCTS.downcase
|
571
|
+
field_detail[Constants::NAME] = key_name
|
572
|
+
field_detail[Constants::TYPE] = Constants::LIST_NAMESPACE
|
573
|
+
field_detail[Constants::STRUCTURE_NAME] = Constants::TAX_NAMESPACE
|
574
|
+
return
|
511
575
|
elsif @@apitype_vs_datatype.include? data_type
|
512
576
|
field_detail[Constants::TYPE] = @@apitype_vs_datatype[data_type]
|
513
577
|
elsif data_type.downcase == Constants::FORMULA.downcase
|
@@ -524,6 +588,31 @@ module Util
|
|
524
588
|
field_detail[Constants::LOOKUP] = true if data_type.downcase.include? Constants::LOOKUP
|
525
589
|
field_detail[Constants::SKIP_MANDATORY] = true if data_type.downcase.include? Constants::CONSENT_LOOKUP
|
526
590
|
|
591
|
+
|
592
|
+
if data_type.downcase.include? Constants::MULTI_SELECT_LOOKUP
|
593
|
+
field_detail[Constants::SKIP_MANDATORY] = true
|
594
|
+
if !field.multiselectlookup.nil?
|
595
|
+
if !field.multiselectlookup.linking_module.nil?
|
596
|
+
linking_module = field.multiselectlookup.linking_module
|
597
|
+
field_detail[Constants::MODULE] = linking_module
|
598
|
+
module_name = linking_module
|
599
|
+
end
|
600
|
+
end
|
601
|
+
field_detail[Constants::SUBFORM] = true
|
602
|
+
end
|
603
|
+
|
604
|
+
if data_type.downcase.include? Constants::MULTI_USER_LOOKUP
|
605
|
+
field_detail[Constants::SKIP_MANDATORY] = true
|
606
|
+
if !field.multiuserlookup.nil?
|
607
|
+
if !field.multiuserlookup.linking_module.nil?
|
608
|
+
linking_module = field.multiuserlookup.linking_module
|
609
|
+
field_detail[Constants::MODULE] = linking_module
|
610
|
+
module_name = linking_module
|
611
|
+
end
|
612
|
+
end
|
613
|
+
field_detail[Constants::SUBFORM] = true
|
614
|
+
end
|
615
|
+
|
527
616
|
if @@apitype_vs_structurename.include? data_type
|
528
617
|
field_detail[Constants::STRUCTURE_NAME] = @@apitype_vs_structurename[data_type]
|
529
618
|
end
|
@@ -560,13 +649,8 @@ module Util
|
|
560
649
|
get_fields(module_name) if !module_name.nil? && !module_name.empty?
|
561
650
|
field_detail[Constants::NAME] = key_name
|
562
651
|
end
|
563
|
-
|
564
|
-
def self.get_modules
|
565
|
-
@@sync_lock.synchronize do
|
566
|
-
@@api_supported_module = get_modules_api_names(nil)
|
567
|
-
end
|
568
|
-
end
|
569
|
-
def self.get_modules_api_names(header)
|
652
|
+
|
653
|
+
def self.get_modules(header)
|
570
654
|
api_names = {}
|
571
655
|
header_map = HeaderMap.new
|
572
656
|
unless header.nil?
|
@@ -585,7 +669,12 @@ module Util
|
|
585
669
|
if response_object.is_a? Modules::ResponseWrapper
|
586
670
|
modules = response_object.modules
|
587
671
|
modules.each do |module_ins|
|
588
|
-
|
672
|
+
if module_ins.api_supported
|
673
|
+
module_details = {}
|
674
|
+
module_details[Constants::API_NAME] = module_ins.api_name
|
675
|
+
module_details[Constants::GENERATED_TYPE] = module_ins.generated_type.value
|
676
|
+
api_names[module_ins.api_name.downcase] = module_details
|
677
|
+
end
|
589
678
|
end
|
590
679
|
elsif response_object.is_a? Modules::APIException
|
591
680
|
error_response = {}
|
@@ -596,6 +685,13 @@ module Util
|
|
596
685
|
end
|
597
686
|
end
|
598
687
|
end
|
688
|
+
if @@force_refresh
|
689
|
+
begin
|
690
|
+
write_module_meta_data(get_record_json_file_path, api_names)
|
691
|
+
rescue StandardError => e
|
692
|
+
raise SDKException.new(Constants::EXCEPTION,e)
|
693
|
+
end
|
694
|
+
end
|
599
695
|
api_names
|
600
696
|
end
|
601
697
|
|
@@ -617,6 +713,66 @@ module Util
|
|
617
713
|
false
|
618
714
|
end
|
619
715
|
|
716
|
+
def self.verify_photo_support(module_api_name)
|
717
|
+
@@sync_lock.synchronize do
|
718
|
+
begin
|
719
|
+
module_api_name = verify_module_api_name(module_api_name)
|
720
|
+
if Constants::PHOTO_SUPPORTED_MODULES.key? module_api_name
|
721
|
+
return true
|
722
|
+
end
|
723
|
+
modules = get_module_names()
|
724
|
+
if modules.key? module_api_name.downcase || !modules[module_api_name.downcase].nil?
|
725
|
+
module_meta_data = modules[module_api_name.downcase]
|
726
|
+
|
727
|
+
if module_meta_data[Constants::GENERATED_TYPE] != Constants::GENERATED_TYPE_CUSTOM
|
728
|
+
raise SDKException.new(Constants::UPLOAD_PHOTO_UNSUPPORTED_ERROR,Constants::UPLOAD_PHOTO_UNSUPPORTED_MESSAGE + module_api_name)
|
729
|
+
end
|
730
|
+
end
|
731
|
+
rescue SDKException => e
|
732
|
+
raise e
|
733
|
+
rescue StandardError => e
|
734
|
+
ex = SDKException.new(nil, Constants::EXCEPTION, nil, e)
|
735
|
+
SDKLog::SDKLogger.severe(Constants::EXCEPTION, ex)
|
736
|
+
raise ex
|
737
|
+
end
|
738
|
+
return true
|
739
|
+
end
|
740
|
+
end
|
741
|
+
|
742
|
+
def self.get_module_names()
|
743
|
+
module_data = {}
|
744
|
+
resoures_folder_path = initializer.resources_path + '/' + Constants::RESOURCES
|
745
|
+
Dir.mkdir resoures_folder_path unless File.exist? resoures_folder_path
|
746
|
+
|
747
|
+
record_field_details_path = get_record_json_file_path
|
748
|
+
|
749
|
+
is_null = false
|
750
|
+
if File.exists? record_field_details_path
|
751
|
+
json = JSON.parse(File.read(record_field_details_path))
|
752
|
+
if !json.key? Constants::SDK_MODULE_METADATA
|
753
|
+
is_null = true
|
754
|
+
elsif json[Constants::SDK_MODULE_METADATA].nil?
|
755
|
+
is_null = true
|
756
|
+
end
|
757
|
+
end
|
758
|
+
if !File.exists? os.path.exists(record_field_details_path) || is_null
|
759
|
+
module_data = get_modules(nil)
|
760
|
+
write_module_meta_data(record_field_details_path, module_data)
|
761
|
+
return module_data
|
762
|
+
end
|
763
|
+
record_field_details_json = JSON.parse(File.read(record_field_details_path))
|
764
|
+
module_data = record_field_details_json[Constants::SDK_MODULE_METADATA]
|
765
|
+
return module_data
|
766
|
+
end
|
767
|
+
|
768
|
+
def self.write_module_meta_data(record_field_details_path, module_data)
|
769
|
+
field_details_json = File.exist? record_field_details_path ? JSON.parse(File.read(record_field_details_path)):{}
|
770
|
+
field_details_json[Constants::SDK_MODULE_METADATA] = module_data
|
771
|
+
File.open(record_field_details_path, 'w') do |f|
|
772
|
+
f.write(field_details_json.to_json)
|
773
|
+
end
|
774
|
+
end
|
775
|
+
|
620
776
|
def self.get_related_list_details(module_api_name)
|
621
777
|
rlo = RelatedLists::RelatedListsOperations.new(module_api_name)
|
622
778
|
response = rlo.get_related_lists
|