mints 0.0.18 → 0.0.19

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/lib/client.rb +38 -32
  3. data/lib/contact.rb +65 -60
  4. data/lib/mints/controllers/base_api_controller.rb +4 -4
  5. data/lib/mints/controllers/base_controller.rb +12 -3
  6. data/lib/mints_helper.rb +47 -0
  7. data/lib/pub.rb +75 -87
  8. data/lib/user/config/api_keys.rb +65 -0
  9. data/lib/user/config/appointments.rb +221 -0
  10. data/lib/user/config/attribute_groups.rb +77 -0
  11. data/lib/user/config/attributes.rb +86 -0
  12. data/lib/user/config/calendars.rb +89 -0
  13. data/lib/user/config/config.rb +65 -0
  14. data/lib/user/config/importers.rb +184 -0
  15. data/lib/user/config/public_folders.rb +108 -0
  16. data/lib/user/config/relationships.rb +138 -0
  17. data/lib/user/config/roles.rb +84 -0
  18. data/lib/user/config/seeds.rb +14 -0
  19. data/lib/user/config/system_settings.rb +53 -0
  20. data/lib/user/config/tags.rb +63 -0
  21. data/lib/user/config/taxonomies.rb +124 -0
  22. data/lib/user/config/teams.rb +70 -0
  23. data/lib/user/config/users.rb +76 -0
  24. data/lib/user/contacts/contacts.rb +21 -0
  25. data/lib/user/content/assets.rb +98 -0
  26. data/lib/user/content/content.rb +235 -0
  27. data/lib/user/content/content_instances.rb +147 -0
  28. data/lib/user/content/content_templates.rb +111 -0
  29. data/lib/user/content/conversations.rb +174 -0
  30. data/lib/user/content/dam.rb +88 -0
  31. data/lib/user/content/forms.rb +168 -0
  32. data/lib/user/content/message_templates.rb +162 -0
  33. data/lib/user/content/messages.rb +90 -0
  34. data/lib/user/content/pages.rb +81 -0
  35. data/lib/user/content/stories.rb +164 -0
  36. data/lib/user/content/story_templates.rb +95 -0
  37. data/lib/user/crm/companies.rb +111 -0
  38. data/lib/user/crm/contacts.rb +312 -0
  39. data/lib/user/crm/crm.rb +21 -0
  40. data/lib/user/crm/deals.rb +111 -0
  41. data/lib/user/crm/favorites.rb +17 -0
  42. data/lib/user/crm/segments.rb +132 -0
  43. data/lib/user/crm/users.rb +22 -0
  44. data/lib/user/crm/workflow_step_objects.rb +89 -0
  45. data/lib/user/crm/workflow_steps.rb +49 -0
  46. data/lib/user/crm/workflows.rb +70 -0
  47. data/lib/user/ecommerce/ecommerce.rb +29 -0
  48. data/lib/user/ecommerce/item_prices.rb +86 -0
  49. data/lib/user/ecommerce/locations.rb +166 -0
  50. data/lib/user/ecommerce/order_items_groups.rb +109 -0
  51. data/lib/user/ecommerce/order_statuses.rb +26 -0
  52. data/lib/user/ecommerce/orders.rb +258 -0
  53. data/lib/user/ecommerce/price_lists.rb +73 -0
  54. data/lib/user/ecommerce/product_templates.rb +104 -0
  55. data/lib/user/ecommerce/product_variations.rb +129 -0
  56. data/lib/user/ecommerce/products.rb +169 -0
  57. data/lib/user/ecommerce/skus.rb +88 -0
  58. data/lib/user/ecommerce/taxes.rb +82 -0
  59. data/lib/user/ecommerce/variant_options.rb +69 -0
  60. data/lib/user/ecommerce/variant_values.rb +72 -0
  61. data/lib/user/helpers/helpers.rb +113 -0
  62. data/lib/user/helpers/object_activities.rb +83 -0
  63. data/lib/user/helpers/object_folders.rb +82 -0
  64. data/lib/user/helpers/user_folders.rb +83 -0
  65. data/lib/user/marketing/marketing.rb +120 -0
  66. data/lib/user/profile/profile.rb +111 -0
  67. data/lib/user.rb +22 -922
  68. metadata +61 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0cff6a549992ee75536a6696575ef58435328068adcbdd3658fc6633ec0e4fd5
