Class: Cxf::Contact

Inherits:
Object
  • Object
show all
Includes:
ContactConfig, ContactContent, ContactEcommerce, CxfHelper, ThreadsHelper
Defined in:
lib/contact.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from ThreadsHelper

#make_multiple_request

Methods included from CxfHelper

#correct_json, #data_transform, #get_query_results

Constructor Details

#initialize(host, api_key, session_token = nil, refresh_token = nil, contact_token_id = nil, debug = false, user_agent = nil, timeouts = {}) ⇒ Contact

Initialize.

Class constructor.

Parameters

host

(String) – It’s the visitor IP.

api_key

(String) – Cxf instance api key.

contact_token_id

(Integer) – Cookie ‘cxf_contact_id’ value (cxf_contact_token).

Return

Returns a Contact object


33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/contact.rb', line 33

def initialize(
  host,
  api_key,
  session_token = nil,
  refresh_token = nil,
  contact_token_id = nil,
  debug = false,
  user_agent = nil,
  timeouts = {}
)
  @contact_v1_url = '/api/contact/v1'
  @client = Cxf::Client.new(
    host,
    api_key,
    'contact',
    session_token,
    refresh_token,
    contact_token_id,
    nil,
    debug,
    timeouts
  )

  @client.user_agent = user_agent
end

Instance Attribute Details

#clientObject (readonly)

Returns the value of attribute client.


20
21
22
# File 'lib/contact.rb', line 20

def client
  @client
end

Instance Method Details

#change_password(data) ⇒ Object

Change Password.

Change password without email. To change the password a contact must be logged.

Parameters

data

(Hash) – A new password allocated in a data key.

Example

data = { password: 'new_password' }
@data = @cxf_contact.change_password(data)

267
268
269
# File 'lib/contact.rb', line 267

def change_password(data)
  @client.raw('post', '/change-password', nil, data_transform(data), @contact_v1_url)
end

#get_clientObject


271
272
273
# File 'lib/contact.rb', line 271

def get_client
  @client
end

#login(email, password) ⇒ Object

Login.

Starts a contact session.

Parameters

email

(String) – The email that will be logged.

password

(String) – The password of the email.

Example

@cxf_contact.('email@example.com', 'password')

90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/contact.rb', line 90

def (email, password)
  data = {
    email: email,
    password: password
  }
  response = @client.raw('post', '/contacts/login', nil, data_transform(data))
  if response.key? 'data' and response['data'].key? 'access_token'
    @client.session_token = response['data']['access_token']
    @client.refresh_token = response['data']['refresh_token']
  end
  response
end

#logoutObject

Logout.

Ends a contact session previously logged.

Example

@data = @cxf_contact.logout

248
249
250
251
252
253
254
255
# File 'lib/contact.rb', line 248

def logout
  if session_token?
    response = @client.raw('post', '/logout', nil, nil, @contact_v1_url)
    @client.session_token = nil if response['success']

    response
  end
end

Magic Link Login.

Starts a contact session with a token received in the contact email. The token will be received by send_magic_link method.

Parameters

token

(String) – The email token that will be used to log in.

Example

@cxf_contact.(
  'd8618c6d-a165-41cb-b3ec-d053cbf30059:zm54HtRdfHED8dpILZpjyqjPIceiaXNLfOklqM92fveBS0nDtyPYBlI4CPlPe3zq'
)

154
155
156
157
158
159
# File 'lib/contact.rb', line 154

def (token)
  response = @client.raw('get', "/contacts/magic-link-login/#{token}", nil, '/api/v1')
  @client.session_token = response['session_token'] if response.key? 'session_token'

  response
end

#me(options = nil) ⇒ Object

Me.

Get contact logged info.

Parameters

# options

(Hash) – List of Resource collection Options shown above can be used as parameter.

First Example

@data = @cxf_contact.me

Second Example

options = {
  attributes: true,
  taxonomies: true
}
@data = @cxf_contact.me(options)

211
212
213
# File 'lib/contact.rb', line 211

def me(options = nil)
  @client.raw('get', '/me', options, nil, @contact_v1_url)
end

#oauth_login(data) ⇒ Object

OAuth Login.

Login a contact using oauth.


139
140
141
# File 'lib/contact.rb', line 139

def (data)
  @client.raw('post', '/contacts/oauth-login', nil, data)
end

#recover_password(data) ⇒ Object

Recover Password.

Send a email that contains a token to a contact. That token will be used in reset_password to establish a new password.

Parameters

data

(Hash) – It’s a data key where will be hosted the destination email.

Example

data = { email: 'email@example.com' }
@cxf_contact.recover_password(data)

113
114
115
# File 'lib/contact.rb', line 113

def recover_password(data)
  @client.raw('post', '/contacts/recover-password', nil, data_transform(data))
end

#register(data) ⇒ Object

Register.

Register a contact.

Parameters

data

(Hash) – It’s the register data.

Example

data = {
  email: 'email@example.com',
  given_name: 'Given Name',
  last_name: 'Last Name',
  password: 'password'
}
@cxf_contact.register(data);

76
77
78
# File 'lib/contact.rb', line 76

def register(data)
  @client.raw('post', '/contacts/register', nil, data_transform(data))
end

#reset_password(data) ⇒ Object

Reset Password.

Reset password using a token. The token is obtained by recover_password method.

Parameters

data

(Hash) – It’s a set of data which contains all the information to reset a contact password.

Example

data = {
  email: 'email@example.com',
  password: 'password',
  password_confirmation: 'password',
  token: '644aa3aa0831d782cc42e42b11aedea9a2234389af4f429a8d96651295ecfa09'
}
@cxf_contact.reset_password(data)

132
133
134
# File 'lib/contact.rb', line 132

def reset_password(data)
  @client.raw('post', '/contacts/reset-password', nil, data_transform(data))
end

Send Magic Link.

Send magic link to contact by email. That magic link will be used in magic_link_login method.

Parameters

email_or_phone

(String) – Contact’s email.

template_slug

(String) – Email template’s slug to be used in the email.

redirectUrl

(String) – Url to be redirected in the implemented page.

lifeTime

(Integer) – Maximum time of use in minutes.

maxVisits

(Integer) – The maximum number of uses of a token.

First Example

@cxf_contact.send_magic_link('email@example.com', 'template_slug')

Second Example

@cxf_contact.send_magic_link('+526561234567', 'template_slug', '', 1440, 3, 'whatsapp')

177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
# File 'lib/contact.rb', line 177

def send_magic_link(email_or_phone, template_slug, redirect_url = '', life_time = 1440, max_visits = nil, driver = 'email')
  data = {
    driver: driver,
    lifeTime: life_time,
    maxVisits: max_visits,
    redirectUrl: redirect_url,
    templateId: template_slug
  }
  if %w[sms whatsapp].include? driver
    data['phone'] = email_or_phone
  else
    data['email'] = email_or_phone
  end
  @client.raw('post', '/contacts/magic-link', nil, data_transform(data), '/api/v1')
end

#statusObject

Status.

Get contact logged status.

Example

@data = @cxf_contact.status

221
222
223
# File 'lib/contact.rb', line 221

def status
  @client.raw('get', '/status', nil, nil, @contact_v1_url)
end

#update(data) ⇒ Object

Update.

Update logged contact attributes.

Parameters

data

(Hash) – It’s the data to update with a session active.

Example

data = {
  given_name: 'Given Name',
  last_name: 'Last Name'
}
@data = @cxf_contact.update(data)

238
239
240
# File 'lib/contact.rb', line 238

def update(data)
  @client.raw('put', '/update', nil, data_transform(data), @contact_v1_url)
end