ZCRMSDK 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,153 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'handler'
4
+ require_relative 'utility'
5
+ require_relative 'operations'
6
+ module ZCRMSDK
7
+ module Org
8
+ # THIS CLASS IS USED TO STORE AND EXECUTE ORGANIZATION RELATED FUNCTIONALITIES
9
+ class ZCRMOrganization
10
+ attr_accessor :users_license_purchased, :photo_id, :privacy_settings, :zia_portal_id, :currency, :company_name, :org_id, :alias_aka, :primary_zuid, :zgid, :primary_email, :website, :mobile, :phone, :employee_count, :description, :time_zone, :iso_code, :currency_locale, :currency_symbol, :street, :state, :city, :country, :zip_code, :country_code, :fax, :mc_status, :is_gapps_enabled, :paid_expiry, :trial_type, :trial_expiry, :is_paid_account, :paid_type
11
+ def initialize(org_name = nil, org_id = nil)
12
+ @currency = nil
13
+ @zia_portal_id = nil
14
+ @privacy_settings = nil
15
+ @photo_id = nil
16
+ @company_name = org_name
17
+ @org_id = org_id
18
+ @alias_aka = nil
19
+ @primary_zuid = nil
20
+ @zgid = nil
21
+ @primary_email = nil
22
+ @website = nil
23
+ @mobile = nil
24
+ @phone = nil
25
+ @employee_count = nil
26
+ @description = nil
27
+ @time_zone = nil
28
+ @iso_code = nil
29
+ @currency_locale = nil
30
+ @currency_symbol = nil
31
+ @street = nil
32
+ @state = nil
33
+ @city = nil
34
+ @country = nil
35
+ @zip_code = nil
36
+ @country_code = nil
37
+ @fax = nil
38
+ @mc_status = nil
39
+ @is_gapps_enabled = nil
40
+ @paid_expiry = nil
41
+ @trial_type = nil
42
+ @trial_expiry = nil
43
+ @is_paid_account = nil
44
+ @paid_type = nil
45
+ @users_license_purchased = nil
46
+ end
47
+
48
+ def self.get_instance(org_name = nil, org_id = nil)
49
+ ZCRMOrganization.new(org_name, org_id)
50
+ end
51
+
52
+ def get_user(user_id)
53
+ Handler::OrganizationAPIHandler.get_instance.get_user(user_id)
54
+ end
55
+
56
+ def get_current_user
57
+ Handler::OrganizationAPIHandler.get_instance.get_current_user
58
+ end
59
+
60
+ def get_all_users
61
+ Handler::OrganizationAPIHandler.get_instance.get_all_users
62
+ end
63
+
64
+ def get_all_active_users
65
+ Handler::OrganizationAPIHandler.get_instance.get_all_active_users
66
+ end
67
+
68
+ def get_all_deactive_users
69
+ Handler::OrganizationAPIHandler.get_instance.get_all_deactive_users
70
+ end
71
+
72
+ def get_all_confirmed_users
73
+ Handler::OrganizationAPIHandler.get_instance.get_all_confirmed_users
74
+ end
75
+
76
+ def get_all_not_confirmed_users
77
+ Handler::OrganizationAPIHandler.get_instance.get_all_not_confirmed_users
78
+ end
79
+
80
+ def get_all_deleted_users
81
+ Handler::OrganizationAPIHandler.get_instance.get_all_deleted_users
82
+ end
83
+
84
+ def get_all_active_confirmed_users
85
+ Handler::OrganizationAPIHandler.get_instance.get_all_active_confirmed_users
86
+ end
87
+
88
+ def get_all_admin_users
89
+ Handler::OrganizationAPIHandler.get_instance.get_all_admin_users
90
+ end
91
+
92
+ def get_all_active_confirmed_admin_users
93
+ Handler::OrganizationAPIHandler.get_instance.get_all_active_confirmed_admin_users
94
+ end
95
+
96
+ def get_all_profiles
97
+ Handler::OrganizationAPIHandler.get_instance.get_all_profiles
98
+ end
99
+
100
+ def get_profile(profile_id)
101
+ Handler::OrganizationAPIHandler.get_instance.get_profile(profile_id)
102
+ end
103
+
104
+ def get_all_roles
105
+ Handler::OrganizationAPIHandler.get_instance.get_all_roles
106
+ end
107
+
108
+ def get_role(role_id)
109
+ Handler::OrganizationAPIHandler.get_instance.get_role(role_id)
110
+ end
111
+
112
+ def create_user(user_instance)
113
+ Handler::OrganizationAPIHandler.get_instance.create_user(user_instance)
114
+ end
115
+
116
+ def update_user(user_instance)
117
+ Handler::OrganizationAPIHandler.get_instance.update_user(user_instance)
118
+ end
119
+
120
+ def delete_user(user_id)
121
+ Handler::OrganizationAPIHandler.get_instance.delete_user(user_id)
122
+ end
123
+
124
+ def get_organization_taxes
125
+ Handler::OrganizationAPIHandler.get_instance.get_organization_taxes
126
+ end
127
+
128
+ def get_organization_tax(org_tax_id)
129
+ Handler::OrganizationAPIHandler.get_instance.get_organization_tax(org_tax_id)
130
+ end
131
+
132
+ def search_users_by_criteria(criteria, type = nil)
133
+ Handler::OrganizationAPIHandler.get_instance.search_users_by_criteria(criteria, type)
134
+ end
135
+
136
+ def create_organization_taxes(orgtax_instances)
137
+ Handler::OrganizationAPIHandler.get_instance.create_organization_taxes(orgtax_instances)
138
+ end
139
+
140
+ def update_organization_taxes(orgtax_instances)
141
+ Handler::OrganizationAPIHandler.get_instance.update_organization_taxes(orgtax_instances)
142
+ end
143
+
144
+ def delete_organization_taxes(orgtax_ids)
145
+ Handler::OrganizationAPIHandler.get_instance.delete_organization_taxes(orgtax_ids)
146
+ end
147
+
148
+ def delete_organization_tax(orgtax_id)
149
+ Handler::OrganizationAPIHandler.get_instance.delete_organization_tax(orgtax_id)
150
+ end
151
+ end
152
+ end
153
+ end
@@ -0,0 +1,127 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'oauth_utility'
4
+ require_relative 'oauth_client'
5
+ module ZCRMSDK
6
+ module Persistence
7
+ # THIS CLASS IS USED TO STORE, RETRIEVE, DELETE TOKENS IN DEFAULT DB
8
+ class ZohoOAuthPersistenceHandler
9
+ def initialize; end
10
+
11
+ def self.get_instance
12
+ ZohoOAuthPersistenceHandler.new
13
+ end
14
+
15
+ def save_oauth_tokens(oauth_tokens)
16
+ delete_oauth_tokens(oauth_tokens.user_identifier)
17
+ con = Mysql2::Client.new(host: $OAUTH_CONFIG_PROPERTIES['db_address'], username: $OAUTH_CONFIG_PROPERTIES['db_username'], password: $OAUTH_CONFIG_PROPERTIES['db_password'], database: 'zohooauth', port: $OAUTH_CONFIG_PROPERTIES['db_port'])
18
+ con.query("insert into oauthtokens(useridentifier,accesstoken,refreshtoken,expirytime) values('#{oauth_tokens.user_identifier}','#{oauth_tokens.access_token}','#{oauth_tokens.refresh_token}',#{oauth_tokens.expiry_time})")
19
+ con.close
20
+ rescue Mysql2::Error => e
21
+ Utility::SDKLogger.add_log(e.error, OAuthUtility::ZohoOAuthConstants::ERROR, e)
22
+ ensure
23
+ con.close
24
+ end
25
+
26
+ def get_oauth_tokens(user_identifier)
27
+ con = Mysql2::Client.new(host: $OAUTH_CONFIG_PROPERTIES['db_address'], username: $OAUTH_CONFIG_PROPERTIES['db_username'], password: $OAUTH_CONFIG_PROPERTIES['db_password'], database: 'zohooauth', port: $OAUTH_CONFIG_PROPERTIES['db_port'])
28
+ query = "select * from oauthtokens where useridentifier='#{user_identifier}'"
29
+ rs = con.query(query)
30
+ oauth_tokens = nil
31
+ rs.each do |row|
32
+ oauth_tokens = OAuthClient::ZohoOAuthTokens.get_instance(row['refreshtoken'], row['accesstoken'], row['expirytime'], user_identifier)
33
+ con.close
34
+ return oauth_tokens
35
+ end
36
+ raise OAuthUtility::ZohoOAuthException.get_instance('get_oauth_tokens', 'no such email id - ' + user_identifier + ' present in the DB', 'Exception occured while fetching accesstoken from Grant Token', OAuthUtility::ZohoOAuthConstants::ERROR)
37
+ rescue Mysql2::Error => e
38
+ Utility::SDKLogger.add_log(e.error, OAuthUtility::ZohoOAuthConstants::ERROR, e)
39
+ ensure
40
+ con.close
41
+ end
42
+
43
+ def delete_oauth_tokens(user_identifier)
44
+ con = Mysql2::Client.new(host: $OAUTH_CONFIG_PROPERTIES['db_address'], username: $OAUTH_CONFIG_PROPERTIES['db_username'], password: $OAUTH_CONFIG_PROPERTIES['db_password'], database: 'zohooauth', port: $OAUTH_CONFIG_PROPERTIES['db_port'])
45
+ delete_query = "delete from oauthtokens where useridentifier='#{user_identifier}'"
46
+ con.query(delete_query)
47
+ con.close
48
+ rescue Mysql2::Error => e
49
+ Utility::SDKLogger.add_log(e.error, OAuthUtility::ZohoOAuthConstants::ERROR, e)
50
+ ensure
51
+ con.close
52
+ end
53
+ end
54
+ # THIS CLASS IS USED TO STORE, RETRIEVE, DELETE TOKENS IN FILE
55
+ class ZohoOAuthFilePersistenceHandler
56
+ def initialize; end
57
+
58
+ def self.get_instance
59
+ ZohoOAuthFilePersistenceHandler.new
60
+ end
61
+
62
+ def save_oauth_tokens(oauth_tokens)
63
+ unless File.exist?($OAUTH_CONFIG_PROPERTIES[OAuthUtility::ZohoOAuthConstants::TOKEN_PERSISTENCE_PATH].dup + '/zcrm_oauthtokens.txt')
64
+ file_obj = File.new($OAUTH_CONFIG_PROPERTIES[OAuthUtility::ZohoOAuthConstants::TOKEN_PERSISTENCE_PATH].dup + '/zcrm_oauthtokens.txt', 'w')
65
+ file_obj.close
66
+ end
67
+ delete_oauth_tokens(oauth_tokens.user_identifier)
68
+ arr = []
69
+ path = $OAUTH_CONFIG_PROPERTIES[OAuthUtility::ZohoOAuthConstants::TOKEN_PERSISTENCE_PATH].dup + '/zcrm_oauthtokens.txt'
70
+ file_obj = File.open(path, 'r')
71
+ serialized = file_obj.read
72
+ file_obj.close
73
+ arr = Marshal.load(serialized) unless serialized.nil? || serialized.empty?
74
+ arr.push(oauth_tokens)
75
+ file_obj = File.open(path, 'w+')
76
+ file_obj.write(Marshal.dump(arr))
77
+ file_obj.close
78
+ end
79
+
80
+ def get_oauth_tokens(user_identifier)
81
+ if !File.exist?($OAUTH_CONFIG_PROPERTIES[OAuthUtility::ZohoOAuthConstants::TOKEN_PERSISTENCE_PATH].dup + '/zcrm_oauthtokens.txt')
82
+ raise OAuthUtility::ZohoOAuthException.get_instance('get_oauth_tokens', 'file does not exist!generate the access token!', 'Error occured while getting access token', OAuthUtility::ZohoOAuthConstants::ERROR)
83
+ end
84
+
85
+ path = $OAUTH_CONFIG_PROPERTIES[OAuthUtility::ZohoOAuthConstants::TOKEN_PERSISTENCE_PATH].dup + '/zcrm_oauthtokens.txt'
86
+ file_obj = File.open(path, 'r')
87
+ serialized = file_obj.read
88
+ file_obj.close
89
+ if serialized.empty? || serialized.nil?
90
+ raise OAuthUtility::ZohoOAuthException.get_instance('get_oauth_tokens', 'no tokens found!generate the access token!', 'Error occured while getting access token', OAuthUtility::ZohoOAuthConstants::ERROR)
91
+ end
92
+
93
+ deserialized = Marshal.load(serialized)
94
+ deserialized.each do |token|
95
+ return token if token.user_identifier == user_identifier
96
+ end
97
+ raise OAuthUtility::ZohoOAuthException.get_instance('get_oauth_tokens', 'no such' + user_identifier.to_s + 'present in the File', 'Exception occured while fetching accesstoken from Grant Token', OAuthUtility::ZohoOAuthConstants::ERROR)
98
+ end
99
+
100
+ def delete_oauth_tokens(user_identifier)
101
+ path = $OAUTH_CONFIG_PROPERTIES[OAuthUtility::ZohoOAuthConstants::TOKEN_PERSISTENCE_PATH].dup + '/zcrm_oauthtokens.txt'
102
+ file_obj = File.open(path, 'r')
103
+ serialized = file_obj.read
104
+ file_obj.close
105
+
106
+ return if serialized.empty? || serialized.nil?
107
+
108
+ found = false
109
+ i = 0
110
+ deserialized = Marshal.load(serialized)
111
+ deserialized.each do |token|
112
+ if token.user_identifier == user_identifier
113
+ found = true
114
+ break
115
+ end
116
+ i += 1
117
+ end
118
+ if found
119
+ deserialized.delete_at(i)
120
+ file_obj = File.open(path, 'w+')
121
+ file_obj.write(Marshal.dump(deserialized))
122
+ file_obj.close
123
+ end
124
+ end
125
+ end
126
+ end
127
+ end
@@ -0,0 +1,83 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'utility'
4
+ require_relative 'response'
5
+ module ZCRMSDK
6
+ module Request
7
+ # THIS CLASS IS USED TO AUTHENTICATE AND CONSTRUCT API REQUEST
8
+ class APIRequest
9
+ def initialize(api_handler_ins)
10
+ construct_api_url
11
+ @url += api_handler_ins.request_url_path
12
+ @url = 'https://' + @url unless @url.start_with?('http')
13
+ @request_body = api_handler_ins.request_body
14
+ @request_headers = api_handler_ins.request_headers
15
+ @request_params = api_handler_ins.request_params
16
+ @request_method = api_handler_ins.request_method
17
+ @request_api_key = api_handler_ins.request_api_key
18
+ end
19
+
20
+ def self.get_instance(api_handler_ins)
21
+ APIRequest.new(api_handler_ins)
22
+ end
23
+
24
+ def construct_api_url
25
+ hit_sandbox = ZCRMSDK::Utility::ZCRMConfigUtil.get_config_value(ZCRMSDK::Utility::APIConstants::SANDBOX)
26
+ url = ZCRMSDK::Utility::ZCRMConfigUtil.get_api_base_url
27
+ if hit_sandbox == 'true'
28
+ url = url.sub('www.', 'sandbox.')
29
+ end
30
+ @url = url + '/crm/' + ZCRMSDK::Utility::ZCRMConfigUtil.get_api_version + '/'
31
+ end
32
+
33
+ def authenticate_request
34
+ access_token = ZCRMSDK::Utility::ZCRMConfigUtil.get_instance.get_access_token
35
+ if @request_headers.nil?
36
+ @request_headers = { ZCRMSDK::Utility::APIConstants::AUTHORIZATION => ZCRMSDK::Utility::APIConstants::OAUTH_HEADER_PREFIX.dup + access_token }
37
+ else
38
+ @request_headers[ZCRMSDK::Utility::APIConstants::AUTHORIZATION] = ZCRMSDK::Utility::APIConstants::OAUTH_HEADER_PREFIX.dup + access_token
39
+ end
40
+ @request_headers['User-Agent'] = 'ZohoCRM Ruby SDK'
41
+ end
42
+
43
+ def get_api_response
44
+ authenticate_request
45
+ connector = ZCRMSDK::Utility::ZohoHTTPConnector.get_instance(@url, @request_params, @request_headers, @request_body.to_json, @request_method, @request_api_key, false)
46
+ response = connector.trigger_request
47
+ Response::APIResponse.get_instance(response, response.code.to_i, @url, @request_api_key)
48
+ end
49
+
50
+ def get_bulk_api_response
51
+ authenticate_request
52
+ connector = ZCRMSDK::Utility::ZohoHTTPConnector.get_instance(@url, @request_params, @request_headers, @request_body.to_json, @request_method, @request_api_key, true)
53
+ response = connector.trigger_request
54
+ Response::BulkAPIResponse.get_instance(response, response.code.to_i, @url, @request_api_key)
55
+ end
56
+
57
+ def upload_file(file_path)
58
+ authenticate_request
59
+ form_data = [['file', File.open(file_path)]]
60
+ connector = ZCRMSDK::Utility::ZohoHTTPConnector.get_instance(@url, @request_params, @request_headers, @request_body, @request_method, @request_api_key, false, form_data)
61
+ response = connector.trigger_request
62
+ Response::APIResponse.get_instance(response, response.code.to_i, @url, @request_api_key)
63
+ end
64
+
65
+ def upload_link_as_attachment(link_url)
66
+ authenticate_request
67
+ form_data = [['attachmentUrl', link_url]]
68
+ connector = ZCRMSDK::Utility::ZohoHTTPConnector.get_instance(@url, @request_params, @request_headers, @request_body, @request_method, @request_api_key, false, form_data)
69
+ response = connector.trigger_request
70
+ Response::APIResponse.get_instance(response, response.code.to_i, @url, @request_api_key)
71
+ end
72
+
73
+ def download_file
74
+ authenticate_request
75
+ connector = ZCRMSDK::Utility::ZohoHTTPConnector.get_instance(@url, @request_params, @request_headers, @request_body, @request_method, @request_api_key, false)
76
+ response = connector.trigger_request
77
+ file_response = Response::FileAPIResponse.get_instance(response, response.code.to_i, @url)
78
+ file_response.set_file_content
79
+ file_response
80
+ end
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,216 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'utility'
4
+ require 'json'
5
+ module ZCRMSDK
6
+ module Response
7
+ # THIS CLASS IS USED TO STORE DETAILS ABOUT THE API RESPONSE , PROCESS JSON AND HANDLE FAULTY RESPONSES
8
+ class CommonAPIResponse
9
+ attr_accessor :response_json, :response_headers, :response, :status_code, :api_key, :url, :data, :status, :code, :message, :details
10
+ def initialize(response, status_code, url, api_key = nil)
11
+ @response_json = nil
12
+ @response_headers = nil
13
+ @response = response
14
+ @status_code = status_code
15
+ @api_key = api_key
16
+ @url = url
17
+ @data = nil
18
+ @status = nil
19
+ @code = nil
20
+ @message = nil
21
+ @details = nil
22
+ set_response_json
23
+ process_response
24
+ end
25
+
26
+ def self.get_instance(response, status_code, url, api_key = nil)
27
+ CommonAPIResponse.new(response, status_code, url, api_key)
28
+ end
29
+
30
+ def set_response_json
31
+ if (@status_code != Utility::APIConstants::RESPONSECODE_NO_CONTENT) && (@status_code != Utility::APIConstants::RESPONSECODE_NOT_MODIFIED)
32
+ @response_json = JSON.parse(@response.body)
33
+ else
34
+ @response_json = {}
35
+ @response_headers = {}
36
+ return
37
+ end
38
+ @response_headers = @response.to_hash
39
+ end
40
+
41
+ def process_response
42
+ if Utility::APIConstants::FAULTY_RESPONSE_CODES.include?(@status_code)
43
+ handle_faulty_responses
44
+ elsif (@status_code == Utility::APIConstants::RESPONSECODE_ACCEPTED) || (@status_code == Utility::APIConstants::RESPONSECODE_OK) || (@status_code == Utility::APIConstants::RESPONSECODE_CREATED)
45
+ process_response_data
46
+ end
47
+ end
48
+
49
+ def handle_faulty_responses
50
+ nil
51
+ end
52
+
53
+ def process_response_data
54
+ nil
55
+ end
56
+ end
57
+ # THIS CLASS IS USED TO HANDLE API RESPONSE
58
+ class APIResponse < CommonAPIResponse
59
+ def initialize(response, status_code, url, api_key)
60
+ super
61
+ end
62
+
63
+ def self.get_instance(response, status_code, url, api_key)
64
+ APIResponse.new(response, status_code, url, api_key)
65
+ end
66
+
67
+ def handle_faulty_responses
68
+ if @status_code == Utility::APIConstants::RESPONSECODE_NO_CONTENT
69
+ error_msg = Utility::APIConstants::NO_CONTENT
70
+ exception = Utility::ZCRMException.get_instance(@url, @status_code, error_msg, Utility::APIConstants::NO_CONTENT, nil, error_msg)
71
+ else
72
+ response_json = @response_json
73
+ exception = Utility::ZCRMException.get_instance(@url, @status_code, response_json[Utility::APIConstants::MESSAGE], response_json[Utility::APIConstants::CODE], response_json[Utility::APIConstants::DETAILS], response_json[Utility::APIConstants::MESSAGE])
74
+ end
75
+ raise exception
76
+ end
77
+
78
+ def process_response_data
79
+ resp_json = @response_json
80
+ if resp_json.include?(api_key)
81
+ resp_json = @response_json[api_key]
82
+ resp_json = resp_json[0] if resp_json.instance_of?(Array)
83
+ end
84
+ if resp_json.include?(Utility::APIConstants::STATUS) && (resp_json[Utility::APIConstants::STATUS] == Utility::APIConstants::STATUS_ERROR)
85
+ exception = Utility::ZCRMException.get_instance(@url, @status_code, resp_json[Utility::APIConstants::MESSAGE], resp_json[Utility::APIConstants::CODE], resp_json[Utility::APIConstants::DETAILS], resp_json[Utility::APIConstants::STATUS])
86
+ raise exception
87
+ elsif resp_json.include?(Utility::APIConstants::STATUS) && (resp_json[Utility::APIConstants::STATUS] == Utility::APIConstants::STATUS_SUCCESS)
88
+ @status = resp_json[Utility::APIConstants::STATUS]
89
+ @code = resp_json[Utility::APIConstants::CODE]
90
+ @message = resp_json[Utility::APIConstants::MESSAGE]
91
+ @details = resp_json[Utility::APIConstants::DETAILS]
92
+ end
93
+ end
94
+ end
95
+ # THIS CLASS IS USED TO BULK API RESPONSE
96
+ class BulkAPIResponse < CommonAPIResponse
97
+ attr_accessor :bulk_entity_response, :info
98
+ def initialize(response, status_code, url, api_key)
99
+ @bulk_entity_response = []
100
+ super
101
+ if @response_json.include?(Utility::APIConstants::INFO)
102
+ @info = ResponseInfo.get_instance(@response_json[Utility::APIConstants::INFO])
103
+ end
104
+ end
105
+
106
+ def self.get_instance(response, status_code, url, api_key)
107
+ BulkAPIResponse.new(response, status_code, url, api_key)
108
+ end
109
+
110
+ def handle_faulty_responses
111
+ if @status_code == Utility::APIConstants::RESPONSECODE_NO_CONTENT
112
+ error_msg = Utility::APIConstants::NO_CONTENT
113
+ exception = Utility::ZCRMException.get_instance(@url, @status_code, error_msg, Utility::APIConstants::NO_CONTENT, nil, error_msg)
114
+ else
115
+ response_json = @response_json
116
+ exception = Utility::ZCRMException.get_instance(@url, @status_code, response_json[Utility::APIConstants::MESSAGE], response_json[Utility::APIConstants::CODE], response_json[Utility::APIConstants::DETAILS], response_json[Utility::APIConstants::MESSAGE])
117
+ end
118
+ raise exception
119
+ end
120
+
121
+ def process_response_data
122
+ responses_json = @response_json
123
+ if responses_json.include?(@api_key)
124
+ records_data = @response_json[api_key]
125
+ records_data.each do |record_data|
126
+ if !record_data.nil? && record_data.key?(Utility::APIConstants::STATUS)
127
+ @bulk_entity_response.push(EntityResponse.get_instance(record_data))
128
+ end
129
+ end
130
+ end
131
+ end
132
+ end
133
+ # THIS CLASS IS USED TO HANDLE FILE API RESPONSE
134
+ class FileAPIResponse
135
+ attr_accessor :filename, :response_json, :response_headers, :response, :status_code, :url, :data, :status, :code, :message, :details
136
+ def initialize(response, status_code, url)
137
+ @response_json = nil
138
+ @response_headers = nil
139
+ @response = response
140
+ @status_code = status_code
141
+ @url = url
142
+ @data = nil
143
+ @status = nil
144
+ @code = nil
145
+ @message = nil
146
+ @details = nil
147
+ @filename = nil
148
+ end
149
+
150
+ def self.get_instance(response, status_code, url)
151
+ FileAPIResponse.new(response, status_code, url)
152
+ end
153
+
154
+ def set_file_content
155
+ if @status_code == Utility::APIConstants::RESPONSECODE_NO_CONTENT
156
+ error_msg = Utility::APIConstants::NO_CONTENT
157
+ exception = Utility::ZCRMException.get_instance(@url, @status_code, error_msg, Utility::APIConstants::NO_CONTENT, nil, error_msg)
158
+ raise exception
159
+ end
160
+ if Utility::APIConstants::FAULTY_RESPONSE_CODES.include?(@status_code)
161
+ content = JSON.parse(@response.body)
162
+ exception = Utility::ZCRMException.get_instance(@url, @status_code, content[Utility::APIConstants::MESSAGE], content[Utility::APIConstants::CODE], content[Utility::APIConstants::DETAILS], content[Utility::APIConstants::MESSAGE])
163
+ raise exception
164
+ elsif @status_code == Utility::APIConstants::RESPONSECODE_OK
165
+ @response_headers = @response.to_hash
166
+ @status = Utility::APIConstants::STATUS_SUCCESS
167
+ @filename = @response_headers['content-disposition'][0]
168
+ @filename = @filename[@filename.rindex("'") + 1..@filename.length]
169
+ @response = @response.body
170
+ end
171
+ @response_headers = @response.to_hash if @response_headers.nil?
172
+ end
173
+ end
174
+ # THIS CLASS IS USED TO HANDLE ENTITY API RESPONSE
175
+ class EntityResponse
176
+ attr_accessor :response_json, :code, :message, :status, :details, :data, :upsert_action, :upsert_duplicate_field
177
+ def initialize(entity_response)
178
+ @response_json = entity_response
179
+ @code = entity_response[Utility::APIConstants::CODE]
180
+ @message = entity_response[Utility::APIConstants::MESSAGE]
181
+ @status = entity_response[Utility::APIConstants::STATUS]
182
+ @details = nil
183
+ @data = nil
184
+ @upsert_action = nil
185
+ @upsert_duplicate_field = nil
186
+ if entity_response.key?(Utility::APIConstants::DETAILS)
187
+ @details = entity_response[Utility::APIConstants::DETAILS]
188
+ end
189
+ if entity_response.key?(Utility::APIConstants::ACTION)
190
+ @upsert_action = entity_response[Utility::APIConstants::ACTION]
191
+ end
192
+ if entity_response.key?(Utility::APIConstants::DUPLICATE_FIELD)
193
+ @upsert_duplicate_field = entity_response[Utility::APIConstants::DUPLICATE_FIELD]
194
+ end
195
+ end
196
+
197
+ def self.get_instance(entity_response)
198
+ EntityResponse.new(entity_response)
199
+ end
200
+ end
201
+ # THIS CLASS IS USED TO STORE RESPONSE INFO
202
+ class ResponseInfo
203
+ attr_reader :is_more_records, :page, :per_page, :count
204
+ def initialize(response_info_json)
205
+ @is_more_records = (response_info_json['more_records']) == true
206
+ @page = (response_info_json['page']).to_i
207
+ @per_page = (response_info_json['per_page']).to_i
208
+ @count = (response_info_json['count']).to_i
209
+ end
210
+
211
+ def self.get_instance(response_info_json)
212
+ ResponseInfo.new(response_info_json)
213
+ end
214
+ end
215
+ end
216
+ end