Skip to content

Instantly share code, notes, and snippets.

@calebdre
Last active April 12, 2016 19:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save calebdre/e220ce2c5229f7c1c9f763598febc704 to your computer and use it in GitHub Desktop.
Save calebdre/e220ce2c5229f7c1c9f763598febc704 to your computer and use it in GitHub Desktop.
require 'json'
require "net/http"
require "uri"
class HarFetcher
def get url
response = Net::HTTP.get_response(URI.parse(url))
return JSON.parse(response.body)
end
end
class HarParser
def initialize harsData
# entries are all we want. Assume we're getting the data as hash from HarFetcher.get method.
@entriesHash = harsData['log']['entries']
end
def getFastest
fastestEntry = {}
for entry in @entriesHash
if !fastestEntry.has_key? "time" or fastestEntry['time'] > entry['time']
fastestEntry = convertEntryToHash(entry)
end
end
return fastestEntry
end
def getSlowest
slowestEntry = {}
for entry in @entriesHash
if !slowestEntry.has_key? "time" or slowestEntry['time'] < entry['time']
slowestEntry = convertEntryToHash(entry)
end
end
return slowestEntry
end
private
def convertEntryToHash entry
return {"time" => entry['time'], "file" => entry['request']['url']}
end
end
# USAGE
data = HarFetcher.new.get(ARGV[0])
parser = HarParser.new(data)
fastest = parser.getFastest()
slowest = parser.getSlowest()
puts "Fastest: #{URI.unescape(fastest['file'])} #{fastest['time']} seconds"
puts "Slowest: #{URI.unescape(slowest['file'])} #{slowest['time']} seconds"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment