mints 0.0.13 → 0.0.17

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c41c7087845ab6006184ede917cacbd44060204251bf3ca22feba75c3a259833
4
- data.tar.gz: 5e9ad370733cb076c6000d5127d979b9727c7c103e56a79095ff881de0249a7f
3
+ metadata.gz: 5f269f998c9cc9cb3dc69f3ec70cc2ff4522a97c14a9da0bfb6ca4cba40b0654
4
+ data.tar.gz: e6b867ce7e3623b05c7aad402462f09b0b1a71a3750549c669407bcff6d2aa2b
5
5
  SHA512:
6
- metadata.gz: aa5b4e5709e9852e34bf9411cc158d75faf35204bd897625106748ed27d00f7217b16fbb844abc28ec935b83dd6ade6ca7708330280d61de6969ca3a498b7425
7
- data.tar.gz: 265637b717d062e3c0474b3ad5d1275f7c3329568a4fcc6b181f6198cddd5ef325583cdaa3827c6e6ff752b24b458316c9dda6f068946142577101c16ea3bff3
6
+ metadata.gz: 1128997e3df23340e780e4dcc9bb84389df6062eaae3683dff653b440887a5c4d04059141e8472e3762c3ce856df795c26ef7e376c72c38e494880aef5ab830b
7
+ data.tar.gz: '09b6774bb218dc40cd0083fc54428225999736f5452911c7b482a22b928d41dea91fe343ecbab96543be6c602393f6f13aaa9d9d1ee489b8e4a697bf61eda20f'
data/lib/client.rb CHANGED
@@ -8,12 +8,14 @@ module Mints
8
8
  attr_reader :api_key
9
9
  attr_reader :scope
10
10
  attr_reader :base_url
11
- attr_accessor :session_token
11
+ attr_accessor :session_token
12
+ attr_accessor :contact_token_id
12
13
 
13
- def initialize(host, api_key, scope = nil, session_token = nil, debug = false)
14
+ def initialize(host, api_key, scope = nil, session_token = nil, contact_token_id = nil, debug = false)
14
15
  @host = host
15
16
  @api_key = api_key
16
17
  @session_token = session_token
18
+ @contact_token_id = contact_token_id
17
19
  @debug = debug
18
20
  self.set_scope(scope)
19
21
  end
@@ -22,6 +24,9 @@ module Mints
22
24
  base_url = @base_url if !base_url
23
25
  uri = ""
24
26
  if (options && options.class == Hash)
27
+ if (options[:jfilters] && options[:jfilters].class == Hash)
28
+ options[:jfilters] = Base64.encode64(JSON.generate(options[:jfilters]))
29
+ end
25
30
  uri = Addressable::URI.new
26
31
  uri.query_values = options
27
32
  end
@@ -218,7 +223,7 @@ module Mints
218
223
  headers = {
219
224
  "ApiKey" => @api_key,
220
225
  "Accept" => "application/json",
221
- "ContactToken" => @contact_token
226
+ "ContactToken" => @contact_token_id
222
227
  }
223
228
  headers["Authorization"] = "Bearer #{@session_token}" if @session_token
224
229
  return self.http_get(url, headers)
@@ -228,7 +233,7 @@ module Mints
228
233
  headers = {
229
234
  "ApiKey" => @api_key,
230
235
  "Accept" => "application/json",
231
- "ContactToken" => @contact_token
236
+ "ContactToken" => @contact_token_id
232
237
  }
233
238
  headers["Authorization"] = "Bearer #{@session_token}" if @session_token
234
239
  return self.http_post(url, headers, data)
@@ -238,10 +243,10 @@ module Mints
238
243
  headers = {
239
244
  "ApiKey" => @api_key,
240
245
  "Accept" => "application/json",
241
- "ContactToken" => @contact_token
246
+ "ContactToken" => @contact_token_id
242
247
  }
243
248
  headers["Authorization"] = "Bearer #{@session_token}" if @session_token
244
- return self.http_post(url, headers, data)
249
+ return self.http_put(url, headers, data)
245
250
  end
246
251
 
247
252
  # Start User context
@@ -280,7 +285,7 @@ module Mints
280
285
  "Content-Type" => "application/json",
281
286
  "ApiKey" => @api_key
282
287
  }
283
- h["ContactToken"] = @contact_token if @contact_token
288
+ h["ContactToken"] = @contact_token_id if @contact_token_id
284
289
  if headers
285
290
  headers.each do |k,v|
286
291
  h[k] = v
@@ -310,7 +315,7 @@ module Mints
310
315
  "Content-Type" => "application/json",
311
316
  "ApiKey" => @api_key
312
317
  }
313
- h["ContactToken"] = @contact_token if @contact_token
318
+ h["ContactToken"] = @contact_token_id if @contact_token_id
314
319
  if headers
315
320
  headers.each do |k,v|
316
321
  h[k] = v
data/lib/contact.rb CHANGED
@@ -7,14 +7,21 @@ module Mints
7
7
  # === Initialize.
8
8
  # Class constructor
9
9
  #
10
- def initialize(host, api_key, session_token = nil, debug = false)
11
- @client = Mints::Client.new(host, api_key, "contact", session_token, debug)
10
+ def initialize(host, api_key, session_token = nil, contact_token_id = nil, debug = false)
11
+ @client = Mints::Client.new(host, api_key, "contact", session_token, contact_token_id, debug)
12
12
  end
13
13
 
14
14
  ##
15
15
  # === Login.
16
16
  # Starts a contact session
17
17
  #
18
+ # ==== Parameters:
19
+ # * +email+ - [_String_] The email that will be logged.
20
+ # * +password+ - [_String_] The password of the email.
21
+ #
22
+ # ==== Example
23
+ # @mints_contact.login("brown.abigail@dubuque.com", "helloword")
24
+ #
18
25
  def login(email, password)
