Sha256: be9af2d4b0861dfe9457799800f0351d6f5d89865cf3b4af71ac72d1cee4bb79

Contents?: true

Size: 1.36 KB

Versions: 2

Compression:

Stored size: 1.36 KB

Contents

require 'forwardable'
require 'chillout/server_side'
require 'chillout/http_client'
require 'chillout/error_filter'
require 'chillout/dispatcher'
require 'chillout/config'
require 'chillout/error'
require 'chillout/event_data_builder'
require 'chillout/prefixed_logger'

module Chillout
  class Client
    extend Forwardable

    def_delegators :@dispatcher, :dispatch_error, :send_error, :send_creations

    attr_reader :config
    attr_reader :logger

    def initialize(config_or_api_key, options = {})
      build_config(config_or_api_key, options)

      yield @config if block_given?

      @logger = PrefixedLogger.new("Chillout", @config.logger)

      @http_client = HttpClient.new(@config, logger)
      @event_data_builder = EventDataBuilder.new(@config)
      @server_side = ServerSide.new(@event_data_builder, @http_client)
      @filter      = ErrorFilter.new
      @dispatcher  = Dispatcher.new(@filter, @server_side)
    end

    def send_exception(exception, environment = {})
      send_error(Error.new(exception, environment))
    end

    private
    def build_config(config_or_api_key, options)
      case config_or_api_key
      when Config
        @config = config_or_api_key
      when String
        @config = Config.new(config_or_api_key)
      else
        raise ArgumentError.new("Invalid config passed")
      end
      @config.update(options)
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
chillout-0.2.1 lib/chillout/client.rb
chillout-0.2.0 lib/chillout/client.rb