Sha256: 5122ef7b67b295cd0cb887557e6ebcb128de64a255f8e389a46d22d212ef3f7f

Contents?: true

Size: 822 Bytes

Versions: 4

Compression:

Stored size: 822 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

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

        user_id
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
cased-ruby-0.4.3 lib/cased/cli/identity.rb
cased-ruby-0.4.2 lib/cased/cli/identity.rb
cased-ruby-0.4.1 lib/cased/cli/identity.rb
cased-ruby-0.4.0 lib/cased/cli/identity.rb