Sha256: fcb6df3002d99e494b19eaee57004294a87853a466d6510375b74007b74337ba

Contents?: true

Size: 1.77 KB

Versions: 1

Compression:

Stored size: 1.77 KB

Contents

require 'securerandom'

class User
  def initialize(user_id: "", user_email: "", user_name: "")
    @user_id = user_id
    @user_email = user_email
    @user_name = user_name
  end

  attr_reader :user_id
  attr_reader :user_email
  attr_reader :user_name
end

class Event
  def initialize(event_type, user: User(), ip: "127.0.0.1", remote_ip: "127.0.0.1", user_agent: "unknown", sn_cookie: nil, params: nil)
    @event_type = event_type
    @user = user
    @ip = ip
    @remote_ip = remote_ip
    @user_agent = user_agent
    @cid = ""
    @fp = ""

    if params
      unless params.length > 0 && params[0].instance_of?(CustomParam)
        raise ArgumentError("custom params should be a list of CustomParams")
      end
    end
    @params = params

    if sn_cookie
      @cid, @cid = Utils.parse_cookie(sn_cookie)
    end
    @vid = SecureRandom.uuid
    @ts = Time.now.getutc.to_i
  end

  def to_hash
    p = Array.new
    if @params
      @params.each do |param|
        p << {:key => param.key, :value => param.value}
      end
    end

    {
        :eventType => @event_type,
        :user => {
            :id => @user.user_id,
            :email => @user.user_email,
            :name => @user.user_name
        },
        :remoteIP => @remote_ip,
        :ip => @ip,
        :cid => @cid,
        :fp => @fp,
        :ts => @ts,
        :vid => @vid,
        :userAgent => @user_agent,
        :device => Hash.new,
        :params => p
    }
  end

  attr_reader :cid
  attr_reader :params
  attr_reader :user_agent
  attr_reader :user
  attr_reader :remote_ip
  attr_reader :event_type
  attr_reader :fp
  attr_reader :ip
  attr_reader :ts
  attr_reader :vid
end

class CustomParam
  def initialize(key, value)
    @key = key
    @value = value
  end

  attr_reader :key
  attr_reader :value
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
securenative-0.1.5 lib/securenative/event_options.rb