ZOHOCRMSDK2_0 1.0.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/src/ZOHOCRMSDK2_0.rb +6 -0
  3. data/src/com/zoho/api/authenticator/oauth_token.rb +86 -32
  4. data/src/com/zoho/api/authenticator/store/db_store.rb +71 -29
  5. data/src/com/zoho/api/authenticator/store/file_store.rb +95 -24
  6. data/src/com/zoho/api/authenticator/store/token_store.rb +7 -0
  7. data/src/com/zoho/api/logger/sdk_logger.rb +19 -9
  8. data/src/com/zoho/crm/api/contact_roles/api_exception.rb +4 -0
  9. data/src/com/zoho/crm/api/contact_roles/contact_role_wrapper.rb +61 -0
  10. data/src/com/zoho/crm/api/contact_roles/contact_roles_operations.rb +118 -0
  11. data/src/com/zoho/crm/api/contact_roles/record_action_handler.rb +10 -0
  12. data/src/com/zoho/crm/api/contact_roles/record_action_wrapper.rb +63 -0
  13. data/src/com/zoho/crm/api/contact_roles/record_body_wrapper.rb +61 -0
  14. data/src/com/zoho/crm/api/contact_roles/record_response_handler.rb +10 -0
  15. data/src/com/zoho/crm/api/contact_roles/record_response_wrapper.rb +84 -0
  16. data/src/com/zoho/crm/api/dc/au_datacenter.rb +3 -3
  17. data/src/com/zoho/crm/api/dc/cn_datacenter.rb +3 -3
  18. data/src/com/zoho/crm/api/dc/datacenter.rb +3 -2
  19. data/src/com/zoho/crm/api/dc/eu_datacenter.rb +3 -3
  20. data/src/com/zoho/crm/api/dc/in_datacenter.rb +3 -3
  21. data/src/com/zoho/crm/api/dc/us_datacenter.rb +3 -3
  22. data/src/com/zoho/crm/api/initializer.rb +44 -16
  23. data/src/com/zoho/crm/api/record/record_operations.rb +198 -1
  24. data/src/com/zoho/crm/api/related_records/related_records_operations.rb +299 -40
  25. data/src/com/zoho/crm/api/request_proxy.rb +3 -4
  26. data/src/com/zoho/crm/api/sdk_config.rb +2 -68
  27. data/src/com/zoho/crm/api/util/api_http_connector.rb +6 -6
  28. data/src/com/zoho/crm/api/util/constants.rb +113 -16
  29. data/src/com/zoho/crm/api/util/converter.rb +21 -4
  30. data/src/com/zoho/crm/api/util/data_type_converter.rb +8 -2
  31. data/src/com/zoho/crm/api/util/form_data_converter.rb +4 -16
  32. data/src/com/zoho/crm/api/util/json_converter.rb +7 -9
  33. data/src/com/zoho/crm/api/util/module_fields_handler.rb +1 -1
  34. data/src/com/zoho/crm/api/util/utility.rb +197 -82
  35. data/src/resources/JSONDetails.json +1 -1
  36. data/src/version.rb +2 -2
  37. metadata +8 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4e2e634ac64c557bfbb3054bb21f8a76ea05c3396aba162f88fa777832650c7e
4
- data.tar.gz: 867335f19bdf382d60a6ad3f6e5698e08ae6cb6798ae9004cc258935ba2d62f4
3
+ metadata.gz: 95f0344d741c13094abf8b93a67139018a0b83895f612a9be53fb7e32f14217b
4
+ data.tar.gz: 8fc22f398327570fe85162016f887c280d2485e6ffdc6e82c671963a1bd7976e
5
5
  SHA512:
