class FyipeTracker
Public Class Methods
new(apiUrl, errorTrackerId, errorTrackerKey, options = [])
click to toggle source
FyipeTracker
constructor. @param string apiUrl @param string errorTrackerId @param string errorTrackerKey
# File lib/fyipeTracker.rb, line 12 def initialize(apiUrl, errorTrackerId, errorTrackerKey, options = []) # instance variable intialzation @configKeys = ['baseUrl'] @MAX_ITEMS_ALLOWED_IN_STACK = 100 @errorTrackerId = errorTrackerId setApiUrl(apiUrl) @errorTrackerKey = errorTrackerKey @tags = [] @fingerprint = [] @options = { 'maxTimeline': 5, 'captureCodeSnippet': true } setUpOptions(options) @util = Util.new(@options) setEventId() @listenerObj = FyipeListener.new(getEventId(), @options) @apiTransport = FyipeTransport.new(@apiUrl) setUpExceptionHandlerListener() end
Public Instance Methods
addToTimeline(category, content, type)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# File lib/fyipeTracker.rb, line 160 def captureMessage( message) # set the a handled tag setTag('handled', 'true') messageObj = {} messageObj["message"] = message prepareErrorObject('message', messageObj); # send to the server return sendErrorEventToServer() end
clear(newEventId)
click to toggle source
# File lib/fyipeTracker.rb, line 243 def clear(newEventId) # clear tags @tags = [] # clear fingerprint @fingerprint = [] # clear timeline @listenerObj.clearTimeline(newEventId) end
getCurrentEvent()
click to toggle source
# File lib/fyipeTracker.rb, line 215 def getCurrentEvent() return @event end
getEventId()
click to toggle source
# File lib/fyipeTracker.rb, line 74 def getEventId() return @eventId end
getFingerprint(errorMessage)
click to toggle source
# 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()
click to toggle source
# File lib/fyipeTracker.rb, line 252 def getSDKDetails() # default sdk details sdkDetail = {} sdkDetail["name"] = Fyipe::NAME sdkDetail["version"] = Fyipe::VERSION return sdkDetail end
getTags()
click to toggle source
# File lib/fyipeTracker.rb, line 128 def getTags() return @tags end
getTimeline()
click to toggle source
# File lib/fyipeTracker.rb, line 87 def getTimeline() return @listenerObj.getTimeline() end
manageErrorObject(exception)
click to toggle source
# 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)
click to toggle source
# 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() tags = 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"]= tags @event["fingerprint"]= fingerprint @event["errorTrackerKey"]= @errorTrackerKey @event["sdk"]= getSDKDetails() end
sendErrorEventToServer()
click to toggle source
# 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)
click to toggle source
# File lib/fyipeTracker.rb, line 33 def setApiUrl(apiUrl) @apiUrl = apiUrl + '/error-tracker/' + @errorTrackerId + '/track'; end
setEventId()
click to toggle source
# File lib/fyipeTracker.rb, line 70 def setEventId() @eventId = @util.v4() end
setFingerPrint(key)
click to toggle source
# 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)
click to toggle source
# 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 @tags.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 @tags.append(tag) end end
setTags(tags)
click to toggle source
# File lib/fyipeTracker.rb, line 115 def setTags(tags) if (!(tags.class.to_s.eql? "Array")) raise "Invalid Tags" end tags.each do |tag| if(tag[:key] != nil && tag[:value] != nil) setTag(tag[:key], tag[:value]) end end end
setUpExceptionHandlerListener()
click to toggle source
# File lib/fyipeTracker.rb, line 172 def setUpExceptionHandlerListener() # start listener at_exit do manageErrorObject($!) if $! end end
setUpOptions(options)
click to toggle source
# File lib/fyipeTracker.rb, line 37 def setUpOptions(options) # set up options if(options.class.to_s != "Hash") return # ignore passed options if it is not an object end options.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 (@options[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 @options[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 @options[key] = defaultVal end end end end end