19
26
  data = {
20
27
  email: email,
@@ -27,9 +34,62 @@ module Mints
27
34
  return response
28
35
  end
29
36
 
37
+ ##
38
+ # === Magic Link Login.
39
+ # Starts a contact session with a token received in the contact email. The token will be received by send_magic_link method.
40
+ #
41
+ # ==== Parameters:
42
+ # * +token+ - [_String_] The email that will be logged.
43
+ #
44
+ # ==== Example
45
+ # @mints_contact.magic_link_login(
46
+ # "d8618c6d-a165-41cb-b3ec-d053cbf30059:zm54HtRdfHED8dpILZpjyqjPIceiaXNLfOklqM92fveBS0nDtyPYBlI4CPlPe3zq"
47
+ # )
48
+ #
49
+ def magic_link_login(token)
50
+ response = @client.raw("get", "/contacts/magic-link-login/#{token}", nil, '/api/v1')
51
+ if response.key? "session_token"
52
+ @client.session_token = response["session_token"]
53
+ end
54
+ return response
55
+ end
56
+
57
+ ##
58
+ # === Send Magic Link
59
+ # Send magic link to contact by email. That magic link will be used in magic_link_login method.
60
+ #
61
+ # ==== 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.
67
+ #
68
+ # ==== First Example
69
+ # @mints_contact.send_magic_link("brown.abigail@dubuque.com", "")
70
+ #
71
+ # ==== Second Example
72
+ # @mints_contact.send_magic_link("brown.abigail@dubuque.com", "", "", 1440, 3)
73
+ #
74
+ def send_magic_link(email, template_slug, redirectUrl = '', lifeTime = 1440, maxVisits = nil)
75
+ data = {
76
+ email: email,
77
+ lifeTime: lifeTime,
78
+ maxVisits: maxVisits,
79
+ redirectUrl: redirectUrl,
80
+ templateId: template_slug
81
+ }
82
+ response = @client.raw("post", "/contacts/magic-link", nil, { data: data }, '/api/v1')
83
+ return response
84
+ end
85
+
30
86
  ##
31
87
  # === Logout.
32
- # Ends a contact session
88
+ # Ends a contact session previously logged.
89
+ #
90
+ # ==== Example
91
+ # @mints_contact.login('brown.abigail@dubuque.com', 'helloword')
92
+ # @mints_contact.logout
33
93
  #
34
94
  def logout
35
95
  response = @client.raw("post", "/contacts/logout") if session_token?
@@ -41,7 +101,15 @@ module Mints
41
101
 
42
102
  ##
43
103
  # === Change Password.
44
- # Change password
104
+ # Change password without email. To change the password a contact must be logged.
105
+ #
106
+ # ==== Parameters:
107
+ # * +data+ - [] A new password allocated in a data key.
108
+ #
109
+ # ==== Example
110
+ # @mints_contact.login('brown.abigail@dubuque.com', 'helloword')
111
+ # data = { "data": { "password": "123456" } }
112
+ # @mints_contact.change_password(data)
45
113
  #
46
114
  def change_password(data)
47
115
  return @client.raw("post", "/contacts/change-password", nil, data)
@@ -49,7 +117,14 @@ module Mints
49
117
 
50
118
  ##
51
119
  # === Recover Password.
52
- # Recover password
120
+ # Send a email that contains a token to a contact. That token will be used in reset_password to establish a new password.
121
+ #
122
+ # ==== Parameters:
123
+ # * +data+ - [] It's a data key where will be hosted the destination email.
124
+ #
125
+ # ==== Example
126
+ # data = { "data": { "email": "brown.abigail@dubuque.com" } }
127
+ # @mints_contact.recover_password(data)
53
128
  #
54
129
  def recover_password(data)
55
130
  return @client.raw("post", "/contacts/recover-password", nil, data)
@@ -57,7 +132,19 @@ module Mints
57
132
 
58
133
  ##
59
134
  # === Reset Password.
60
- # Reset password
135
+ # Reset password using a token. The token is obtained by recover_password method.
136
+ #
137
+ # ==== Parameters:
138
+ # * +data+ - [] It's a set of data which contains all the information to reset a contact password.
139
+ #
140
+ # ==== Example
141
+ # data = { "data": {
142
+ # "email": "brown.abigail@dubuque.com",
143
+ # "password": "helloword",
144
+ # "password_confirmation": "helloword",
145
+ # "token": "644aa3aa0831d782cc42e42b11aedea9a2234389af4f429a8d96651295ecfa09"
146
+ # } }
147
+ # @mints_contact.reset_password(data)
61
148
  #
62
149
  def reset_password(data)
63
150
  return @client.raw("post", "/contacts/reset-password", nil, data)
@@ -73,7 +160,10 @@ module Mints
73
160
 
74
161
  ##
75
162
  # === Me.
76
- # Get contact logged info
163
+ # Get contact logged info.
164
+ #
165
+ # ==== Example
166
+ # @mints_contact.me
77
167
  #
78
168
  def me
79
169
  return @client.raw("get", "/contacts/me")
@@ -81,7 +171,10 @@ module Mints
81
171
 
82
172
  ##
83
173
  # === Status.
84
- # Get contact logged status
174
+ # Get contact logged status.
175
+ #
176
+ # ==== Example
177
+ # @mints_contact.status
85
178
  #
86
179
  def status
87
180
  return @client.raw("get", "/contacts/status")
@@ -89,12 +182,43 @@ module Mints
89
182
 
90
183
  ##
91
184
  # === Update.
92
- # Update logged contact attributes
185
+ # Update logged contact attributes.
186
+ #
187
+ # ==== Parameters:
188
+ # * +data+ - [] It's the data to update with a session active.
189
+ #
190
+ # ==== 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.update(data)
93
197
  #
94
198
  def update(data)
95
199
  return @client.raw("put", "/contacts/update", nil, data)
96
200
  end
97
201
 
202
+ ##
203
+ # === Register.
204
+ # Register a contact.
205
+ #
206
+ # ==== Parameters:
207
+ # * +data+ - [] It's the register data.
208
+ #
209
+ # ==== Example
210
+ # data = { "data": {
211
+ # "email": "carlos@mints.cloud",
212
+ # "given_name": "Carlos",
213
+ # "last_name": "Fernandez",
214
+ # "password": "123456"
215
+ # } }
216
+ # @mints_contact.register(data);
217
+ #
218
+ def register(data)
219
+ return @client.raw("post", "/contacts/register", nil, data)
220
+ end
221
+
98
222
  private
99
223
 
100
224
  def session_token?
@@ -0,0 +1,3 @@
1
+ require 'reverse_proxy/client'
2
+ class MintsAssetsController < Mints::PublicAPIController
3
+ end
@@ -6,12 +6,15 @@ class MintsFilesGenerator < Rails::Generators::Base
6
6
  copy_file 'mints_user_controller.rb', './app/controllers/api/mints_user_controller.rb'
7
7
  copy_file 'mints_contact_controller.rb', './app/controllers/api/v1/mints_contact_controller.rb'
8
8
  copy_file 'mints_public_controller.rb', './app/controllers/api/v1/mints_public_controller.rb'
9
+ copy_file 'mints_assets_controller.rb', './app/controllers/mints_assets_controller.rb'
9
10
  route <<-eos
10
11
  # Mints auto-generated routes (proxy to send request to mints.cloud)
12
+ match '/public-assets/*path' => 'mints_assets#index', via: [:get, :post, :put, :patch, :delete]
11
13
  namespace :api, defaults: { format: :json } do
12
- match '/user/v1/*path' => 'mints_user#index', via: [:get, :post, :put, :patch, :delete]
14
+ match '/user/v1/*path' => 'mints_user#index', via: [:get, :post, :put, :patch, :delete]
15
+ match '/contact/v1/*path' => 'mints_contact#index', via: [:get, :post, :put, :patch, :delete]
13
16
  namespace :v1 do
14
- match '/contacts/*path' => 'mints_contact#index', via: [:get, :post, :put, :patch, :delete]
17
+ match '/contacts/*path' => 'mints_contact#index', via: [:get, :post, :put, :patch, :delete]
15
18
  match '/*path' => 'mints_public#index', via: [:get, :post, :put, :patch, :delete]
16
19
  end
17
20
  end
@@ -2,16 +2,16 @@ module Mints
2
2
  class AdminBaseController < ActionController::Base
3
3
  before_action :set_mints_user_client
4
4
 
5
- # def mints_user_signed_in?
6
- # # Check status in mints
7
- # response = @mints_user.status
8
- # status = response['success'] ? response['success'] : false
9
- # unless status
10
- # # if mints response is negative delete the session cookie
11
- # cookies.delete(:mints_user_session_token)
12
- # end
13
- # return status
14
- # end
5
+ def mints_user_signed_in?
6
+ # Check status in mints
7
+ response = @mints_user.me
8
+ status = response['data'] ? true : false
9
+ unless status
10
+ # if mints response is negative delete the session cookie
11
+ #cookies.delete(:mints_user_session_token)
12
+ end
13
+ return status
14
+ end
15
15
 
16
16
  ##
17
17
  # === Mints user Login.
@@ -25,6 +25,21 @@ module Mints
25
25
  cookies.permanent[:mints_user_session_token] = session_token
26
26
  end
27
27
 
28
+ ##
29
+ # === Mints user Login.
30
+ # Starts a user session in mints.cloud and set a session cookie
31
+ def mints_user_magic_link_login(hash)
32
+ # Login in mints
33
+ response = @mints_user.magic_link_login(hash)
34
+ if response['data'] && response['data']['redirect_url']
35
+ # Set a cookie with the session token
36
+ cookies[:mints_user_session_token] = { value: response['data']['api_token'], expires: 1.day }
37
+ redirect_to response['data']['redirect_url']
38
+ else
39
+ redirect_to '/'
40
+ end
41
+ end
42
+
28
43
  ##
29
44
  # === Mints user Logout.
30
45
  # Destroy session from mints.cloud and delete local session cookie
@@ -51,7 +66,8 @@ module Mints
51
66
  raise 'MintsBadCredentialsError'
52
67
  end
53
68
  # Initialize mints user client
54
- @mints_user = Mints::User.new(@host, @api_key, nil, @debug)
69
+ session_token = cookies[:mints_user_session_token] ? cookies[:mints_user_session_token] : nil
70
+ @mints_user = Mints::User.new(@host, @api_key, session_token, @debug)
55
71
  end
56
72
  end
57
73
  end
@@ -1,6 +1,6 @@
1
1
  module Mints
2
2
  class BaseApiController < ActionController::Base
3
- before_action :set_mints_pub_client
3
+ before_action :set_mints_clients
4
4
 
5
5
  ##
6
6
  # === Mints Contact Login.
@@ -15,6 +15,26 @@ module Mints
15
15
  cookies.permanent[:mints_contact_session_token] = session_token
16
16
  cookies.permanent[:mints_contact_id] = id_token
17
17
  @contact_token = id_token
18
+ end
19
+
20
+ ##
21
+ # === Mints cotnact Login.
22
+ # Starts a cotnact session in mints.cloud and set a session cookie
23
+ def mints_contact_magic_link_login(hash)
24
+ # Login in mints
25
+ response = @mints_contact.magic_link_login(hash)
26
+ if response['data']
27
+ # Get session token from response
28
+ session_token = response['data']['session_token']
29
+ id_token = response['data']['contact']['id_token']
30
+ # Set a permanent cookie with the session token
31
+ cookies.permanent[:mints_contact_session_token] = session_token
32
+ cookies.permanent[:mints_contact_id] = id_token
33
+ @contact_token = id_token
34
+ redirect_to response['data']['redirect_url'] ? response['data']['redirect_url'] : '/'
35
+ else
36
+ redirect_to '/'
37
+ end
18
38
  end
19
39
 
20
40
  ##
@@ -28,26 +48,96 @@ module Mints
28
48
  cookies.delete(:mints_contact_id)
29
49
  @contact_token = nil
30
50
  end
51
+
52
+ ##
53
+ # === Mints user Login.
54
+ # Starts a user session in mints.cloud and set a session cookie
55
+ def mints_user_login(email, password)
56
+ # Login in mints
57
+ response = @mints_user.login(email, password)
58
+ # Get session token from response
59
+ session_token = response['api_token']
60
+ # Set a permanent cookie with the session token
61
+ cookies.permanent[:mints_user_session_token] = session_token
62
+ end
63
+
64
+ ##
65
+ # === Mints user Login.
66
+ # Starts a user session in mints.cloud and set a session cookie
67
+ def mints_user_magic_link_login(hash)
68
+ # Login in mints
69
+ response = @mints_user.magic_link_login(hash)
70
+ if response['data']
71
+ # Set a cookie with the session token
72
+ cookies[:mints_user_session_token] = { value: response['data']['api_token'], expires: 1.day }
73
+ redirect_to response['data']['redirect_url'] ? response['data']['redirect_url'] : '/'
74
+ else
75
+ redirect_to '/'
76
+ end
77
+ end
78
+
79
+ ##
80
+ # === Mints user Logout.
81
+ # Destroy session from mints.cloud and delete local session cookie
82
+ def mints_user_logout
83
+ # Logout from mints
84
+ # @mints_user.logout
85
+ # Delete local cookie
86
+ cookies.delete(:mints_user_session_token)
87
+ end
31
88
 
32
89
  private
33
90
 
34
91
  ##
35
- # === Set mints pub.
36
- # Initialize the public client and set the contact token
37
- def set_mints_pub_client
92
+ # === Set mints clients (pub, user and contact)
93
+ # Initialize all clients from mitns
94
+ def set_mints_clients
38
95
  if File.exists?("#{Rails.root}/mints_config.yml.erb")
39
96
  template = ERB.new File.new("#{Rails.root}/mints_config.yml.erb").read
40
97
  config = YAML.load template.result(binding)
41
98
  @host = config["mints"]["host"]
42
99
  @api_key = config["mints"]["api_key"]
43
100
  @debug = config["sdk"]["debug"] ? config["sdk"]["debug"] : false
101
+
102
+ #public client
103
+ set_mints_pub_client
104
+ #contact client
105
+ set_mints_contact_client
106
+ #user client
107
+ set_mints_user_client
44
108
  else
45
109
  raise 'MintsBadCredentialsError'
46
110
  end
111
+ end
112
+
113
+ ##
114
+ # === Set mints pub.
115
+ # Initialize the public client and set the contact token
116
+ def set_mints_pub_client
117
+
47
118
  # Initialize mints pub client, credentials taken from mints_config.yml.erb file
48
119
  @mints_pub = Mints::Pub.new(@host, @api_key, nil, @debug)
49
120
  # Set contact token from cookie
50
121
  @mints_pub.client.session_token = @contact_token
51
122
  end
123
+
124
+ ##
125
+ # === Set mints contact client.
126
+ # Initialize the public client and set the contact token
127
+ def set_mints_contact_client
128
+ # Initialize mints clontact client
129
+ session_token = cookies[:mints_contact_session_token] ? cookies[:mints_contact_session_token] : nil
130
+ contact_token_id = cookies[:mints_contact_id] ? cookies[:mints_contact_id] : nil
131
+ @mints_contact = Mints::Contact.new(@host, @api_key, session_token, contact_token_id, @debug)
132
+ end
133
+
134
+ ##
135
+ # === Set Mints user client.
136
+ # Initialize the public client and set the user token
137
+ def set_mints_user_client
138
+ # Initialize mints user client
139
+ session_token = cookies[:mints_user_session_token] ? cookies[:mints_user_session_token] : nil
140
+ @mints_user = Mints::User.new(@host, @api_key, session_token, @debug)
141
+ end
52
142
  end
53
143
  end
@@ -31,6 +31,21 @@ module Mints
31
31
  @contact_token = id_token
32
32
  end
33
33
 
34
+ ##
35
+ # === Mints Contact Magic Link Login.
36
+ # Starts a contact session in mints.cloud and set a session cookie
37
+ def mints_contact_magic_link_login(token)
38
+ # Login in mints
39
+ response = @mints_contact.login(email, password)
40
+ # Get session token from response
41
+ session_token = response['session_token']
42
+ id_token = response['contact']['id_token']
43
+ # Set a permanent cookie with the session token
44
+ cookies.permanent[:mints_contact_session_token] = session_token
45
+ cookies.permanent[:mints_contact_id] = id_token
46
+ @contact_token = id_token
47
+ end
48
+
34
49
  ##
35
50
  # === Mints Contact Logout.
36
51
  # Destroy session from mints.cloud and delete local session cookie
@@ -69,7 +84,7 @@ module Mints
69
84
  raise 'MintsBadCredentialsError'
70
85
  end
71
86
  # Initialize mints pub client, credentials taken from mints_config.yml.erb file
72
- @mints_pub = Mints::Pub.new(@host, @api_key, nil, @debug)
87
+ @mints_pub = Mints::Pub.new(@host, @api_key, @contact_token, @debug)
73
88
  # Set contact token from cookie
74
89
  @mints_pub.client.session_token = @contact_token
75
90
  end
@@ -86,7 +101,9 @@ module Mints
86
101
  # Initialize the public client and set the contact token
87
102
  def set_mints_contact_client
88
103
  # Initialize mints clontact client
89
- @mints_contact = Mints::Contact.new(@host, @api_key, nil, @debug)
104
+ session_token = cookies[:mints_contact_session_token] ? cookies[:mints_contact_session_token] : nil
105
+ contact_token_id = cookies[:mints_contact_id] ? cookies[:mints_contact_id] : nil
106
+ @mints_contact = Mints::Contact.new(@host, @api_key, session_token, contact_token_id, @debug)
90
107
  end
91
108
  end
92
109
  end
data/lib/pub.rb CHANGED
@@ -5,6 +5,10 @@ module Mints
5
5
  # == Public context API
6
6
  # Pub class contains functions that needs only an API key as authentication
7
7
  # == Usage example
8
+ # === For Mints::BaseController inheritance:
9
+ # If the controller is inheriting from Mints::BaseController, Only use the class variable *mints_pub* _Example:_
10
+ # @mints_pub.get_stories
11
+ # === For standalone usage:
8
12
  # Initialize
9
13
  # pub = Mints::Pub.new(mints_url, api_key)
10
14
  # or if host and api_key are provided by mints_config.yml.erb
@@ -12,23 +16,58 @@ module Mints
12
16
  # Call any function
13
17
  # pub.get_products
14
18
  # == Single resource options
15
- # * +include+ - [String] include a relationship
16
- # * +attributes+ - [Boolean] attach attributes to response
17
- # * +categories+ - [Boolean] attach categories to response
18
- # * +tags+ - [Boolean] attach tags to response
19
+ # * +include+ - [_String_] Specify additional information to be included in the results from the objects relations. _Example:_
20
+ # { "include": "events" }
21
+ # * +attributes+ - [_Boolean_] If present, attributes will be returned for each record in the results. _Example:_
22
+ # { "attributes": true }
23
+ # * +categories+ - [_Boolean_] If present, categories will be returned for each record in the results. _Example:_
24
+ # { "categories": true }
25
+ # * +tags+ - [_Boolean_] If present, tags will be returned for each record in the results. _Example:_
26
+ # { "tags": true }
27
+ # * +fields+ - [_String_] Specify the fields that you want to be returned. If empty, all fields are returned. The object index can also be used to specify specific fields from relations. _Example:_
28
+ # { "fields": "id, title, slug" }
29
+ # { "fields[products]": "id, title, slug" }
30
+ #
19
31
  # == Resource collections options
20
- # * +search+ - [String] filter by a search word
21
- # * +scopes+ - [String] filter by a scope
22
- # * +filters+ - [String] filter by where clauses
23
- # * +jfilters+ - [String] filter using complex condition objects
24
- # * +catfilters+ - [String] filter by categories
25
- # * +fields+ - [String] indicates the columns that will be selected
26
- # * +sort+ - [String] indicates the columns that will be selected
27
- # * +include+ - [String] include a relationship
28
- # * +attributes+ - [Boolean] attach attributes to response
29
- # * +categories+ - [Boolean] attach categories to response
30
- # * +taxonomies+ - [Boolean] attach categories to response
31
- # * +tags+ - [Boolean] attach tags to response
32
+ # * +search+ - [_String_] If present, it will search for records matching the search string. _Example:_
33
+ # { "search": "searchstring" }
34
+ # * +scopes+ - [_String_] If present, it will apply the specified Model's scopes. _Example:_
35
+ # { "scopes": "approved, recent" }
36
+ # * +filters+ - [_String_] This is a powerful parameter that allows the data to be filtered by any of its fields. Currently only exact matches are supported. _Example:_
37
+ # { "filters[title]": "titleToFilter" }
38
+ # * +jfilters+ - [_String_] A complex filter configuration, as used in segments, in JSON format, base64 encoded and URLencoded. _Example:_
39
+ # jfilter = {
40
+ # "type":"group",
41
+ # "items":[
42
+ # {
43
+ # "type":"attribute",
44
+ # "operator":"==",
45
+ # "slug":"title",
46
+ # "value":"Action movies"
47
+ # }
48
+ # ],
49
+ # "operator":"or"
50
+ # }
51
+ # options = { "jfilters": jfilter }
52
+ # * +catfilters+ - [_String_] filter by categories. _Example:_
53
+ # { "catfilters": "categoryName" }
54
+ # * +fields+ - [_String_] Specify the fields that you want to be returned. If empty, all fields are returned. The object index can also be used to specify specific fields from relations. _Example:_
55
+ # { "fields": "id, title, slug" }
56
+ # { "fields[products]": "id, title, slug" }
57
+ # * +sort+ - [_String_] The name of the field to perform the sort. Prefix the value with a minus sign - for ascending order. _Example:_
58
+ # { "sort": "title" }
59
+ # { "sort": "-title" }
60
+ # * +include+ - [_String_] Specify additional information to be included in the results from the objects relations. _Example:_
61
+ # { "include": "events" }
62
+ # * +attributes+ - [_Boolean_] If present, attributes will be returned for each record in the results. _Example:_
63
+ # { "attributes": true }
64
+ # * +categories+ - [_Boolean_] If present, categories will be returned for each record in the results. _Example:_
65
+ # { "categories": true }
66
+ # * +taxonomies+ - [_Boolean_] If present, taxonomies will be returned for each record in the results. _Example:_
67
+ # { "taxonomies": true }
68
+ # * +tags+ - [_Boolean_] If present, tags will be returned for each record in the results. _Example:_
69
+ # { "tags": true }
70
+
32
71
  class Pub
33
72
  attr_reader :client
34
73
 
@@ -42,8 +81,8 @@ module Mints
42
81
  # * +contact_token+ - [String] Cookie 'mints_contact_id' value (mints_contact_token)
43
82
  # ==== Return
44
83
  # Returns a Client object
45
- def initialize(host, api_key, contact_token = nil, debug = false)
46
- @client = Mints::Client.new(host, api_key, 'public', contact_token, debug)
84
+ def initialize(host, api_key, contact_token_id = nil, debug = false)
85
+ @client = Mints::Client.new(host, api_key, 'public', nil, contact_token_id, debug)
47
86
  end
48
87
 
49
88
  ##
@@ -55,6 +94,15 @@ module Mints
55
94
  # * +ip+ - [String] It's the visitor IP
56
95
  # * +user_agent+ - The visitor's browser user agent
57
96
  # * +url+ - [String] URL visited
97
+ #
98
+ # ==== Example
99
+ # request = {
100
+ # "remote_ip" => "http://864.401.156.12/",
101
+ # "user_agent" => "User Agent",
102
+ # "fullpath" => "https://mints.cloud/blog"
103
+ # }
104
+ # @mints_pub.register_visit(request, request["remote_ip"], request["user_agent"], request["fullpath"])
105
+ #
58
106
  def register_visit(request, ip = nil, user_agent = nil, url = nil)
59
107
  data = {
60
108
  ip_address: ip || request.remote_ip,
@@ -72,69 +120,38 @@ module Mints
72
120
  # ==== Parameters
73
121
  # * +visit+ - [String] It's the visitor IP
74
122
  # * +time+ - [Integer] The visitor's browser user agent
123
+ #
124
+ # ==== Example
125
+ # @mints_pub.register_visit_timer("60da2325d29acc7e55684472", 4)
126
+ #
75
127
  def register_visit_timer(visit, time)
76
128
  return @client.raw("get", "/register-visit-timer?visit=#{visit}&time=#{time}")
77
129
  end
78
130
 
79
131
  ##
80
- # === Get Content Page.
81
- # Get a single content page
132
+ # === Get Asset Info.
133
+ # Get a description of an Asset
82
134
  #
83
135
  # ==== Parameters
84
- # * +slug+ - [String] It's the slug
85
- # * +options+ - [Hash] List of {Single Resource Options}[#class-Mints::Pub-label-Single+resource+options] shown above can be used as parameter
86
- def get_content_page(slug, options = nil)
87
- return @client.raw("get", "/content/content-pages/#{slug}", options)
88
- end
89
-
90
- ##
91
- # === Get Content Templates.
92
- # Get a collection of content templates
93
- #
94
- # ==== Parameters
95
- # * +options+ - [Hash] List of {Resource collection Options}[#class-Mints::Pub-label-Resource+collections+options+] shown above can be used as parameter
96
- def get_content_templates(options = nil)
97
- return @client.raw("get", "/content/content-templates", options)
98
- end
99
-
100
- ##
101
- # === Get Content Template.
102
- # Get a single content template.
136
+ # * +slug+ - [String] It's the string identifier of the asset.
103
137
  #
104
- # ==== Parameters
105
- # * +slug+ - [String] It's the string identifier generated by Mints
106
- # * +options+ - [Hash] List of {Single Resource Options}[#class-Mints::Pub-label-Single+resource+options] shown above can be used as parameter
107
- def get_content_template(slug, options = nil)
108
- return @client.raw("get", "/content/content-templates/#{slug}", options)
109
- end
110
-
111
- ##
112
- # === Get Content Instances.
113
- # Get a collection of content instances
138
+ # ==== Example
139
+ # @mints_pub.get_asset_info("quaerat")
114
140
  #
115
- # ==== Parameters
116
- # * +options+ - [Hash] List of {Resource collection Options}[#class-Mints::Pub-label-Resource+collections+options+] shown above can be used as parameter
117
- def get_content_instances(options)
118
- return @client.raw("get", "/content/content-instances", options)
141
+ def get_asset_info(slug)
142
+ return @client.raw("get", "/content/asset-info/#{slug}")
119
143
  end
120
-
121
- ##
122
- # === Get Content Instance.
123
- # Get a single content instance.
124
- #
125
- # ==== Parameters
126
- # * +slug+ - [String] It's the string identifier generated by Mints
127
- # * +options+ - [Hash] List of {Single Resource Options}[#class-Mints::Pub-label-Single+resource+options] shown above can be used as parameter
128
- def get_content_instance(slug, options = nil)
129
- return @client.raw("get", "/content/content-instances/#{slug}", options)
130
- end
131
-
144
+
132
145
  ##
133
146
  # === Get Stories.
134
147
  # Get a collection of stories
135
148
  #
136
149
  # ==== Parameters
137
150
  # * +options+ - [Hash] List of {Resource collection Options}[#class-Mints::Pub-label-Resource+collections+options+] shown above can be used as parameter
151
+ #
152
+ # ==== Example
153
+ # @mints_pub.get_stories
154
+ #
138
155
  def get_stories(options = nil)
139
156
  return @client.raw("get", "/content/stories", options)
140
157
  end
@@ -146,6 +163,10 @@ module Mints
146
163
  # ==== Parameters
147
164
  # * +slug+ - [String] It's the string identifier generated by Mints
148
165
  # * +options+ - [Hash] List of {Single Resource Options}[#class-Mints::Pub-label-Single+resource+options] shown above can be used as parameter
166
+ #
167
+ # ==== Example
168
+ # @mints_pub.get_story("getting-ready-for-e3")
169
+ #
149
170
  def get_story(slug, options = nil)
150
171
  return @client.raw("get", "/content/stories/#{slug}", options)
151
172
  end
@@ -156,6 +177,10 @@ module Mints
156
177
  #
157
178
  # ==== Parameters
158
179
  # * +options+ - [Hash] List of {Resource collection Options}[#class-Mints::Pub-label-Resource+collections+options+] shown above can be used as parameter
180
+ #
181
+ # ==== Example
182
+ # @mints_pub.get_forms
183
+ #
159
184
  def get_forms(options = nil)
160
185
  return @client.raw("get", "/content/forms", options)
161
186
  end
@@ -167,6 +192,10 @@ module Mints
167
192
  # ==== Parameters
168
193
  # * +slug+ - [String] It's the string identifier generated by Mints
169
194
  # * +options+ - [Hash] List of {Single Resource Options}[#class-Mints::Pub-label-Single+resource+options] shown above can be used as parameter
195
+ #
196
+ # ==== Example
197
+ # @mints_pub.get_form("survey")
198
+ #
170
199
  def get_form(slug, options = nil)
171
200
  return @client.raw("get", "/content/forms/#{slug}", options)
172
201
  end
@@ -177,79 +206,126 @@ module Mints
177
206
  #
178
207
  # ==== Parameters
179
208
  # * +data+ - [Hash] Data to be submited
209
+ #
210
+ # ==== Example
211
+ # data_form = {
212
+ # "data": {
213
+ # 'form_slug': 'formulario',
214
+ # 'email': 'oscar@mints.cloud',
215
+ # 'ingrese-un-texto': 'hola'
216
+ # }
217
+ # }
218
+ # @mints_pub.submit_form(data_form.to_json)
219
+ #
180
220
  def submit_form(data)
181
221
  return @client.raw("post", "/content/forms/submit", nil, data)
182
- end
222
+ end
183
223
 
184
224
  ##
185
- # === Get Products.
186
- # Get a collection of products.
225
+ # === Get Content Instances.
226
+ # Get a collection of content instances. _Note:_ Options must be specified.
187
227
  #
188
228
  # ==== Parameters
189
229
  # * +options+ - [Hash] List of {Resource collection Options}[#class-Mints::Pub-label-Resource+collections+options+] shown above can be used as parameter
190
- def get_products(options = nil)
191
- return @client.raw("get", "/ecommerce/products", options)
230
+ def get_content_instances(options = nil)
231
+ return @client.raw("get", "/content/content-instances", options)
192
232
  end
193
233
 
194
234
  ##
195
- # === Get Product.
196
- # Get a single product.
235
+ # === Get Content Instance.
236
+ # Get a single content instance.
197
237
  #
198
238
  # ==== Parameters
199
239
  # * +slug+ - [String] It's the string identifier generated by Mints
200
240
  # * +options+ - [Hash] List of {Single Resource Options}[#class-Mints::Pub-label-Single+resource+options] shown above can be used as parameter
201
- def get_product(slug, options = nil)
202
- return @client.raw("get", "/ecommerce/products/#{slug}", options)
241
+ #
242
+ # ==== Example
243
+ # @mints_pub.get_content_instance("bill-gates")
244
+ #
245
+ def get_content_instance(slug, options = nil)
246
+ return @client.raw("get", "/content/content-instances/#{slug}", options)
203
247
  end
204
248
 
205
249
  ##
206
- # === Get Product Brands.
207
- # Get a collection of product brands.
250
+ # === Get Content Pages.
251
+ # Get all content pages.
208
252
  #
209
253
  # ==== Parameters
210
254
  # * +options+ - [Hash] List of {Resource collection Options}[#class-Mints::Pub-label-Resource+collections+options+] shown above can be used as parameter
211
- def get_product_brands(options = nil)
212
- return @client.raw("get", "/ecommerce/product-brands", options)
255
+ def get_content_pages(options = nil)
256
+ return @client.raw("get", "/content/content-pages", options)
213
257
  end
214
258
 
215
259
  ##
216
- # === Get Product Brand.
217
- # Get a product brand.
260
+ # === Get Content Page.
261
+ # Get a single content page
218
262
  #
219
263
  # ==== Parameters
220
- # * +slug+ - [String] It's the string identifier generated by Mints
264
+ # * +slug+ - [String] It's the slug
221
265
  # * +options+ - [Hash] List of {Single Resource Options}[#class-Mints::Pub-label-Single+resource+options] shown above can be used as parameter
222
- def get_product_brand(slug, options = nil)
223
- return @client.raw("get", "/ecommerce/product-brands/#{slug}", options)
266
+ #
267
+ # ==== Example
268
+ # @mints_pub.get_content_page("test-page")
269
+ #
270
+ def get_content_page(slug, options = nil)
271
+ return @client.raw("get", "/content/content-pages/#{slug}", options)
224
272
  end
225
273
 
226
274
  ##
227
- # === Get SKUs.
228
- # Get a collection of SKUs.
275
+ # === Get Locations.
276
+ # Get all locations.
229
277
  #
230
278
  # ==== Parameters
231
279
  # * +options+ - [Hash] List of {Resource collection Options}[#class-Mints::Pub-label-Resource+collections+options+] shown above can be used as parameter
232
- def get_skus(options = nil)
233
- return @client.raw("get", "/ecommerce/skus", options)
280
+ #
281
+ # ==== Example
282
+ # @mints_pub.get_locations
283
+ #
284
+ def get_locations(options = nil)
285
+ return @client.raw("get", "/ecommerce/locations", options)
234
286
  end
235
287
 
236
288
  ##
237
- # === Get SKU.
238
- # Get a single SKU.
289
+ # === Get Products.
290
+ # Get a collection of products.
291
+ #
292
+ # ==== Parameters
293
+ # * +options+ - [Hash] List of {Resource collection Options}[#class-Mints::Pub-label-Resource+collections+options+] shown above can be used as parameter
294
+ #
295
+ # ==== Example
296
+ # @mints_pub.get_products
297
+ #
298
+ def get_products(options = nil)
299
+ return @client.raw("get", "/ecommerce/products", options)
300
+ end
301
+
302
+ ##
303
+ # === Get Product.
304
+ # Get a single product.
239
305
  #
240
306
  # ==== Parameters
241
307
  # * +slug+ - [String] It's the string identifier generated by Mints
242
308
  # * +options+ - [Hash] List of {Single Resource Options}[#class-Mints::Pub-label-Single+resource+options] shown above can be used as parameter
243
- def get_sku(slug, options = nil)
244
- return @client.raw("get", "/ecommerce/skus/#{slug}", options)
309
+ #
310
+ # ==== Example
311
+ # @mints_pub.get_product("batman-shirt")
312
+ #
313
+ def get_product(slug, options = nil)
314
+ return @client.raw("get", "/ecommerce/products/#{slug}", options)
245
315
  end
246
-
316
+
247
317
  ##
248
318
  # === Get categories.
249
319
  # Get a collection of categories.
250
320
  #
251
321
  # ==== Parameters
252
322
  # * +options+ - [Hash] List of {Resource collection Options}[#class-Mints::Pub-label-Resource+collections+options+] shown above can be used as parameter
323
+ #
324
+ # ==== Example
325
+ # options = {
326
+ # "object_type": "stories"
327
+ # }
328
+ # @mints_pub.get_categories(options)
253
329
  def get_categories(options = nil)
254
330
  return @client.raw("get", "/config/categories", options)
255
331
  end
@@ -261,6 +337,13 @@ module Mints
261
337
  # ==== Parameters
262
338
  # * +slug+ - [String] It's the string identifier generated by Mints
263
339
  # * +options+ - [Hash] List of {Single Resource Options}[#class-Mints::Pub-label-Single+resource+options] shown above can be used as parameter
340
+ #
341
+ # ==== Example
342
+ # options = {
343
+ # "object_type": "locations"
344
+ # }
345
+ # @mints_pub.get_category("atm", options)
346
+ #
264
347
  def get_category(slug, options = nil)
265
348
  return @client.raw("get", "/config/categories/#{slug}", options)
266
349
  end
@@ -271,6 +354,10 @@ module Mints
271
354
  #
272
355
  # ==== Parameters
273
356
  # * +options+ - [Hash] List of {Resource collection Options}[#class-Mints::Pub-label-Resource+collections+options+] shown above can be used as parameter
357
+ #
358
+ # ==== Example
359
+ # @mints_pub.get_tags
360
+ #
274
361
  def get_tags(options = nil)
275
362
  return @client.raw("get", "/config/tags", options)
276
363
  end
@@ -282,26 +369,24 @@ module Mints
282
369
  # ==== Parameters
283
370
  # * +slug+ - [String] It's the string identifier generated by Mints
284
371
  # * +options+ - [Hash] List of {Single Resource Options}[#class-Mints::Pub-label-Single+resource+options] shown above can be used as parameter
372
+ #
373
+ # ==== Example
374
+ # @mints_pub.get_tag("ad-0")
375
+ #
285
376
  def get_tag(slug, options = nil)
286
377
  return @client.raw("get", "/config/tags/#{slug}", options)
287
378
  end
288
379
 
289
- ##
290
- # === Get Attributes.
291
- # Get a collection of attributes.
292
- #
293
- # ==== Parameters
294
- # * +options+ - [Hash] List of {Resource collection Options}[#class-Mints::Pub-label-Resource+collections+options+] shown above can be used as parameter
295
- def get_attributes(options = nil)
296
- return @client.raw("get", "/config/attributes", options)
297
- end
298
-
299
380
  ##
300
381
  # === Get Taxonomies.
301
382
  # Get a collection of taxonomies.
302
383
  #
303
384
  # ==== Parameters
304
385
  # * +options+ - [Hash] List of {Resource collection Options}[#class-Mints::Pub-label-Resource+collections+options+] shown above can be used as parameter
386
+ #
387
+ # ==== Example
388
+ # @mints_pub.get_taxonomies
389
+ #
305
390
  def get_taxonomies(options = nil)
306
391
  return @client.raw("get", "/config/taxonomies", options)
307
392
  end
@@ -313,8 +398,26 @@ module Mints
313
398
  # ==== Parameters
314
399
  # * +slug+ - [String] It's the string identifier generated by Mints
315
400
  # * +options+ - [Hash] List of {Single Resource Options}[#class-Mints::Pub-label-Single+resource+options] shown above can be used as parameter
401
+ #
402
+ # ==== Example
403
+ # @mints_pub.get_taxonomy("unit_pricing_measure")
404
+ #
316
405
  def get_taxonomy(slug, options = nil)
317
406
  return @client.raw("get", "/config/taxonomies/#{slug}", options)
318
407
  end
408
+
409
+ ##
410
+ # === Get Attributes.
411
+ # Get a collection of attributes.
412
+ #
413
+ # ==== Parameters
414
+ # * +options+ - [Hash] List of {Resource collection Options}[#class-Mints::Pub-label-Resource+collections+options+] shown above can be used as parameter
415
+ #
416
+ # ==== Example
417
+ # @mints_pub.get_attributes
418
+ #
419
+ def get_attributes(options = nil)
420
+ return @client.raw("get", "/config/attributes", options)
421
+ end
319
422
  end
320
423
  end
data/lib/user.rb CHANGED
@@ -29,7 +29,7 @@ module Mints
29
29
  class User
30
30
  attr_reader :client
31
31
  def initialize(host, api_key, session_token = nil, debug = false)
32
- @client = Mints::Client.new(host, api_key, 'user', session_token, debug)
32
+ @client = Mints::Client.new(host, api_key, 'user', session_token, nil, debug)
33
33
  end
34
34
 
35
35
  def login(email, password)
@@ -43,6 +43,31 @@ module Mints
43
43
  end
44
44
  return response
45
45
  end
46
+
47
+ def magic_link_login(token)
48
+ response = @client.raw("get", "/users/magic-link-login/#{token}", nil, nil, '/api/v1')
49
+ return response
50
+ end
51
+
52
+ ##
53
+ # === Send magic link to user
54
+ def send_magic_link(email, redirectUrl = '', lifeTime = 24)
55
+ data = {
56
+ email: email,
57
+ redirectUrl: redirectUrl,
58
+ lifeTime: lifeTime
59
+ }
60
+ response = @client.raw("post", "/users/magic-link", nil, { data: data }, '/api/v1')
61
+ return response
62
+ end
63
+
64
+ ##
65
+ # === Me.
66
+ # Get contact logged info
67
+ #
68
+ def me
69
+ return @client.get__profile__me
70
+ end
46
71
  ######################################### CRM #########################################
47
72
  ##
48
73
  # === Get contacts.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mints
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.13
4
+ version: 0.0.17
5
5
  platform: ruby
6
6
  authors:
7
- - Ruben Gomez Garcia, Omar Mora, Luis Payan
7
+ - Ruben Gomez Garcia, Omar Mora, Luis Payan, Oscar Castillo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-06-29 00:00:00.000000000 Z
11
+ date: 2021-08-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -120,6 +120,7 @@ files:
120
120
  - README.md
121
121
  - lib/client.rb
122
122
  - lib/contact.rb
123
+ - lib/generators/mints_assets_controller.rb
123
124
  - lib/generators/mints_config.yml.erb
124
125
  - lib/generators/mints_contact_controller.rb
125
126
  - lib/generators/mints_files_generator.rb