Module: Meroku::User

Extended by:
ResponseHandler
Included in:
App, Key
Defined in:
lib/meroku/user.rb

Overview

Logic related to Users login, logout etc

Class Method Summary collapse

Instance Method Summary collapse

Methods included from ResponseHandler

process_error, process_success

Class Method Details

.delete_tokenObject



49
50
51
52
# File 'lib/meroku/user.rb', line 49

def self.delete_token
  file = "#{Dir.home}/.meroku_token"
  File.delete(file) if File.exist?(file)
end

.login(email, password) ⇒ Object



8
9
10
11
12
13
14
15
# File 'lib/meroku/user.rb', line 8

def self.(email, password)
  data = { 'email' => email, 'password' => password }.to_json
  result = RestClient.post 'https://www.meroku.com/login.json',
                           data,
                           content_type: :json
  process_error(result)
  process_success(result) { |x| save_token(x) }
end

.logoutObject

Raises:



22
23
24
25
26
27
# File 'lib/meroku/user.rb', line 22

def self.logout
  file = "#{Dir.home}/.meroku_token"
  File.delete(file)
  puts 'Logged out'
  raise Meroku::Success
end

.save_token(x) ⇒ Object



17
18
19
20
# File 'lib/meroku/user.rb', line 17

def self.save_token(x)
  token = JSON.parse(x).dig('data', 'token')
  IO.write("#{Dir.home}/.meroku_token", token) if token
end

.signup(email, password) ⇒ Object



29
30
31
32
33
34
35
36
# File 'lib/meroku/user.rb', line 29

def self.(email, password)
  data = { 'email' => email, 'password' => password }.to_json
  result = RestClient.post 'https://www.meroku.com/registrations.json',
                           data,
                           content_type: :json
  process_error(result)
  process_success(result) { |x| save_token(x) }
end

.unregister(options) ⇒ Object



38
39
40
41
42
43
44
45
46
47
# File 'lib/meroku/user.rb', line 38

def self.unregister(options)
  data = { 'email' => options[:email], 'password' => options[:password] }
  result = RestClient::Request.execute(
    method: :delete,
    url: 'https://www.meroku.com/registrations.json',
    headers: { params: data }
  )
  process_error(result)
  process_success(result) { delete_token }
end

Instance Method Details

#saved_tokenObject



54
55
56
57
58
59
# File 'lib/meroku/user.rb', line 54

def saved_token
  token_path = Dir.home + '/.meroku_token'
  IO.read(token_path)
rescue StandardError => e
  raise Meroku::Error, "Login failed #{e.class}"
end