duse-io/duse.rb

View on GitHub
lib/duse/cli/api_command.rb

Summary

Maintainability
A
0 mins
Test Coverage
require 'json'

module Duse
  module CLI
    class ApiCommand < Command
      abstract

      def execute
        super
      rescue Duse::Client::NotLoggedIn
        error "not logged in, run `#$0 login`"
      rescue Duse::Client::Error => e
        error e.message
      rescue Faraday::ConnectionFailed
        error 'Cannot connect to specified duse instance'
      rescue Interrupt
        say "\naborted!"
      end

      def setup
        ensure_uri_is_set
        authenticate
      end

      private

      def ensure_uri_is_set
        error "client not configured, run `#$0 config`" if config.uri.nil?
      end

      def authenticate
        fail Duse::Client::NotLoggedIn if config.token.nil?
      end
    end
  end
end