Sha256: 6aec754bb1e9aaa13b42c7af30d6c499d4bcdcf75f5ac07c938ceefd67f4f92e

Contents?: true

Size: 1.14 KB

Versions: 3

Compression:

Stored size: 1.14 KB

Contents

module Slack
  module RealTime
    module Config
      class NoConcurrencyError < StandardError; end

      extend self

      ATTRIBUTES = [
        :token,
        :websocket_ping,
        :websocket_proxy,
        :concurrency
      ]

      attr_accessor(*Config::ATTRIBUTES)

      def reset
        self.websocket_ping = 30
        self.websocket_proxy = nil
        self.token = nil
        self.concurrency = method(:detect_concurrency)
      end

      def concurrency
        (val = @concurrency).respond_to?(:call) ? val.call : val
      end

      private

      def detect_concurrency
        [:Eventmachine, :Celluloid].each do |concurrency|
          begin
            return Slack::RealTime::Concurrency.const_get(concurrency)
          rescue LoadError
            false # could not be loaded, missing dependencies
          end
        end

        fail NoConcurrencyError, 'Missing concurrency. Add faye-websocket or celluloid-io to your Gemfile.'
      end
    end

    class << self
      def configure
        block_given? ? yield(Config) : Config
      end

      def config
        Config
      end
    end
  end
end

Slack::RealTime::Config.reset

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
slack-ruby-client-0.5.2 lib/slack/real_time/config.rb
slack-ruby-client-0.5.1 lib/slack/real_time/config.rb
slack-ruby-client-0.5.0 lib/slack/real_time/config.rb