Class: IntellisenseRuby::Client
- Inherits:
-
Object
- Object
- IntellisenseRuby::Client
- Defined in:
- lib/intellisense-ruby/client.rb
Instance Method Summary collapse
-
#alias(options) ⇒ Object
public: Aliases a user from one id to another.
-
#describe(entity) ⇒ Object
public: describe entities in the graph.
-
#flush ⇒ Object
public: Synchronously waits until the consumer has flushed the queue.
-
#identify(options) ⇒ Object
public: Identifies a user.
-
#initialize(options = {}) ⇒ Client
constructor
public: Creates a new client.
-
#queued_messages ⇒ Object
public: Returns the number of queued messages.
-
#track(options) ⇒ Object
public: Tracks an event.
Constructor Details
#initialize(options = {}) ⇒ Client
public: Creates a new client
options - Hash
:secret - String of your project's secret
:max_queue_size - Fixnum of the max calls to remain queued (optional)
:on_error - Proc which handles error calls from the API
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/intellisense-ruby/client.rb', line 19 def initialize( = {}) @queue = Queue.new @secret = [:secret] @max_queue_size = [:max_queue_size] || IntellisenseRuby::Defaults::Queue::MAX_SIZE check_api_key @consumer = IntellisenseRuby::Consumer.new(@queue, @secret, ) @thread = Thread.new { @consumer.run } @logger = [:logger] log('DEBUG: ############## SENSOR initialized!') end |
Instance Method Details
#alias(options) ⇒ Object
public: Aliases a user from one id to another
options - Hash
:from - String of the id to alias from
:to - String of the id to alias to
:timestamp - Time of when the alias occured (optional)
:context - Hash of context (optional)
194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 |
# File 'lib/intellisense-ruby/client.rb', line 194 def alias() check_api_key from = [:from].to_s to = [:to].to_s = [:timestamp] || Time.new context = [:context] || {} ensure_user(from) ensure_user(to) () add_context(context) enqueue({ from: from, to: to, context: context, timestamp: .iso8601, action: 'alias' }) end |
#describe(entity) ⇒ Object
public: describe entities in the graph
entity - Hash
:type - type of entity (program, course, user, etc.)
:entity_id - entity Id
:properties - Hash of entity properties (optional, but recommended)
:timestamp - Time of when the event occurred. (optional)
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/intellisense-ruby/client.rb', line 44 def describe(entity) log('DEBUG: ############## describing entity' + entity.to_s) check_api_key type = entity[:type] entity_id = entity[:entity_id].to_s properties = entity[:properties] || {} = entity[:timestamp] || Time.new () if type.nil? || type.empty? fail ArgumentError, 'Must supply type as a non-empty string' end if entity_id.nil? || entity_id.empty? fail ArgumentError, 'Must supply entity_id as a non-empty string' end fail ArgumentError, 'Properties must be a Hash' unless properties.is_a? Hash enqueue({ type: type, entityId: entity_id, properties: properties, timestamp: .iso8601, action: 'describe'}) end |
#flush ⇒ Object
public: Synchronously waits until the consumer has flushed the queue.
Use only for scripts which are not long-running, and will
specifically exit
114 115 116 117 118 |
# File 'lib/intellisense-ruby/client.rb', line 114 def flush while !@queue.empty? || @consumer.is_requesting? sleep(0.1) end end |
#identify(options) ⇒ Object
public: Identifies a user
options - Hash
:user_id - String of the user id
:traits - Hash of user traits. (optional)
:timestamp - Time of when the event occurred. (optional)
:context - Hash of context. (optional)
164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 |
# File 'lib/intellisense-ruby/client.rb', line 164 def identify() check_api_key user_id = [:user_id].to_s traits = [:traits] || {} = [:timestamp] || Time.new context = [:context] || {} ensure_user(user_id) () fail ArgumentError, 'Must supply traits as a hash' unless traits.is_a? Hash add_context(context) enqueue({ userId: user_id, context: context, traits: traits, timestamp: .iso8601, action: 'identify' }) end |
#queued_messages ⇒ Object
public: Returns the number of queued messages
returns Fixnum of messages in the queue
219 220 221 |
# File 'lib/intellisense-ruby/client.rb', line 219 def @queue.length end |
#track(options) ⇒ Object
public: Tracks an event
options - Hash
:event - String of event name.
:user_id - String of the user id.
:properties - Hash of event properties. (optional)
:timestamp - Time of when the event occurred. (optional)
:context - Hash of context. (optional)
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/intellisense-ruby/client.rb', line 83 def track(learning_event) log('DEBUG: ############## recording learning event!') check_api_key type = [:type] entity_id = [:entity_id].to_s properties = [:properties] || {} = [:timestamp] || Time.new () if type.nil? || type.empty? fail ArgumentError, 'Must supply type as a non-empty string' end fail ArgumentError, 'Properties must be a Hash' unless properties.is_a? Hash enqueue({ type: type, entityId: entity_id, properties: properties, timestamp: .iso8601, action: 'measure'}) end |