6
- metadata.gz: 625df3665f2738c53b53dc182e364451759bf23cb56e7a42edac2942c5a0a0c6bf16ae728b1de314ad281399ce73fe1f5b72fa76bf9e0a446e133609022636dc
7
- data.tar.gz: bc375d637388404f7998acf4a6881ef3a8d871f37cea201fa0846b494af954b9f412c984d486cc1fa822b2c005112fc22934b41d63d1943c3736f9a0ee62cb7a
6
+ metadata.gz: a30421d88bd8b9b915998fbfaecf567e7f99a2534f86427e0f8e804a6a55a247f31f36239287e22b7e1112ee7902b768b7f783f80180dfca77e6f951d605bc69
7
+ data.tar.gz: 7481d802d6be8ca33d3f723b560e312d21f49dfc6afa27e0e2ea03599f2a23458417d9a0a18fbf9ef7ba5e1ade40e0601cc41eb0718fb892ffd5e0569c78a209
data/src/ZOHOCRMSDK2_0.rb CHANGED
@@ -202,11 +202,17 @@ require 'com/zoho/crm/api/contact_roles/contact_role.rb'
202
202
  require 'com/zoho/crm/api/contact_roles/body_wrapper.rb'
203
203
  require 'com/zoho/crm/api/contact_roles/action_handler.rb'
204
204
  require 'com/zoho/crm/api/contact_roles/action_wrapper.rb'
205
+ require 'com/zoho/crm/api/contact_roles/record_action_handler.rb'
206
+ require 'com/zoho/crm/api/contact_roles/record_response_handler.rb'
207
+ require 'com/zoho/crm/api/contact_roles/record_action_wrapper.rb'
208
+ require 'com/zoho/crm/api/contact_roles/record_body_wrapper.rb'
209
+ require 'com/zoho/crm/api/contact_roles/record_response_wrapper.rb'
205
210
  require 'com/zoho/crm/api/contact_roles/response_wrapper.rb'
206
211
  require 'com/zoho/crm/api/contact_roles/api_exception.rb'
207
212
  require 'com/zoho/crm/api/contact_roles/contact_roles_operations.rb'
208
213
  require 'com/zoho/crm/api/contact_roles/success_response.rb'
209
214
  require 'com/zoho/crm/api/contact_roles/action_response.rb'
215
+ require 'com/zoho/crm/api/contact_roles/contact_role_wrapper.rb'
210
216
  require 'com/zoho/crm/api/contact_roles/response_handler.rb'
211
217
  require 'com/zoho/crm/api/layouts/layouts_operations.rb'
212
218
  require 'com/zoho/crm/api/layouts/section.rb'
@@ -11,19 +11,19 @@ require_relative '../../crm/api/exception/sdk_exception'
11
11
  module Authenticator
12
12
  # This class gets and refreshes the tokens based on the expiry time.
13
13
  class OAuthToken < Token
14
+ attr_accessor :client_id , :client_secret ,:redirect_url ,:grant_token,:refresh_token, :access_token ,:user_mail ,:id ,:expires_in
14
15
  @@sync_lock = Monitor.new
15
16
 
16
- attr_accessor :client_id, :client_secret, :redirect_url, :grant_token, :refresh_token, :access_token, :expires_in, :user_mail, :id
17
-
18
17
  # Creates an OAuthToken class instance with the specified parameters.
19
18
  # @param client_id [string] A String containing the OAuth client id.
20
19
  # @param client_secret [string] A String containing the OAuth client secret.
20
+ # @param grant_token [string] A String containing the grant token.
21
+ # @param refresh_token [string] A String containing the refresh token.
21
22
  # @param redirect_url [string] A String containing the OAuth redirect URL.
22
- # @param token [string] A String containing the REFRESH/GRANT token.
23
- # @param type A TokenType module variable containing the type of given token.
24
- def initialize(client_id, client_secret, token, type, redirect_url = nil)
25
- error = {}
26
-
23
+ # @param id [string] A String containing ID
24
+
25
+ def initialize(client_id:, client_secret:, grant_token: nil, refresh_token: nil, redirect_url: nil,id: nil)
26
+ error ={}
27
27
  unless client_id.is_a?(String)
28
28
  error[Constants::ERROR_HASH_FIELD] = Constants::CLIENT_ID
29
29
 
@@ -35,7 +35,7 @@ module Authenticator
35
35
 
36
36
  end
37
37
 
