class Generic

Generic Logger

Public Class Methods

new(params = {}) click to toggle source

@param params Hash @raise ArgumentError When token is nil

Calls superclass method Envoy::new
# File lib/botanalytics/generic.rb, line 7
def initialize(params = {})
    super(params)
    @async = params.fetch(:async, false)
    informs("Logging enabled for #{self.class.name}...")
    if @async
        require 'concurrent'
        @executor_service = Concurrent::ThreadPoolExecutor.new(
            min_threads: 1,
            max_threads: Concurrent.processor_count * 2,
            max_queue: Concurrent.processor_count * 1000,
            fallback_policy: :caller_runs
        )
        informs("Mode: Async...")
    end
end

Public Instance Methods

log(message) click to toggle source

@param message Hash

# File lib/botanalytics/generic.rb, line 24
def log(message)
    validation = validate(message)
    if validation[:ok]
        informs("Logging messages...")
        informs(message)
        if @async
            @executor_service.post do
                submits(message)
            end
        else
            submits(message)
        end
    else
        fails(validation[:err], validation[:reason], message)
    end
end

Private Instance Methods

validate(payload) click to toggle source

@param payload Hash

# File lib/botanalytics/generic.rb, line 41
def validate(payload)
    pv = is_valid(payload, {}, 'payload')
    unless pv[:ok]
        return pv
    end
    pv = is_valid(payload, Object.new, 'payload', 'is_sender_bot')
    unless pv[:ok]
        return pv
    end
    pv = is_valid(payload, "", 'payload', 'user', 'id')
    unless pv[:ok]
        return pv
    end
    pv = is_valid(payload, "", 'payload', 'user', 'name')
    unless pv[:ok]
        return pv
    end
    pv = is_valid(payload, "", 'payload', 'message', 'text')
    unless pv[:ok]
        return pv
    end
    is_valid(payload, 1, 'payload', 'message', 'timestamp')
end