4
- data.tar.gz: c2fc848075d8156ba44aadc01c45b0d01c6eeaf5a7a21201d38b51e99ad86d54
3
+ metadata.gz: eb39e61077ebde851f278b96e82be85962bdacd093158d179cc5107bf3a4c5b2
4
+ data.tar.gz: f5d84797fc4526b3f8c2164d79062b0035db452c0a3a62d02967e33f1649a78b
5
5
  SHA512:
6
- metadata.gz: e865b46eb2536dd6f14ad39d0ebe691ec2db0cf98bd3c1861223dd3e9462deb555eee92d3ece5da498cbd4655dc6443774e6ca1ea94c0225f5a8db1977a7b237
7
- data.tar.gz: f5203d5ba1b426812abd7f281146c84b58c2761e1be388b0ed004bd74ccd98000964615787d127a275848978fc029f444db2f8647f6a924df918814cf3f3c856
6
+ metadata.gz: 8c902cadde2d3951e9aecf9e6a81f86f7af47224071a14ff0ea9b72fc4f2607f2c60729d2ce4843dbdf0d9e582135fba51cf84b37ed6d6908227e5438a217e4a
7
+ data.tar.gz: faed4589390dbe456f973212e9e2deaa759082f2ed02c6aedfea493147b80d3935261a50ce6d9d41b77a2e5b9fd2e9ef456b19e80914118f8e5c49d9a94b3684
data/lib/client.rb CHANGED
@@ -20,8 +20,8 @@ module Mints
20
20
  self.set_scope(scope)
21
21
  end
22
22
 
23
- def raw(action, url, options = nil, data = nil, base_url = nil)
24
- base_url = @base_url if !base_url
23
+ def raw(action, url, options = nil, data = nil, base_url = nil, compatibility_options = {})
24
+ base_url = @base_url if !base_url
25
25
  uri = ""
26
26
  if (options && options.class == Hash)
27
27
  if (options[:jfilters] && options[:jfilters].class == Hash)
@@ -52,7 +52,7 @@ module Mints
52
52
  response = @redis_server.get(full_url)
53
53
  result_from_cache = true
54
54
  else
55
- response = self.send("#{@scope}_#{action}", "#{full_url}")
55
+ response = self.send("#{@scope}_#{action}", "#{full_url}", compatibility_options)
56
56
  @redis_server.setex(full_url,time,response)
57
57
  end
58
58
  break
@@ -63,18 +63,18 @@ module Mints
63
63
  end
64
64
 
65
65
  if !url_need_cache
66
- response = self.send("#{@scope}_#{action}", "#{full_url}")
66
+ response = self.send("#{@scope}_#{action}", "#{full_url}", compatibility_options)
67
67
  end
68
68
 
69
69
  elsif action === 'create' or action === 'post'
70
70
  action = 'post'
71
- response = self.send("#{@scope}_#{action}", "#{full_url}", data)
71
+ response = self.send("#{@scope}_#{action}", "#{full_url}", data, compatibility_options)
72
72
  elsif action === 'put' or action === 'patch' or action ==='update'
73
73
  action = 'put'
74
- response = self.send("#{@scope}_#{action}", "#{full_url}", data)
74
+ response = self.send("#{@scope}_#{action}", "#{full_url}", data, compatibility_options)
75
75
  elsif action === 'delete' or action === 'destroy'
76
76
  action = 'delete'
77
- response = self.send("#{@scope}_#{action}", "#{full_url}", data)
77
+ response = self.send("#{@scope}_#{action}", "#{full_url}", data, compatibility_options)
78
78
  end
79
79
  if result_from_cache
80
80
  return parsed_response = JSON.parse(response)
@@ -124,7 +124,7 @@ module Mints
124
124
  uri.query_values = args[1]
125
125
  end
126
126
  url = self.get_url(route, object, uri, slug)