38
- unless client_secret.nil? || client_secret.is_a?(String)
38
+ unless client_secret.is_a?(String)
39
39
  error[Constants::ERROR_HASH_FIELD] = Constants::CLIENT_SECRET
40
40
 
41
41
  error[Constants::ERROR_HASH_EXPECTED_TYPE] = String
@@ -46,8 +46,41 @@ module Authenticator
46
46
 
47
47
  end
48
48
 
49
- unless token.is_a?(String)
50
- error[Constants::ERROR_HASH_FIELD] = Constants::TOKEN
49
+ if !grant_token.nil? && !grant_token.is_a?(String)
50
+ error[Constants::ERROR_HASH_FIELD] = Constants::GRANT_TOKEN
51
+
52
+ error[Constants::ERROR_HASH_EXPECTED_TYPE] = String
53
+
54
+ error[Constants::ERROR_HASH_CLASS] = OAuthToken.class
55
+
56
+ raise SDKException.new(Constants::INPUT_ERROR, nil, error, nil)
57
+
58
+ end
59
+
60
+ if !refresh_token.nil? && !refresh_token.is_a?(String)
61
+ error[Constants::ERROR_HASH_FIELD] = Constants::REFRESH_TOKEN
62
+
63
+ error[Constants::ERROR_HASH_EXPECTED_TYPE] = String
64
+
65
+ error[Constants::ERROR_HASH_CLASS] = OAuthToken.class
66
+
67
+ raise SDKException.new(Constants::INPUT_ERROR, nil, error, nil)
68
+
69
+ end
70
+
71
+ if !redirect_url.nil? && !redirect_url.is_a?(String)
72
+ error[Constants::ERROR_HASH_FIELD] = Constants::REDIRECT_URL
73
+
74
+ error[Constants::ERROR_HASH_EXPECTED_TYPE] = String
75
+
76
+ error[Constants::ERROR_HASH_CLASS] = OAuthToken.class
77
+
78
+ raise SDKException.new(Constants::INPUT_ERROR, nil, error, nil)
79
+
80
+ end
81
+
82
+ if !id.nil? && !id.is_a?(String)
83
+ error[Constants::ERROR_HASH_FIELD] = Constants::ID
51
84
 
52
85
  error[Constants::ERROR_HASH_EXPECTED_TYPE] = String
53
86
 
@@ -57,7 +90,7 @@ module Authenticator
57
90
 
58
91
  end
59
92
 
60
- unless TokenType::REFRESH.to_s.equal?(TokenType.const_get(type.to_s)) || TokenType::GRANT.to_s.equal?(TokenType.const_get(type.to_s))
93
+ if grant_token.nil? && refresh_token.nil?
61
94
  error[Constants::ERROR_HASH_FIELD] = Constants::TYPE
62
95
 
63
96
  error[Constants::ERROR_HASH_EXPECTED_TYPE] = Constants::EXPECTED_TOKEN_TYPES
@@ -66,28 +99,39 @@ module Authenticator
66
99
 
67
100
  raise SDKException.new(Constants::INPUT_ERROR, nil, error, nil)
68
101
  end
69
-
70
102
  @client_id = client_id
71
103
 
72
104
  @client_secret = client_secret
73
105
 
74
106
  @redirect_url = redirect_url
75
107
 
76
- @refresh_token = (type == TokenType::REFRESH) ? token : nil
108
+ @refresh_token = refresh_token
77
109
 
78
- @grant_token = (type == TokenType::GRANT) ? token : nil
79
- end
110
+ @grant_token = grant_token
111
+
112
+ @access_token = nil
113
+
114
+ @expires_in = nil
80
115
 
116
+ @user_mail = nil
117
+
118
+ @id = id
119
+ end
120
+
81
121
  def authenticate(url_connection)
82
122
  @@sync_lock.synchronize do
83
123
  initializer = Initializer.get_initializer
84
124
  store = initializer.store
85
-
86
125
  user = initializer.user
87
126
 
