class Moneylovercli::Commands::Login

Public Class Methods

new(options) click to toggle source
# File lib/moneylovercli/commands/login.rb, line 11
def initialize(options)
  @options = options
end

Public Instance Methods

execute(*) click to toggle source
# File lib/moneylovercli/commands/login.rb, line 15
def execute(*)
  username = prompt.ask('Enter your username/email?')
  password = prompt.mask('Enter your password?')
  status, access_token = parsed_access_token(username, password)

  if status
    prompt.ok('Login successfully')
    write_config(access_token)
  else
    prompt.error(access_token['message'])
  end
end

Private Instance Methods

parsed_access_token(username, password) click to toggle source
# File lib/moneylovercli/commands/login.rb, line 40
def parsed_access_token(username, password)
  client, token = parsed_login_url
  request = Moneylovercli::Api::AccessToken.new.access_token(
    authorization_token: token.to_s,
    client: client, email: username, password: password
  )

  [request.parsed_response['status'], request.parsed_response]
end
parsed_login_url() click to toggle source
# File lib/moneylovercli/commands/login.rb, line 31
def parsed_login_url
  login_url = Moneylovercli::Api::User.new.login_url.parsed_response
  client = login_url['data']['login_url'].match(/client=(.+?)&/)[1].to_s
  token = login_url['data']['request_token']

  [client, token]
end
write_config(access_token) click to toggle source
# File lib/moneylovercli/commands/login.rb, line 51
def write_config(access_token)
  access_token.each do |key, value|
    config.set(key, value: value)
  end
  config.write(force: true)
end