127
- response = self.send("#{@scope}_#{action}", url)
127
+ response = self.send("#{@scope}_#{action}", url, compatibility_options)
128
128
  elsif action == "post" or action == "create"
129
129
  if args[1].class == Hash
130
130
  uri.query_values = args[1]
@@ -132,7 +132,7 @@ module Mints
132
132
  url = self.get_url(route, object, uri, slug)
133
133
  action = 'post'
134
134
  data = args[0]
135
- response = self.send("#{@scope}_#{action}", url, {data: data})
135
+ response = self.send("#{@scope}_#{action}", url, {data: data}, compatibility_options)
136
136
  elsif action == "put" or action == "update"
137
137
  if args.first.class == String or Integer
138
138
  slug = args.first
@@ -142,7 +142,7 @@ module Mints
142
142
  action = 'put'
143
143
  id = args[0]
144
144
  data = args[1]
145
- response = self.send("#{@scope}_#{action}", "#{url}", {data: data})
145
+ response = self.send("#{@scope}_#{action}", "#{url}", {data: data}, compatibility_options)
146
146
  end
147
147
 
148
148
  if response.response.code == "404"
@@ -239,81 +239,87 @@ module Mints
239
239
  end
240
240
 
241
241
  # Start contact context
242
- def contact_get(url)
242
+ def contact_get(url, compatibility_options)
243
243
  headers = {
244
244
  "ApiKey" => @api_key,
245
245
  "Accept" => "application/json",
246
246
  "ContactToken" => @contact_token_id
247
247
  }
248
+ headers["Content-Type"] = "application/json" unless compatibility_options['no_content_type']
248
249
  headers["Authorization"] = "Bearer #{@session_token}" if @session_token
249
250
  return self.http_get(url, headers)
250
251
  end
251
252
 
252
- def contact_post(url, data)
253
+ def contact_post(url, data, compatibility_options)
253
254
  headers = {
254
255
  "ApiKey" => @api_key,
255
256
  "Accept" => "application/json",
256
257
  "ContactToken" => @contact_token_id
257
258
  }
259
+ headers["Content-Type"] = "application/json" unless compatibility_options['no_content_type']
258
260
  headers["Authorization"] = "Bearer #{@session_token}" if @session_token
259
261
  return self.http_post(url, headers, data)
260
262
  end
261
263
 
262
- def contact_put(url, data)
264
+ def contact_put(url, data, compatibility_options)
263
265
  headers = {
264
266
  "ApiKey" => @api_key,
265
267
  "Accept" => "application/json",
266
268
  "ContactToken" => @contact_token_id
267
269
  }
270
+ headers["Content-Type"] = "application/json" unless compatibility_options['no_content_type']
268
271
  headers["Authorization"] = "Bearer #{@session_token}" if @session_token
269
272
  return self.http_put(url, headers, data)
270
273
  end
271
274
 
272
275
  # Start User context
273
- def user_get(url)
276
+ def user_get(url, compatibility_options)
274
277
  headers = {
275
- "ApiKey" => @api_key,
276
- "Accept" => "application/json"
278
+ "Accept" => "application/json",
279
+ "ApiKey" => @api_key
277
280
  }
281
+ headers["Content-Type"] = "application/json" unless compatibility_options['no_content_type']
278
282
  headers["Authorization"] = "Bearer #{@session_token}" if @session_token
279
283
  return self.http_get(url, headers)
280
284
  end
281
285
 
282
- def user_post(url, data)
286
+ def user_post(url, data, compatibility_options)
283
287
  headers = {
284
- "ApiKey" => @api_key,
285
- "Accept" => "application/json"
288
+ "Accept" => "application/json",
289
+ "ApiKey" => @api_key
286
290
  }
291
+ headers["Content-Type"] = "application/json" unless compatibility_options['no_content_type']
287
292
  headers["Authorization"] = "Bearer #{@session_token}" if @session_token
288
293
  return self.http_post(url, headers, data)
289
294
  end
290
295
 
291
- def user_put(url, data)
296
+ def user_put(url, data, compatibility_options)
292
297
  headers = {
293
- "ApiKey" => @api_key,
294
298
  "Accept" => "application/json",
295
- "Content-Type" => "application/json"
299
+ "ApiKey" => @api_key
296
300
  }
301
+ headers["Content-Type"] = "application/json" unless compatibility_options['no_content_type']
297
302
  headers["Authorization"] = "Bearer #{@session_token}" if @session_token
298
303
  return self.http_put(url, headers, data)
299
304
  end
300
305
 
301
- def user_delete(url, data)
306
+ def user_delete(url, data, compatibility_options)
302
307
  headers = {
303
- "ApiKey" => @api_key,
304
- "Accept" => "application/json"
308
+ "Accept" => "application/json",
309
+ "ApiKey" => @api_key
305
310
  }
311
+ headers["Content-Type"] = "application/json" unless compatibility_options['no_content_type']
306
312
  headers["Authorization"] = "Bearer #{@session_token}" if @session_token
307
313
  return self.http_delete(url, headers, data)
308
314
  end
309
315
  # End User Context
310
316
 
311
- def public_get(url, headers = nil)
317
+ def public_get(url, headers = nil, compatibility_options)
312
318
  h = {
313
319
  "Accept" => "application/json",
314
- "Content-Type" => "application/json",
315
320
  "ApiKey" => @api_key
316
321
  }
322
+ h["Content-Type"] = "application/json" unless compatibility_options['no_content_type']
317
323
  h["ContactToken"] = @contact_token_id if @contact_token_id
318
324
  if headers
319
325
  headers.each do |k,v|
@@ -323,12 +329,12 @@ module Mints
323
329
  self.http_get(url, h)
324
330
  end
325
331
 
326
- def public_post(url, headers = nil, data)
332
+ def public_post(url, headers = nil, data, compatibility_options)
327
333
  h = {
328
334
  "Accept" => "application/json",
329
- "Content-Type" => "application/json",
330
335
  "ApiKey" => @api_key
331
336
  }
337
+ h["Content-Type"] = "application/json" unless compatibility_options['no_content_type']
332
338
  h["ContactToken"] = @session_token if @session_token
333
339
  if headers
334
340
  headers.each do |k,v|
@@ -338,12 +344,12 @@ module Mints
338
344
  self.http_post(url, h, data)
339
345
  end
340
346
 
341
- def public_put(url, headers = nil, data)
347
+ def public_put(url, headers = nil, data, compatibility_options)
342
348
  h = {
343
- "Accept" => "application/json",
344
- "Content-Type" => "application/json",
349
+ "Accept" => "application/json",
345
350
  "ApiKey" => @api_key
346
351
  }
352
+ h["Content-Type"] = "application/json" unless compatibility_options['no_content_type']
347
353
  h["ContactToken"] = @contact_token_id if @contact_token_id
348
354
  if headers
349
355
  headers.each do |k,v|
data/lib/contact.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require_relative "./client.rb"
2
+ require_relative "./mints_helper.rb"
2
3
  include ActionController::Cookies
3
4
  module Mints
4
5
  class Contact
@@ -7,27 +8,33 @@ module Mints
7
8
  # === Initialize.
8
9
  # Class constructor
9
10
  #
11
+ # ==== Parameters
12
+ # host:: (String) -- It's the visitor IP.
13
+ # api_key:: (String) -- Mints instance api key.
14
+ # contact_token_id:: (Integer) -- Cookie 'mints_contact_id' value (mints_contact_token).
15
+ #
16
+ # ==== Return
17
+ # Returns a Contact object
10
18
  def initialize(host, api_key, session_token = nil, contact_token_id = nil, debug = false)
11
19
  @client = Mints::Client.new(host, api_key, "contact", session_token, contact_token_id, debug)
12
20
  end
13
21
 
14
22
  ##
15
23
  # === Login.
16
- # Starts a contact session
24
+ # Starts a contact session.
17
25
  #
18
26
  # ==== Parameters:
19
- # * +email+ - [_String_] The email that will be logged.
20
- # * +password+ - [_String_] The password of the email.
27
+ # email:: (String) -- The email that will be logged.
28
+ # password:: (String) -- The password of the email.
21
29
  #
22
30
  # ==== Example
23
- # @mints_contact.login("brown.abigail@dubuque.com", "helloword")
24
- #
31
+ # @mints_contact.login("email@example.com", "password")
25
32
  def login(email, password)
26
33
  data = {
27
34
  email: email,
28
35
  password: password
29
36
  }
30
- response = @client.raw("post", "/contacts/login", nil, {data: data})
37
+ response = @client.raw("post", "/contacts/login", nil, {data: data}.to_json)
31
38
  if response.key? "session_token"
32
39
  @client.session_token = response["session_token"]
33
40
  end
@@ -39,13 +46,12 @@ module Mints
39
46
  # Starts a contact session with a token received in the contact email. The token will be received by send_magic_link method.
40
47
  #
41
48
  # ==== Parameters:
42
- # * +token+ - [_String_] The email that will be logged.
49
+ # token:: (String) -- The email token that will be used to log in.
43
50
  #
44
51
  # ==== Example
45
52
  # @mints_contact.magic_link_login(
46
53
  # "d8618c6d-a165-41cb-b3ec-d053cbf30059:zm54HtRdfHED8dpILZpjyqjPIceiaXNLfOklqM92fveBS0nDtyPYBlI4CPlPe3zq"
47
54
  # )
48
- #
49
55
  def magic_link_login(token)
50
56
  response = @client.raw("get", "/contacts/magic-link-login/#{token}", nil, '/api/v1')
51
57
  if response.key? "session_token"
@@ -59,18 +65,17 @@ module Mints
59
65
  # Send magic link to contact by email. That magic link will be used in magic_link_login method.
60
66
  #
61
67
  # ==== Parameters:
62
- # * +email+ - [_String_] Contact's email.
63
- # * +template_slug+ - [_String_] Email template's slug to be used in the email.
64
- # * +redirectUrl+ - [_String_] Url to be redirected in the implemented page.
65
- # * +lifeTime+ - [_Integer_] Maximum time of use in minutes.
66
- # * +maxVisits+ - [_Integer_] The maximum number of uses of a token.
68
+ # email:: (String) -- Contact's email.
69
+ # template_slug:: (String) -- Email template's slug to be used in the email.
70
+ # redirectUrl:: (String) -- Url to be redirected in the implemented page.
71
+ # lifeTime:: (Integer) -- Maximum time of use in minutes.
72
+ # maxVisits:: (Integer) -- The maximum number of uses of a token.
67
73
  #
68
74
  # ==== First Example
69
- # @mints_contact.send_magic_link("brown.abigail@dubuque.com", "")
75
+ # @mints_contact.send_magic_link("email@example.com", "template_slug")
70
76
  #
71
77
  # ==== Second Example
72
- # @mints_contact.send_magic_link("brown.abigail@dubuque.com", "", "", 1440, 3)
73
- #
78
+ # @mints_contact.send_magic_link("email@example.com", "template_slug", "", 1440, 3)
74
79
  def send_magic_link(email, template_slug, redirectUrl = '', lifeTime = 1440, maxVisits = nil)
75
80
  data = {
76
81
  email: email,
@@ -79,7 +84,7 @@ module Mints
79
84
  redirectUrl: redirectUrl,
80
85
  templateId: template_slug
81
86
  }
82
- response = @client.raw("post", "/contacts/magic-link", nil, { data: data }, '/api/v1')
87
+ response = @client.raw("post", "/contacts/magic-link", nil, { data: data }.to_json, '/api/v1')
83
88
  return response
84
89
  end
85
90
 
@@ -88,9 +93,8 @@ module Mints
88
93
  # Ends a contact session previously logged.
89
94
  #
90
95
  # ==== Example
91
- # @mints_contact.login('brown.abigail@dubuque.com', 'helloword')
96
+ # @mints_contact.login("email@example.com", "password")
92
97
  # @mints_contact.logout
93
- #
94
98
  def logout
95
99
  response = @client.raw("post", "/contacts/logout") if session_token?
96
100
  if response["success"]
@@ -104,15 +108,14 @@ module Mints
104
108
  # Change password without email. To change the password a contact must be logged.
105
109
  #
106
110
  # ==== Parameters:
107
- # * +data+ - [] A new password allocated in a data key.
111
+ # data:: (Hash) -- A new password allocated in a data key.
108
112
  #
109
113
  # ==== Example
110
- # @mints_contact.login('brown.abigail@dubuque.com', 'helloword')
111
- # data = { "data": { "password": "123456" } }
112
- # @mints_contact.change_password(data)
113
- #
114
+ # @mints_contact.login("email@example.com", "password")
115
+ # data = { "password": "123456" }
116
+ # @data = @mints_contact.change_password(data)
114
117
  def change_password(data)
115
- return @client.raw("post", "/contacts/change-password", nil, data)
118
+ return @client.raw("post", "/contacts/change-password", nil, data_transform(data))
116
119
  end
117
120
 
118
121
  ##
@@ -120,14 +123,13 @@ module Mints
120
123
  # Send a email that contains a token to a contact. That token will be used in reset_password to establish a new password.
121
124
  #
122
125
  # ==== Parameters:
123
- # * +data+ - [] It's a data key where will be hosted the destination email.
126
+ # data:: (Hash) -- It's a data key where will be hosted the destination email.
124
127
  #
125
128
  # ==== Example
126
- # data = { "data": { "email": "brown.abigail@dubuque.com" } }
129
+ # data = { "email": "email@example.com" }
127
130
  # @mints_contact.recover_password(data)
128
- #
129
131
  def recover_password(data)
130
- return @client.raw("post", "/contacts/recover-password", nil, data)
132
+ return @client.raw("post", "/contacts/recover-password", nil, data_transform(data))
131
133
  end
132
134
 
133
135
  ##
@@ -135,25 +137,23 @@ module Mints
135
137
  # Reset password using a token. The token is obtained by recover_password method.
136
138
  #
137
139
  # ==== Parameters:
138
- # * +data+ - [] It's a set of data which contains all the information to reset a contact password.
140
+ # data:: (Hash) -- It's a set of data which contains all the information to reset a contact password.
139
141
  #
140
142
  # ==== Example
141
- # data = { "data": {
142
- # "email": "brown.abigail@dubuque.com",
143
- # "password": "helloword",
144
- # "password_confirmation": "helloword",
143
+ # data = {
144
+ # "email": "email@example.com",
145
+ # "password": "password",
146
+ # "password_confirmation": "password",
145
147
  # "token": "644aa3aa0831d782cc42e42b11aedea9a2234389af4f429a8d96651295ecfa09"
146
- # } }
148
+ # }
147
149
  # @mints_contact.reset_password(data)
148
- #
149
150
  def reset_password(data)
150
- return @client.raw("post", "/contacts/reset-password", nil, data)
151
+ return @client.raw("post", "/contacts/reset-password", nil, data_transform(data))
151
152
  end
152
153
 
153
154
  ##
154
155
  # === OAuth Login.
155
- # Login a contact using oauth
156
- #
156
+ # Login a contact using oauth.
157
157
  def oauth_login(data)
158
158
  return @client.raw("post", "/contacts/oauth-login", nil, data)
159
159
  end
@@ -162,11 +162,17 @@ module Mints
162
162
  # === Me.
163
163
  # Get contact logged info.
164
164
  #
165
- # ==== Example
165
+ # ==== First Example
166
166
  # @mints_contact.me
167
167
  #
168
- def me
169
- return @client.raw("get", "/contacts/me")
168
+ # ==== Second Example
169
+ # options = {
170
+ # "attributes": true,
171
+ # "taxonomies": true
172
+ # }
173
+ # @data = @mints_contact.me(options)
174
+ def me(options = nil)
175
+ return @client.raw("get", "/contacts/me", options)
170
176
  end
171
177
 
172
178
  ##
@@ -175,7 +181,6 @@ module Mints
175
181
  #
176
182
  # ==== Example
177
183
  # @mints_contact.status
178
- #
179
184
  def status