88
- oauth_token = initializer.store.get_token(user, self)
127
+ oauth_token = nil
128
+ if !@id.nil?
129
+ oauth_token = initializer.store.get_token_by_id(@id, self)
130
+ else
131
+ oauth_token = initializer.store.get_token(user, self)
132
+ end
89
133
 
90
- token = nil
134
+ token = ""
91
135
 
92
136
  if oauth_token.nil?
93
137
  token = @refresh_token.nil? ? generate_access_token(user, store).access_token : refresh_access_token(user, store).access_token
@@ -97,7 +141,6 @@ module Authenticator
97
141
  else
98
142
  token = oauth_token.access_token
99
143
  end
100
-
101
144
  url_connection.headers[Constants::AUTHORIZATION] = Constants::OAUTH_HEADER_PREFIX + token
102
145
  end
103
146
  end
@@ -115,8 +158,8 @@ module Authenticator
115
158
  json_body[Constants::CLIENT_ID] = @client_id
116
159
 
117
160
  json_body[Constants::CLIENT_SECRET] = @client_secret
118
-
119
- json_body[Constants::REDIRECT_URI] = @redirect_url
161
+
162
+ json_body[Constants::REDIRECT_URI] = @redirect_url if !@redirect_url.nil?
120
163
 
121
164
  json_body[Constants::GRANT_TYPE] = Constants::GRANT_TYPE_AUTH_CODE
122
165
 
@@ -125,7 +168,11 @@ module Authenticator
125
168
  response = get_response_from_server(json_body)
126
169
 
127
170
  begin
128
- store.save_token(user, parse_response(response))
171
+ parse_response(response)
172
+
173
+ generate_id()
174
+
175
+ store.save_token(user,self)
129
176
  rescue SDKException => e
130
177
  raise e
131
178
  rescue StandardError => e
@@ -141,7 +188,7 @@ module Authenticator
141
188
 
142
189
  json_body[Constants::CLIENT_SECRET] = @client_secret
143
190
 
144
- json_body[Constants::REDIRECT_URI] = @redirect_url
191
+ json_body[Constants::REDIRECT_URI] = @redirect_url if !@redirect_url.nil?
145
192
 
146
193
  json_body[Constants::GRANT_TYPE] = Constants::REFRESH_TOKEN
147
194
 
@@ -150,7 +197,11 @@ module Authenticator
150
197
  response = get_response_from_server(json_body)
151
198
 
152
199
  begin
153
- store.save_token(user, parse_response(response))
200
+ parse_response(response)
201
+
202
+ generate_id()
203
+
204
+ store.save_token(user,self)
154
205
  rescue SDKException => e
155
206
  raise e
156
207
  rescue StandardError => e
@@ -184,7 +235,7 @@ module Authenticator
184
235
  http.use_ssl = true
185
236
 
186
237
  request = Net::HTTP::Post.new(url.request_uri)
187
-
238
+ request.add_field(Constants::USER_AGENT_KEY, Constants::USER_AGENT)
188
239
  request.set_form(json_body, Constants::APPLICATION_FORM_URLENCODED)
189
240
 
190
241
  response = http.request(request)
@@ -207,11 +258,14 @@ module Authenticator
207
258
  def get_current_time_in_millis
208
259
  (Time.now.to_f * 1000).to_i
209
260
  end
210
- end
211
- end
212
261
 
213
- # This module contains different types of token.
214
- module TokenType
215
- GRANT = 'GRANT'.freeze
216
- REFRESH = 'REFRESH'.freeze
217
- end
262
+ def generate_id
263
+ id = ""
264
+ email = Initializer.get_initializer.user.email
265
+ environment = Initializer.get_initializer.environment.name
266
+ id = id + "ruby_" +email[0..email.index(Constants::AT) - 1] + Constants::UNDERSCORE
267
+ id = id + environment + Constants::UNDERSCORE + @refresh_token[@refresh_token.length-4..@refresh_token.length-1]
268
+ @id = id
269
+ end
270
+ end
271
+ end
@@ -6,24 +6,22 @@ require_relative '../../../crm/api/util/constants'
6
6
  module Store
7
7
  # This class stores the user token details to the MySQL DataBase.
8
8
  class DBStore < TokenStore
9
- attr_accessor :user_name, :password, :port_number, :host, :database_name
9
+ attr_reader :user_name, :password, :port_number, :host, :database_name, :table_name
10
10
 
11
11
  # Creates an DBStore class instance with the specified parameters.
12
12
  # @param host [string] A String containing the DataBase host name.
13
13
  # @param database_name A String containing the DataBase name.
14
+ # @param table_name A String containing the table name.
14
15
  # @param user_name A String containing the DataBase user name.
15
16
  # @param password A String containing the DataBase password.
16
17
  # @param port_number A String containing the DataBase port number.
17
- def initialize(host = nil, database_name = nil, user_name = nil, password = nil, port_number = nil)
18
- @host = host.nil? ? Constants::MYSQL_HOST : host
19
-
20
- @database_name = database_name.nil? ? Constants::MYSQL_DATABASE_NAME : database_name
21
-
22
- @user_name = user_name.nil? ? Constants::MYSQL_USER_NAME : user_name
23
-
24
- @password = password.nil? ? '' : password
25
-
26
- @port_number = port_number.nil? ? Constants::MYSQL_PORT_NUMBER : port_number
18
+ def initialize(host: Constants::MYSQL_HOST, database_name: Constants::MYSQL_DATABASE_NAME ,table_name: Constants::MYSQL_TABLE_NAME,user_name: Constants::MYSQL_USER_NAME,password: '',port_number: Constants::MYSQL_PORT_NUMBER )
19
+ @host = host
20
+ @database_name = database_name
21
+ @table_name = table_name
22
+ @user_name = user_name
23
+ @password = password
24
+ @port_number = port_number
27
25
  end
28
26
 
29
27
  def get_token(user, token)
@@ -38,12 +36,24 @@ module Store
38
36
  rs.each do |row|
39
37
  oauthtoken = token
40
38
 
41
- oauthtoken.access_token = row[Constants::ACCESS_TOKEN]
39
+ oauthtoken.client_id = row[Constants::CLIENT_ID]
42
40
 
43
- oauthtoken.expires_in = row[Constants::EXPIRY_TIME]
41
+ oauthtoken.client_secret = row[Constants::CLIENT_SECRET]
42
+
43
+ oauthtoken.grant_token = row[Constants::GRANT_TOKEN]
44
+
45
+ oauthtoken.redirect_url = row[Constants::REDIRECT_URL]
44
46
 
45
47
  oauthtoken.refresh_token = row[Constants::REFRESH_TOKEN]
46
48
 
49
+ oauthtoken.id = row[Constants::ID]
50
+
51
+ oauthtoken.user_mail = row[Constants::USER_MAIL]
52
+
53
+ oauthtoken.access_token = row[Constants::ACCESS_TOKEN]
54
+
55
+ oauthtoken.expires_in = row[Constants::EXPIRY_TIME]
56
+
47
57
  return oauthtoken
48
58
  end
49
59
  nil
@@ -54,7 +64,7 @@ module Store
54
64
  def save_token(user, token)
55
65
  con = Mysql2::Client.new(host: @host, username: @user_name, password: @password, database: @database_name, port: @port_number)
56
66
  if token.is_a? Authenticator::OAuthToken
57
- query = "insert into oauthtoken(user_mail,client_id,refresh_token,access_token,grant_token,expiry_time) values ('#{user.email}','#{token.client_id}','#{token.refresh_token}','#{token.access_token}','#{token.grant_token}','#{token.expires_in}')"
67
+ query = "insert into #{token.table_name}(id,user_mail,client_id,client_secret,refresh_token,access_token,grant_token,expiry_time,redirect_url) values ('#{token.id}','#{user.email}','#{token.client_id}','#{token.client_secret}','#{token.refresh_token}','#{token.access_token}','#{token.grant_token}','#{token.expires_in}','#{token.redirect_url}')"
58
68
  token.user_mail = user.email
59
69
  delete_token(token)
60
70
  con.query(query)
@@ -81,7 +91,7 @@ module Store
81
91
  def delete_tokens
82
92
  con = Mysql2::Client.new(host: @host, username: @user_name, password: @password, database: @database_name, port: @port_number)
83
93
 
84
- query = 'delete from oauthtoken'
94
+ query = "delete * from #{@table_name}"
85
95
 
86
96
  con.query(query)
87
97
 
@@ -94,24 +104,16 @@ module Store
94
104
  tokens = []
95
105
  con = Mysql2::Client.new(host: @host, username: @user_name, password: @password, database: @database_name, port: @port_number)
96
106
 
97
- query = 'select * from oauthtoken;'
107
+ query = "select * from #{@table_name}"
98
108
 
99
109
  rs = con.query(query)
100
110
 
101
111
  con.close
102
112
 
103
113
  rs.each do |row|
104
- token_type = nil
105
- token_value = nil
106
- if !row[Constants::GRANT_TOKEN].nil? && row[Constants::GRANT_TOKEN].length.positive?
107
- token_type = TokenType::GRANT
108
- token_value = row[Constants::GRANT_TOKEN]
109
- else
110
- token_type = TokenType::REFRESH
111
- token_value = row[Constants::REFRESH_TOKEN]
112
- end
113
114
 
114
- oauthtoken = Authenticator::OAuthToken.new(row[Constants::CLIENT_ID], nil, token_value, token_type)
115
+
116
+ oauthtoken = Authenticator::OAuthToken.new(client_id: row[Constants::CLIENT_ID],client_secret: row[Constants::CLIENT_SECRET],grant_token: grant_token,refresh_token: row[Constants::REFRESH_TOKEN])
115
117
 
116
118
  oauthtoken.id = row[Constants::ID]
117
119
 
@@ -119,9 +121,9 @@ module Store
119
121
 
120
122
  oauthtoken.access_token = row[Constants::ACCESS_TOKEN]
121
123
 
122
- oauthtoken.expires_in = row[Constants::EXPIRY_TIME]
124
+ oauthtoken.redirect_url = row[Constants::REDIRECT_URL]
123
125
 
124
- oauthtoken.refresh_token = row[Constants::REFRESH_TOKEN]
126
+ oauthtoken.expires_in = row[Constants::EXPIRY_TIME]
125
127
 
126
128
  tokens.push(oauthtoken)
127
129
  end
@@ -135,7 +137,7 @@ module Store
135
137
 
136
138
  query = is_delete ? 'delete from ' : 'select * from '
137
139
 
138
- query += 'oauthtoken ' + "where user_mail='#{email}' and client_id='#{token.client_id}' and "
140
+ query += "#{@table_name} where user_mail='#{email}' and client_id='#{token.client_id}' and "
139
141
 
140
142
  query += if token.grant_token.nil?
141
143
  "refresh_token='#{token.refresh_token}'"
@@ -145,5 +147,45 @@ module Store
145
147
 
146
148
  query
147
149
  end
150
+ def get_token_by_id(id,token)
151
+ con = Mysql2::Client.new(host: @host, username: @user_name, password: @password, database: @database_name, port: @port_number)
152
+
153
+ if token.is_a? Authenticator::OAuthToken
154
+ query = "select * from #{@table_name} where id='#{id}'"
155
+
156
+ rs = con.query(query)
157
+
158
+ con.close
159
+
160
+ rs.each do |row|
161
+ if id == row[Constants::ID]
162
+ oauthtoken = token
163
+
164
+ oauthtoken.client_id = row[Constants::CLIENT_ID]
165
+
166
+ oauthtoken.client_secret = row[Constants::CLIENT_SECRET]
167
+
168
+ oauthtoken.grant_token = row[Constants::GRANT_TOKEN]
169
+
170
+ oauthtoken.redirect_url = row[Constants::REDIRECT_URL]
171
+
172
+ oauthtoken.refresh_token = row[Constants::REFRESH_TOKEN]
173
+
174
+ oauthtoken.id = row[Constants::ID]
175
+
176
+ oauthtoken.user_mail = row[Constants::USER_MAIL]
177
+
178
+ oauthtoken.access_token = row[Constants::ACCESS_TOKEN]
179
+
180
+ oauthtoken.expires_in = row[Constants::EXPIRY_TIME]
181
+
182
+ return oauthtoken
183
+ end
184
+ end
185
+ end
186
+ nil
187
+ rescue Mysql2::Error => e
188
+ raise SDKException.new(Constants::TOKEN_STORE, Constants::GET_TOKEN_BY_ID_DB_ERROR, nil, e)
189
+ end
148
190
  end
