lib/meroku/user.rb in meroku-2.0.23 vs lib/meroku/user.rb in meroku-2.0.24
- old
+ new
@@ -2,24 +2,65 @@
module Meroku
# Logic related to Users login, logout etc
module User
def self.login(email, password)
- url = 'https://www.meroku.com/login.json'
data = { 'email' => email, 'password' => password }.to_json
- result = RestClient.post url,
+ result = RestClient.post 'https://www.meroku.com/login.json',
data,
content_type: :json
- token = JSON.parse(result.body)['token']
- IO.write("#{Dir.home}/.meroku_token", token)
- puts 'Logged in'
- rescue RestClient::Unauthorized
- raise Meroku::LoginFailed, 'Login Failed'
+ process_error(result)
+ process_success(result) { |x| save_token(x) }
end
+ def self.process_error(result)
+ raise Meroku::Error, JSON.parse(result).dig('errors') \
+ if JSON.parse(result).dig('errors')
+ end
+
+ def self.process_success(result)
+ id = JSON.parse(result).dig('data', 'id')
+ if id
+ yield(result) if block_given?
+ puts "OK [#{id}]"
+ end
+ raise Meroku::Success
+ end
+
+ def self.save_token(x)
+ token = JSON.parse(x).dig('data', 'id')
+ IO.write("#{Dir.home}/.meroku_token", token) if token
+ end
+
def self.logout
file = "#{Dir.home}/.meroku_token"
- File.delete(file) if File.exist?(file)
+ File.delete(file)
puts 'Logged out'
+ raise Meroku::Success
+ end
+
+ def self.signup(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
+
+ 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
+
+ def self.delete_token
+ file = "#{Dir.home}/.meroku_token"
+ File.delete(file) if File.exist?(file)
end
end
end