180
185
  return @client.raw("get", "/contacts/status")
181
186
  end
@@ -185,18 +190,17 @@ module Mints
185
190
  # Update logged contact attributes.
186
191
  #
187
192
  # ==== Parameters:
188
- # * +data+ - [] It's the data to update with a session active.
193
+ # data:: (Hash) -- It's the data to update with a session active.
189
194
  #
190
195
  # ==== Example
191
- # @mints_contact.login("brown.abigail@dubuque.com", "helloword")
192
- # data = { "data": {
193
- # "given_name": "Alonso",
194
- # "last_name": "Garcia"
195
- # } }
196
+ # @mints_contact.login("email@example.com", "password")
197
+ # data = {
198
+ # "given_name": "Given Name",
199
+ # "last_name": "Last Name"
200
+ # }
196
201
  # @mints_contact.update(data)
197
- #
198
202
  def update(data)
199
- return @client.raw("put", "/contacts/update", nil, data)
203
+ return @client.raw("put", "/contacts/update", nil, data_transform(data))
200
204
  end
201
205
 
202
206
  ##
@@ -204,23 +208,24 @@ module Mints
204
208
  # Register a contact.
205
209
  #
206
210
  # ==== Parameters:
207
- # * +data+ - [] It's the register data.
211
+ # data:: (Hash) -- It's the register data.
208
212
  #
209
213
  # ==== Example
210
- # data = { "data": {
211
- # "email": "carlos@mints.cloud",
212
- # "given_name": "Carlos",
213
- # "last_name": "Fernandez",
214
- # "password": "123456"
215
- # } }
214
+ # data = {
215
+ # "email": "email@example.com",
216
+ # "given_name": "Given Name",
217
+ # "last_name": "Last Name",
218
+ # "password": "password"
219
+ # }
216
220
  # @mints_contact.register(data);
217
- #
218
221
  def register(data)
219
- return @client.raw("post", "/contacts/register", nil, data)
222
+ return @client.raw("post", "/contacts/register", nil, data_transform(data))
220
223
  end
221
224
 
222
225
  private
223
226
 
227
+ include MintsHelper
228
+
224
229
  def session_token?
225
230
  if @client.session_token
226
231
  return true
@@ -10,7 +10,7 @@ module Mints
10
10
  response = @mints_contact.login(email, password)
11
11
  # Get session token from response
12
12
  session_token = response['session_token']
13
- id_token = response['contact']['contact_token']
13
+ id_token = response['contact']['contact_token'] ? response['contact']['contact_token'] : response['contact']['id_token']
14
14
  # Set a permanent cookie with the session token
15
15
  cookies.permanent[:mints_contact_session_token] = { value: session_token, secure: true, httponly: true }
16
16
  cookies.permanent[:mints_contact_id] = { value: id_token, secure: true, httponly: true }
@@ -18,15 +18,15 @@ module Mints
18
18
  end
19
19
 
20
20
  ##
21
- # === Mints cotnact Login.
22
- # Starts a cotnact session in mints.cloud and set a session cookie
21
+ # === Mints contact Login.
22
+ # Starts a contact session in mints.cloud and set a session cookie
23
23
  def mints_contact_magic_link_login(hash)
24
24
  # Login in mints
25
25
  response = @mints_contact.magic_link_login(hash)
26
26
  if response['data']
27
27
  # Get session token from response
28
28
  session_token = response['data']['session_token']
29
- id_token = response['data']['contact']['contact_token']
29
+ id_token = response['data']['contact']['contact_token'] ? response['data']['contact']['contact_token'] : response['data']['contact']['id_token']
30
30
  # Set a permanent cookie with the session token
31
31
  cookies.permanent[:mints_contact_session_token] = { value: session_token, secure: true, httponly: true }
32
32
  cookies.permanent[:mints_contact_id] = { value: id_token, secure: true, httponly: true }
@@ -24,7 +24,7 @@ module Mints
24
24
  response = @mints_contact.login(email, password)
25
25
  # Get session token from response
26
26
  session_token = response['session_token']
