Sha256: d5fa33644c712f93c9bd8fd214fd575948e4b429b6fc40fa7f30d22996017eea

Contents?: true

Size: 1.61 KB

Versions: 8

Compression:

Stored size: 1.61 KB

Contents

require_relative "../common/closeable"

class AuthService < Closeable

  def initialize(connector = nil, poll_interval_in_sec = 60, callback = nil, logger = nil)

    unless connector.kind_of?(Connector)

      raise "The 'connector' parameter must be of '" + Connector.to_s + "' data type"
    end

    unless callback.kind_of?(ClientCallback)

      raise "The 'callback' parameter must be of '" + ClientCallback.to_s + "' data type"
    end

    @callback = callback
    @connector = connector
    @poll_interval_in_sec = poll_interval_in_sec

    if logger != nil

      @logger = logger
    else

      @logger = Logger.new(STDOUT)
    end
  end

  def start_async

    @logger.debug "Async starting: " + self.to_s

    @ready = true

    @thread = Thread.new do

      @logger.debug "Async started: " + self.to_s

      while @ready do

        @logger.debug "Async auth iteration"

        if @connector.authenticate

          @callback.on_auth_success
          stop_async
          @logger.info "Stopping Auth service"
        else

          @logger.error "Exception while authenticating, retry in " + @poll_interval_in_sec.to_s + " seconds"
        end

        sleep(@poll_interval_in_sec)
      end
    end

    @thread.run
  end

  def close

    stop_async
  end

  def on_auth_success

    unless @callback == nil

      unless @callback.kind_of?(ClientCallback)

        raise "Expected '" + ClientCallback.to_s + "' data type for the callback"
      end

      @callback.on_auth_success
    end
  end

  protected

  def stop_async

    @ready = false

    if @thread != nil

      @thread.exit
      @thread = nil
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
ff-ruby-server-sdk-1.0.6 lib/ff/ruby/server/sdk/api/auth_service.rb
ff-ruby-server-sdk-1.0.5 lib/ff/ruby/server/sdk/api/auth_service.rb
ff-ruby-server-sdk-1.0.4 lib/ff/ruby/server/sdk/api/auth_service.rb
ff-ruby-server-sdk-1.0.3 lib/ff/ruby/server/sdk/api/auth_service.rb
ff-ruby-server-sdk-1.0.2 lib/ff/ruby/server/sdk/api/auth_service.rb
ff-ruby-server-sdk-1.0.2.rc1 lib/ff/ruby/server/sdk/api/auth_service.rb
ff-ruby-server-sdk-1.0.1 lib/ff/ruby/server/sdk/api/auth_service.rb
ff-ruby-server-sdk-1.0.0 lib/ff/ruby/server/sdk/api/auth_service.rb