Class: FyipeTracker
- Inherits:
-
Object
- Object
- FyipeTracker
- Defined in:
- lib/fyipeTracker.rb
Instance Method Summary collapse
- #addToTimeline(category, content, type) ⇒ Object
- #captureException(exception) ⇒ Object
- #captureMessage(message) ⇒ Object
- #clear(newEventId) ⇒ Object
- #getCurrentEvent ⇒ Object
- #getEventId ⇒ Object
- #getFingerprint(errorMessage) ⇒ Object
- #getSDKDetails ⇒ Object
- #getTags ⇒ Object
- #getTimeline ⇒ Object
-
#initialize(apiUrl, errorTrackerId, errorTrackerKey, options = []) ⇒ FyipeTracker
constructor
FyipeLogger constructor.
- #manageErrorObject(exception) ⇒ Object
- #prepareErrorObject(eventType, errorStackTrace) ⇒ Object
- #sendErrorEventToServer ⇒ Object
- #setApiUrl(apiUrl) ⇒ Object
- #setEventId ⇒ Object
- #setFingerPrint(key) ⇒ Object
- #setTag(key, value) ⇒ Object
- #setTags(tags) ⇒ Object
- #setUpExceptionHandlerListener ⇒ Object
- #setUpOptions(options) ⇒ Object
Constructor Details
#initialize(apiUrl, errorTrackerId, errorTrackerKey, options = []) ⇒ FyipeTracker
FyipeLogger constructor.
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/fyipeTracker.rb', line 12 def initialize(apiUrl, errorTrackerId, errorTrackerKey, = []) # instance variable intialzation @configKeys = ['baseUrl'] @MAX_ITEMS_ALLOWED_IN_STACK = 100 @errorTrackerId = errorTrackerId setApiUrl(apiUrl) @errorTrackerKey = errorTrackerKey = [] @fingerprint = [] = { 'maxTimeline': 5, 'captureCodeSnippet': true } setUpOptions() @util = Util.new() setEventId() @listenerObj = FyipeListener.new(getEventId(), ) @apiTransport = FyipeTransport.new(@apiUrl) # setUpExceptionHandlerListener() end |
Instance Method Details
#addToTimeline(category, content, type) ⇒ Object
78 79 80 81 82 83 84 85 |
# File 'lib/fyipeTracker.rb', line 78 def addToTimeline(category, content, type) timelineObj = {} timelineObj["category"] = category timelineObj["data"] = content timelineObj["type"] = type @listenerObj.logCustomTimelineEvent(timelineObj) end |
#captureException(exception) ⇒ Object
219 220 221 222 223 224 225 226 227 228 229 230 231 |
# File 'lib/fyipeTracker.rb', line 219 def captureException(exception) # construct the error object exceptionObj = @util.getExceptionStackTrace(exception) # set the a handled tag setTag('handled', 'true') prepareErrorObject('exception', exceptionObj) # send to the server return sendErrorEventToServer() end |
#captureMessage(message) ⇒ Object
160 161 162 163 164 165 166 167 168 169 170 |
# File 'lib/fyipeTracker.rb', line 160 def captureMessage( ) # set the a handled tag setTag('handled', 'true') = {} ["message"] = prepareErrorObject('message', ); # send to the server return sendErrorEventToServer() end |
#clear(newEventId) ⇒ Object
243 244 245 246 247 248 249 250 |
# File 'lib/fyipeTracker.rb', line 243 def clear(newEventId) # clear tags = [] # clear fingerprint @fingerprint = [] # clear timeline @listenerObj.clearTimeline(newEventId) end |
#getCurrentEvent ⇒ Object
215 216 217 |
# File 'lib/fyipeTracker.rb', line 215 def getCurrentEvent() return @event end |
#getEventId ⇒ Object
74 75 76 |
# File 'lib/fyipeTracker.rb', line 74 def getEventId() return @eventId end |
#getFingerprint(errorMessage) ⇒ Object
149 150 151 152 153 154 155 156 157 158 |
# File 'lib/fyipeTracker.rb', line 149 def getFingerprint(errorMessage) # if no fingerprint exist currently if (@fingerprint.length() < 1) # set up finger print based on error since none exist setFingerPrint(errorMessage) end return @fingerprint end |
#getSDKDetails ⇒ Object
252 253 254 255 256 257 258 259 260 |
# File 'lib/fyipeTracker.rb', line 252 def getSDKDetails() # default sdk details sdkDetail = {} sdkDetail["name"] = Fyipe::NAME sdkDetail["version"] = Fyipe::VERSION return sdkDetail end |
#getTags ⇒ Object
128 129 130 |
# File 'lib/fyipeTracker.rb', line 128 def getTags() return end |
#getTimeline ⇒ Object
87 88 89 |
# File 'lib/fyipeTracker.rb', line 87 def getTimeline() return @listenerObj.getTimeline() end |
#manageErrorObject(exception) ⇒ Object
179 180 181 182 183 184 185 186 187 188 189 190 191 |
# File 'lib/fyipeTracker.rb', line 179 def manageErrorObject(exception) # construct the error object errorObj = @utilObj.getExceptionStackTrace(exception); # set the a handled tag setTag('handled', 'false'); # prepare to send to server prepareErrorObject('error', errorObj); # send to the server return sendErrorEventToServer(); end |
#prepareErrorObject(eventType, errorStackTrace) ⇒ Object
192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 |
# File 'lib/fyipeTracker.rb', line 192 def prepareErrorObject(eventType, errorStackTrace) # set a last timeline as the error message @listenerObj.logErrorEvent(errorStackTrace["message"], eventType) # get current timeline timeline = getTimeline() = getTags() fingerprint = getFingerprint(errorStackTrace["message"]) # default fingerprint will be the message from the error stacktrace # get event ID # Temporary display the state of the error stack, timeline and device details when an error occur # prepare the event so it can be sent to the server @event = {} @event["type"] = eventType @event["timeline"]= timeline @event["exception"]= errorStackTrace @event["eventId"]= getEventId() @event["tags"]= @event["fingerprint"]= fingerprint @event["errorTrackerKey"]= @errorTrackerKey @event["sdk"]= getSDKDetails() end |
#sendErrorEventToServer ⇒ Object
232 233 234 235 236 237 238 239 240 241 |
# File 'lib/fyipeTracker.rb', line 232 def sendErrorEventToServer() response = nil # send to API properly response = @apiTransport.sendErrorEventToServer(@event) # generate a new event Id setEventId() # clear the timeline after a successful call to the server clear(getEventId()) return response end |
#setApiUrl(apiUrl) ⇒ Object
33 34 35 |
# File 'lib/fyipeTracker.rb', line 33 def setApiUrl(apiUrl) @apiUrl = apiUrl + '/error-tracker/' + @errorTrackerId + '/track'; end |
#setEventId ⇒ Object
70 71 72 |
# File 'lib/fyipeTracker.rb', line 70 def setEventId() @eventId = @util.v4() end |
#setFingerPrint(key) ⇒ Object
132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 |
# File 'lib/fyipeTracker.rb', line 132 def setFingerPrint(key) # get data type of the passed key keyClassType = key.class.to_s # routine check if (keyClassType != "String" && keyClassType != "Array") raise "Invalid Fingerprint" end fingerprint = key if (keyClassType == "String") fingerprint = [key] end @fingerprint = fingerprint end |
#setTag(key, value) ⇒ Object
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/fyipeTracker.rb', line 91 def setTag(key, value) if (!((key.class.to_s.eql? "String") || (value.class.to_s.eql? "String"))) raise "Invalid Tag" end exist = false .each do |tag| if(tag['key'].to_s.eql? key) # set the found flag exist = true # replace value if it exist tag['value'] = value break end end if(!exist) # push key and value if it doesnt tag = {} tag['key'] = key tag['value'] = value .append(tag) end end |
#setTags(tags) ⇒ Object
115 116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/fyipeTracker.rb', line 115 def setTags() if (!(.class.to_s.eql? "Array")) raise "Invalid Tags" end .each do |tag| if(tag[:key] != nil && tag[:value] != nil) setTag(tag[:key], tag[:value]) end end end |
#setUpExceptionHandlerListener ⇒ Object
172 173 174 175 176 177 178 |
# File 'lib/fyipeTracker.rb', line 172 def setUpExceptionHandlerListener() # start listener at_exit do manageErrorObject($!) if $! end end |
#setUpOptions(options) ⇒ Object
37 38 39 40 41 42 43 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 |
# File 'lib/fyipeTracker.rb', line 37 def setUpOptions() # set up options if(.class.to_s != "Hash") return # ignore passed options if it is not an object end .each do |key, value| # proceed with current key if it is not in the config keys if (!(@configKeys.include? key)) # if key is allowed in options if ([key] != nil) # set max timeline properly after hecking conditions if key.to_s == 'maxTimeline' allowedValue = value if value > @MAX_ITEMS_ALLOWED_IN_STACK or value < 1 allowedValue = @MAX_ITEMS_ALLOWED_IN_STACK end [key] = allowedValue elsif key.to_s == 'captureCodeSnippet' defaultVal = true # set boolean value if boolean or set default `true` if anything other than boolean is passed if [true, false].include? value # since there is no Boolean class in Ruby defaultVal = value end [key] = defaultVal end end end end end |