| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- //local har_fn = "/home/mingo/Downloads/builder.yaml.de.har";
- local dest_folder = "/tmp/har-tmp/";
- os.system(format("mkdir %s", dest_folder));
- local fd = file(har_fn, "r");
- local fc = fd.read(fd.len());
- fd.close();
- function json2var(json) {
- local vm = SlaveVM();
- local slave_func = "getTable";
-
- //debug_print(json, "\n");
- //convert new data from json to squilu table for merge
- vm.compilestring(slave_func, "return " + json, true, true);
- local tbl = vm.call(true, slave_func);
- return tbl;
- }
- function dumpVar(vtd)
- {
- local vtype = type(vtd);
- if( vtype == "table" )
- {
- foreach(k,v in vtd)
- {
- print(k, (v || "").tostring().len());
- dumpVar(v);
- }
- }
- else if( vtype == "array" )
- {
- foreach(k,v in vtd)
- {
- print(k, (v || "").tostring().len());
- dumpVar(v);
- }
- }
- }
- local folders_made = {};
- function getPath(url)
- {
- local ary = url.split('/');
- for(local i = 1, len = ary.len()-1; i < len; ++i)
- {
- //print(i,ary[i]);
- local folder = ary.slice(1, i+1).join("/");
- local cmd = format("mkdir %s", dest_folder + folder);
- if(!table_rawget(folders_made, folder, false))
- {
- print(cmd);
- os.system(cmd);
- table_rawset(folders_made, folder, true);
- }
- }
- local path = ary.slice(1).join("/");
- //print(path);
- return path;
- }
- function dumpContent(vhar)
- {
- local entries = vhar.log.entries;
- foreach(k, ventry in entries)
- {
- local url = ventry.request.url;
- local path = getPath(url);
- if(path.endswith("/"))
- {
- path += "index.html";
- }
- if( ventry.response.content.mimeType == "text/html")
- {
- if(path.indexOf(".htm") < 0)
- {
- path = getPath(url + "/index.html");
- }
- }
- local idx = path.indexOf("@");
- if(idx < 0) idx = path.indexOf("?");
-
- if(idx > 0)
- {
- path = path.slice(0, idx);
- }
-
- local content = table_rawget(ventry.response.content, "text", false);
-
- if(content)
- {
- if(table_rawget(ventry.response.content, "encoding", "") == "base64")
- {
- content = base64.decode(content);
- }
-
- print(path, content.len());
-
- local full_path = dest_folder + path;
- try
- {
- local fdc = file(full_path, "w");
- fdc.write(content);
- fdc.close();
- }
- catch(e)
- {
- print(e);
- }
- }
- }
- }
- local har_json = json2var(fc);
- //dumpVar(har_json);
- dumpContent(har_json);
|