private static void accumulateValue(JSONObject obj, string key, Object value) { JSONArray arr=null; if(obj.has(key)){ arr=obj.getJSONArray(key); } else { arr=new JSONArray(); obj.put(key, arr); } arr.put(value); }
private static int[] getLastKnownTime(JSONObject obj) { if(obj.has("start")){ JSONArray arr=obj.getJSONArray("start"); //Console.WriteLine("start %s",arr); Object result=arr[arr.Length-1]; if(result is string){ int[] components=new int[]{ Int32.MinValue, Int32.MinValue, Int32.MinValue, Int32.MinValue, Int32.MinValue, Int32.MinValue, Int32.MinValue, Int32.MinValue }; if(matchDateTimePattern((string)result, new string[]{"%Y-%M-%d","%Y-%D"}, new string[]{"%H:%m:%s","%H:%m", "%H:%m:%s%Z:%z", "%H:%m:%s%Z%z","%H:%m:%s%G", "%H:%m%Z:%z","%H:%m%Z%z","%H:%m%G"}, components,true,true,true)){ // reset the time components components[3]=Int32.MinValue; components[4]=Int32.MinValue; components[5]=Int32.MinValue; components[6]=Int32.MinValue; components[7]=Int32.MinValue; //Console.WriteLine("match %s",Arrays.ToString(components)); return components; } else { //Console.WriteLine("no match"); } } } return null; }
public CacheControl readObjectFromStream(PeterO.Support.InputStream stream) { try { JSONObject jsonobj=new JSONObject(StreamUtility.streamToString(stream)); CacheControl cc=new CacheControl(); cc.cacheability=jsonobj.getInt("cacheability"); cc.noStore=jsonobj.getBoolean("noStore"); cc.noTransform=jsonobj.getBoolean("noTransform"); cc.mustRevalidate=jsonobj.getBoolean("mustRevalidate"); cc.requestTime=Int64.Parse(jsonobj.getString("requestTime"),NumberStyles.AllowLeadingSign,CultureInfo.InvariantCulture); cc.responseTime=Int64.Parse(jsonobj.getString("responseTime"),NumberStyles.AllowLeadingSign,CultureInfo.InvariantCulture); cc.maxAge=Int64.Parse(jsonobj.getString("maxAge"),NumberStyles.AllowLeadingSign,CultureInfo.InvariantCulture); cc.date=Int64.Parse(jsonobj.getString("date"),NumberStyles.AllowLeadingSign,CultureInfo.InvariantCulture); cc.code=jsonobj.getInt("code"); cc.age=Int64.Parse(jsonobj.getString("age"),NumberStyles.AllowLeadingSign,CultureInfo.InvariantCulture); cc.uri=jsonobj.getString("uri"); cc.requestMethod=jsonobj.getString("requestMethod"); if(cc.requestMethod!=null) { cc.requestMethod=StringUtility.toLowerCaseAscii(cc.requestMethod); } cc.headers=new List<string>(); JSONArray jsonarr=jsonobj.getJSONArray("headers"); for(int i=0;i<jsonarr.Length;i++){ string str=jsonarr.getString(i); if(str!=null && (i%2)!=0){ str=StringUtility.toLowerCaseAscii(str); if("age".Equals(str) || "connection".Equals(str) || "keep-alive".Equals(str) || "proxy-authenticate".Equals(str) || "proxy-authorization".Equals(str) || "te".Equals(str) || "trailers".Equals(str) || "transfer-encoding".Equals(str) || "upgrade".Equals(str)){ // Skip "age" header field and // hop-by-hop header fields i++; continue; } } cc.headers.Add(str); } return cc; } catch(InvalidCastException e){ Console.WriteLine(e.StackTrace); return null; } catch(FormatException e){ Console.WriteLine(e.StackTrace); return null; } catch (Json.InvalidJsonException e) { Console.WriteLine(e.StackTrace); return null; } }