27
- id_token = response['contact']['contact_token']
27
+ id_token = response['contact']['contact_token'] ? response['contact']['contact_token'] : response['contact']['id_token']
28
28
  # Set a permanent cookie with the session token
29
29
  cookies.permanent[:mints_contact_session_token] = { value: session_token, secure: true, httponly: true }
30
30
  cookies.permanent[:mints_contact_id] = { value: id_token, secure: true, httponly: true }
@@ -39,7 +39,7 @@ module Mints
39
39
  response = @mints_contact.login(email, password)
40
40
  # Get session token from response
41
41
  session_token = response['session_token']
42
- id_token = response['contact']['contact_token']
42
+ id_token = response['contact']['contact_token'] ? response['contact']['contact_token'] : response['contact']['id_token']
43
43
  # Set a permanent cookie with the session token
44
44
  cookies.permanent[:mints_contact_session_token] = { value: session_token, secure: true, httponly: true }
45
45
  cookies.permanent[:mints_contact_id] = { value: id_token, secure: true, httponly: true }
@@ -80,7 +80,7 @@ module Mints
80
80
  if @debug
81
81
  puts "RESPONSE IN REGISTER VISIT: #{response}"
82
82
  end
83
- @contact_token = response['contact_token']
83
+ @contact_token = response['contact_token'] ? response['contact_token'] : response['user_token']
84
84
  @visit_id = response['visit_id']
85
85
  cookies.permanent[:mints_contact_id] = { value: @contact_token, secure: true, httponly: true }
86
86
  end
@@ -115,6 +115,15 @@ module Mints
115
115
  # === Set mints contact client.
116
116
  # Initialize the public client and set the contact token
117
117
  def set_mints_contact_client
118
+ if File.exists?("#{Rails.root}/mints_config.yml.erb")
119
+ template = ERB.new File.new("#{Rails.root}/mints_config.yml.erb").read
120
+ config = YAML.load template.result(binding)
121
+ @host = config["mints"]["host"]
122
+ @api_key = config["mints"]["api_key"]
123
+ @debug = config["sdk"]["debug"] ? config["sdk"]["debug"] : false
124
+ else
125
+ raise 'MintsBadCredentialsError'
126
+ end
118
127
  # Initialize mints clontact client
119
128
  session_token = cookies[:mints_contact_session_token] ? cookies[:mints_contact_session_token] : nil
120
129
  contact_token_id = cookies[:mints_contact_id] ? cookies[:mints_contact_id] : nil
@@ -0,0 +1,47 @@
1
+
2
+ module MintsHelper
3
+ # === Get query results.
4
+ # Method used to give the options to make a 'post' or 'get' request.
5
+ #
6
+ # ==== Parameters
7
+ # url:: (String) -- Url to make the request.
8
+ # options:: (Hash) -- List of {Resource collection Options}[#class-Mints::User-label-Resource+collections+options+] shown above can be used as parameter.
9
+ # use_post:: (Boolean) -- Variable to determine if the request is by 'post' or 'get' functions.
10
+ #
11
+ def get_query_results(url, options = nil, use_post = true)
12
+ if use_post
13
+ return @client.raw("post", "#{url}/query", options)
14
+ else
15
+ return @client.raw("get", url, options)
16
+ end
17
+ end
18
+
19
+ # === Data transform.
20
+ # Transform a 'data' variable to a standardized 'data' variable.
21
+ #
22
+ # ==== Parameters
23
+ # data:: (Hash) -- Data to be submited.
24
+ #
25
+ def data_transform(data)
26
+ data = correct_json(data)
27
+ unless data[:data]
28
+ data = {data: data}
29
+ end
30
+ return data.to_json
31
+ end
32
+
33
+ # === Correct json.
34
+ # Receives a json data and convert it to a symbolized object.
35
+ #
36
+ # ==== Parameters
37
+ # data:: (Hash) -- Data to be submited.
38
+ #
39
+ def correct_json(data)
40
+ if data.is_a? String
41
+ data = JSON.parse(data)
42
+ end
43
+ data = data.symbolize_keys
44
+ return data
45
+ end
46
+
47
+ end