149
191
  end
@@ -16,7 +16,7 @@ module Store
16
16
 
17
17
  unless File.exist? @file_path
18
18
  File.new(@file_path, 'w')
19
- @csv_file = CSV.open(@file_path, 'a', write_headers: true, headers: [Constants::USER_MAIL, Constants::CLIENT_ID, Constants::REFRESH_TOKEN, Constants::ACCESS_TOKEN, Constants::GRANT_TOKEN, Constants::EXPIRY_TIME])
19
+ @csv_file = CSV.open(@file_path, 'a', write_headers: true, headers: [Constants::ID,Constants::USER_MAIL, Constants::CLIENT_ID,Constants::CLIENT_SECRET, Constants::REFRESH_TOKEN, Constants::ACCESS_TOKEN, Constants::GRANT_TOKEN, Constants::EXPIRY_TIME,Constants::REDIRECT_URL])
20
20
  end
21
21
  @csv_file = CSV.open(@file_path, 'a')
22
22
  end
@@ -38,15 +38,33 @@ module Store
38
38
  end
39
39
 
40
40
  file_contents.each do |row|
41
- token_check = grant_token.nil? ? refresh_token == row[2] : grant_token == row[4]
41
+ token_check = grant_token.nil? ? refresh_token == row[4] : grant_token == row[6]
42
+ if (row[1] == user_email) && (row[2] == client_id) && token_check
42
43
 
43
- if (row[0] == user_email) && (row[1] == client_id) && token_check
44
- token.refresh_token = row[2]
44
+ grant_token = (!row[6].nil? && !row[6].empty?) ? row[6] : nil
45
45
 
46
- token.access_token = row[3]
46
+ redirect_url = (!row[8].nil? && !row[8].empty?) ? row[8] : nil
47
+
48
+ oauthtoken = token
47
49
 
48
- token.expires_in = row[5]
49
- return token
50
+ oauthtoken.id = row[0]
51
+
52
+ oauthtoken.user_mail = row[1]
53
+
54
+ oauthtoken.client_id = row[2]
55
+
56
+ oauthtoken.client_secret = row[3]
57
+
58
+ oauthtoken.refresh_token = row[4]
59
+
60
+ oauthtoken.access_token = row[5]
61
+
62
+ oauthtoken.grant_token = grant_token
63
+
64
+ oauthtoken.expires_in = row[7]
65
+
66
+ oauthtoken.redirect_url = redirect_url
67
+ return oauthtoken
50
68
  end
51
69
  end
52
70
  end
@@ -60,25 +78,21 @@ module Store
60
78
  file_contents = CSV.table(@file_path)
61
79
  file_contents.each do |row|
62
80
  unless row == @csv_file.header_row?
63
- token_type = nil
64
- token_value = nil
65
- if !row[4].nil? && row[4].length.positive?
66
- token_type = TokenType::GRANT
67
- token_value = row[4]
68
- else
69
- token_type = TokenType::REFRESH
70
- token_value = row[2]
71
- end
81
+ grant_token = (!row[6].nil? && !row[6].empty?) ? row[6] : nil
82
+
83
+ redirect_url = (!row[8].nil? && !row[8].empty?) ? row[8] : nil
72
84
 
73
- token = Authenticator::OAuthToken.new(row[1], nil, token_value, token_type)
85
+ token = Authenticator::OAuthToken.new(client_id: row[2],client_secret: row[3],grant_token: grant_token,refresh_token: row[4])
86
+
87
+ token.id = row[0]
74
88
 
