Sha256: 74822657b222e63672a32861d56734f9599a2ce91f33a2d95f2cea9f15469349

Contents?: true

Size: 968 Bytes

Versions: 12

Compression:

Stored size: 968 Bytes

Contents

# frozen_string_literal: true

module Cased
  module CLI
    class Identity
      def initialize
        @timeout = 30
      end

      def identify
        response = Cased.clients.cli.post('cli/applications/users/identify')
        case response.status
        when 201 # Created
          url = response.body.fetch('url')
          Cased::CLI::Log.log 'To login, please visit:'
          puts url
          poll(response.body['api_url'])
        when 401 # Unauthorized
          false
        end
      end

      def poll(poll_url)
        count = 0
        user_id = nil
        ip_address = nil

        while user_id.nil?
          count += 1
          response = Cased.clients.cli.get(poll_url)
          if response.success?
            user_id = response.body.dig('user', 'id')
            ip_address = response.body.fetch('ip_address')
          else
            sleep 1
          end
        end

        [user_id, ip_address]
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
cased-ruby-0.8.0 lib/cased/cli/identity.rb
cased-ruby-0.7.1 lib/cased/cli/identity.rb
cased-ruby-0.7.0 lib/cased/cli/identity.rb
cased-ruby-0.6.1 lib/cased/cli/identity.rb
cased-ruby-0.5.2 lib/cased/cli/identity.rb
cased-ruby-0.5.1 lib/cased/cli/identity.rb
cased-ruby-0.5.0 lib/cased/cli/identity.rb
cased-ruby-0.4.8 lib/cased/cli/identity.rb
cased-ruby-0.4.7 lib/cased/cli/identity.rb
cased-ruby-0.4.6 lib/cased/cli/identity.rb
cased-ruby-0.4.5 lib/cased/cli/identity.rb
cased-ruby-0.4.4 lib/cased/cli/identity.rb