Sha256: 342fbc7ef645440b4f9f0df25839e3a0e119a61de0e7e7940bef4f291406cbd1

Contents?: true

Size: 1.18 KB

Versions: 3

Compression:

Stored size: 1.18 KB

Contents

# frozen_string_literal: true

require 'io/console'
require 'uffizzi'
require 'uffizzi/response_helper'

module Uffizzi
  class CLI::Login
    include ApiClient

    def initialize(options)
      @options = options
    end

    def run
      password = IO::console.getpass('Enter Password: ')
      params = prepare_request_params(password)
      response = create_session(@options[:hostname], params)

      if Uffizzi::ResponseHelper.created?(response)
        handle_succeed_response(response)
      else
        handle_failed_response(response)
      end
    end

    private

    def prepare_request_params(password)
      {
        user: {
          email: @options[:user],
          password: password.strip,
        },
      }
    end

    def handle_failed_response(response)
      print_errors(response[:body][:errors])
    end

    def handle_succeed_response(response)
      account = response[:body][:user][:accounts].first
      return Uffizzi.ui.say('No account related to this email') unless account_valid?(account)

      ConfigFile.create(account[:id], response[:headers], @options[:hostname])
    end

    def account_valid?(account)
      account[:state] == 'active'
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
uffizzi-cli-0.1.4.3 lib/uffizzi/cli/login.rb
uffizzi-cli-0.1.4.2 lib/uffizzi/cli/login.rb
uffizzi-cli-0.1.3 lib/uffizzi/cli/login.rb