75
- token.user_mail = row[0]
89
+ token.user_mail = row[1]
76
90
 
77
- token.refresh_token = row[2]
91
+ token.access_token = row[5]
78
92
 
79
- token.access_token = row[3]
93
+ token.expires_in = row[7]
80
94
 
81
- token.expires_in = row[5]
95
+ token.redirect_url = redirect_url
82
96
 
83
97
  tokens.push(token)
84
98
  end
@@ -96,10 +110,14 @@ module Store
96
110
  delete_token(token)
97
111
  values_list = []
98
112
 
113
+ values_list.push(token.id)
114
+
99
115
  values_list.push(user.email)
100
116
 
101
117
  values_list.push(token.client_id)
102
118
 
119
+ values_list.push(token.client_secret)
120
+
103
121
  values_list.push(token.refresh_token)
104
122
 
105
123
  values_list.push(token.access_token)
@@ -107,6 +125,8 @@ module Store
107
125
  values_list.push(token.grant_token)
108
126
 
109
127
  values_list.push(token.expires_in)
128
+
129
+ values_list.push(token.redirect_url)
110
130
  end
111
131
  @csv_file = CSV.open(@file_path, 'a') if @csv_file.closed?
112
132
  @csv_file << values_list
@@ -118,6 +138,7 @@ module Store
118
138
 
119
139
  def delete_token(token)
120
140
  if token.is_a? Authenticator::OAuthToken
141
+
121
142
  grant_token = token.grant_token
122
143
 
123
144
  refresh_token = token.refresh_token
@@ -134,9 +155,10 @@ module Store
134
155
 
135
156
  table.delete_if do |row|
136
157
  unless row == @csv_file.header_row?
137
- token_check = grant_token.nil? ? refresh_token == row[:refresh_token] : grant_token == row[:grant_token]
138
-
139
- row[:user_mail] == user_email and row[:client_id] == client_id and token_check
158
+
159
+ token_check = grant_token.nil? ? refresh_token == row[4] : grant_token == row[6]
160
+
161
+ row[1] == user_email and row[2] == client_id and token_check
140
162
  end
141
163
  end
142
164
 
@@ -161,5 +183,54 @@ module Store
161
183
  rescue StandardError => e
162
184
  raise SDKException.new(Constants::TOKEN_STORE, Constants::DELETE_TOKENS_FILE_ERROR, nil, e)
163
185
  end
186
+
187
+ def get_token_by_id(id, token)
188
+ if token.is_a? Authenticator::OAuthToken
189
+
190
+ is_row_present = false
191
+
192
+ file_contents = CSV.read(@file_path)
193
+
194
+ file_contents.each do |row|
195
+
196
+ if row[0] == id
197
+
198
+ is_row_present = true
199
+
200
+ grant_token = (!row[6].nil? && !row[6].empty?) ? row[6] : nil
201
+
202
+ redirect_url = (!row[8].nil? && !row[8].empty?) ? row[8] : nil
203
+
204
+ oauthtoken = token
205
+
206
+ oauthtoken.id = row[0]
207
+
208
+ oauthtoken.user_mail = row[1]
209
+
210
+ oauthtoken.client_id = row[2]
211
+
212
+ oauthtoken.client_secret = row[3]
213
+
214
+ oauthtoken.refresh_token = row[4]
215
+
216
+ oauthtoken.access_token = row[5]
217
+
218
+ oauthtoken.grant_token = grant_token
219
+
220
+ oauthtoken.expires_in = row[7]
221
+
222
+ oauthtoken.redirect_url = redirect_url
223
+
224
+ return oauthtoken
225
+ end
226
+ end
227
+ if !is_row_present
228
+ raise SDKException.new(Constants::TOKEN_STORE, Constants::GET_TOKEN_BY_ID_FILE_ERROR, nil, nil)
229
+ end
230
+ end
231
+ nil
232
+ rescue StandardError => e
233
+ raise SDKException.new(Constants::TOKEN_STORE, Constants::GET_TOKEN_BY_ID_FILE_ERROR, nil, e)
234
+ end
164
235
  end
165
236
  end