using System; using System.Collections.Generic; using System.IO; using BestHTTP.Extensions; using BestHTTP.PlatformSupport.FileSystem; using Cpp2IlInjected; namespace BestHTTP.Caching { // Token: 0x02001FC1 RID: 8129 [Token(Token = "0x2001FC1")] public class HTTPCacheFileInfo : IComparable { // Token: 0x170020D2 RID: 8402 // (get) Token: 0x0600CE3E RID: 52798 RVA: 0x002F7658 File Offset: 0x002F5858 // (set) Token: 0x0600CE3F RID: 52799 RVA: 0x002F766C File Offset: 0x002F586C [Token(Token = "0x170020D2")] internal Uri Uri { [Token(Token = "0x600CE3E")] [Address(RVA = "0x3F6E20", Offset = "0x3F5C20", VA = "0x1803F6E20")] get; [Token(Token = "0x600CE3F")] [Address(RVA = "0x3F7200", Offset = "0x3F6000", VA = "0x1803F7200")] set; } // Token: 0x170020D3 RID: 8403 // (get) Token: 0x0600CE40 RID: 52800 RVA: 0x002F7680 File Offset: 0x002F5880 // (set) Token: 0x0600CE41 RID: 52801 RVA: 0x002F7694 File Offset: 0x002F5894 [Token(Token = "0x170020D3")] internal DateTime LastAccess { [Token(Token = "0x600CE40")] [Address(RVA = "0x3F5F40", Offset = "0x3F4D40", VA = "0x1803F5F40")] get; [Token(Token = "0x600CE41")] [Address(RVA = "0x3F7210", Offset = "0x3F6010", VA = "0x1803F7210")] set; } // Token: 0x170020D4 RID: 8404 // (get) Token: 0x0600CE42 RID: 52802 RVA: 0x002F76A8 File Offset: 0x002F58A8 // (set) Token: 0x0600CE43 RID: 52803 RVA: 0x002F76BC File Offset: 0x002F58BC [Token(Token = "0x170020D4")] public int BodyLength { [Token(Token = "0x600CE42")] [Address(RVA = "0x3F7310", Offset = "0x3F6110", VA = "0x1803F7310")] get; [Token(Token = "0x600CE43")] [Address(RVA = "0x420360", Offset = "0x41F160", VA = "0x180420360")] set; } // Token: 0x170020D5 RID: 8405 // (get) Token: 0x0600CE44 RID: 52804 RVA: 0x002F76D0 File Offset: 0x002F58D0 // (set) Token: 0x0600CE45 RID: 52805 RVA: 0x002F76E4 File Offset: 0x002F58E4 [Token(Token = "0x170020D5")] private string ETag { [Token(Token = "0x600CE44")] [Address(RVA = "0x3F63E0", Offset = "0x3F51E0", VA = "0x1803F63E0")] get; [Token(Token = "0x600CE45")] [Address(RVA = "0x409C60", Offset = "0x408A60", VA = "0x180409C60")] set; } // Token: 0x170020D6 RID: 8406 // (get) Token: 0x0600CE46 RID: 52806 RVA: 0x002F76F8 File Offset: 0x002F58F8 // (set) Token: 0x0600CE47 RID: 52807 RVA: 0x002F770C File Offset: 0x002F590C [Token(Token = "0x170020D6")] private string LastModified { [Token(Token = "0x600CE46")] [Address(RVA = "0x3FA180", Offset = "0x3F8F80", VA = "0x1803FA180")] get; [Token(Token = "0x600CE47")] [Address(RVA = "0x4437E0", Offset = "0x4425E0", VA = "0x1804437E0")] set; } // Token: 0x170020D7 RID: 8407 // (get) Token: 0x0600CE48 RID: 52808 RVA: 0x002F7720 File Offset: 0x002F5920 // (set) Token: 0x0600CE49 RID: 52809 RVA: 0x002F7734 File Offset: 0x002F5934 [Token(Token = "0x170020D7")] private DateTime Expires { [Token(Token = "0x600CE48")] [Address(RVA = "0x3F63D0", Offset = "0x3F51D0", VA = "0x1803F63D0")] get; [Token(Token = "0x600CE49")] [Address(RVA = "0x5329E0", Offset = "0x5317E0", VA = "0x1805329E0")] set; } // Token: 0x170020D8 RID: 8408 // (get) Token: 0x0600CE4A RID: 52810 RVA: 0x002F7748 File Offset: 0x002F5948 // (set) Token: 0x0600CE4B RID: 52811 RVA: 0x002F775C File Offset: 0x002F595C [Token(Token = "0x170020D8")] private long Age { [Token(Token = "0x600CE4A")] [Address(RVA = "0x408890", Offset = "0x407690", VA = "0x180408890")] get; [Token(Token = "0x600CE4B")] [Address(RVA = "0x403B30", Offset = "0x402930", VA = "0x180403B30")] set; } // Token: 0x170020D9 RID: 8409 // (get) Token: 0x0600CE4C RID: 52812 RVA: 0x002F7770 File Offset: 0x002F5970 // (set) Token: 0x0600CE4D RID: 52813 RVA: 0x002F7784 File Offset: 0x002F5984 [Token(Token = "0x170020D9")] private long MaxAge { [Token(Token = "0x600CE4C")] [Address(RVA = "0x3FA170", Offset = "0x3F8F70", VA = "0x1803FA170")] get; [Token(Token = "0x600CE4D")] [Address(RVA = "0x46AA50", Offset = "0x469850", VA = "0x18046AA50")] set; } // Token: 0x170020DA RID: 8410 // (get) Token: 0x0600CE4E RID: 52814 RVA: 0x002F7798 File Offset: 0x002F5998 // (set) Token: 0x0600CE4F RID: 52815 RVA: 0x002F77AC File Offset: 0x002F59AC [Token(Token = "0x170020DA")] private DateTime Date { [Token(Token = "0x600CE4E")] [Address(RVA = "0x415290", Offset = "0x414090", VA = "0x180415290")] get; [Token(Token = "0x600CE4F")] [Address(RVA = "0x46AB00", Offset = "0x469900", VA = "0x18046AB00")] set; } // Token: 0x170020DB RID: 8411 // (get) Token: 0x0600CE50 RID: 52816 RVA: 0x002F77C0 File Offset: 0x002F59C0 // (set) Token: 0x0600CE51 RID: 52817 RVA: 0x002F77D4 File Offset: 0x002F59D4 [Token(Token = "0x170020DB")] private bool MustRevalidate { [Token(Token = "0x600CE50")] [Address(RVA = "0x40FFA0", Offset = "0x40EDA0", VA = "0x18040FFA0")] get; [Token(Token = "0x600CE51")] [Address(RVA = "0x410010", Offset = "0x40EE10", VA = "0x180410010")] set; } // Token: 0x170020DC RID: 8412 // (get) Token: 0x0600CE52 RID: 52818 RVA: 0x002F77E8 File Offset: 0x002F59E8 // (set) Token: 0x0600CE53 RID: 52819 RVA: 0x002F77FC File Offset: 0x002F59FC [Token(Token = "0x170020DC")] private DateTime Received { [Token(Token = "0x600CE52")] [Address(RVA = "0x423DE0", Offset = "0x422BE0", VA = "0x180423DE0")] get; [Token(Token = "0x600CE53")] [Address(RVA = "0x567490", Offset = "0x566290", VA = "0x180567490")] set; } // Token: 0x170020DD RID: 8413 // (get) Token: 0x0600CE54 RID: 52820 RVA: 0x002F7810 File Offset: 0x002F5A10 // (set) Token: 0x0600CE55 RID: 52821 RVA: 0x002F7824 File Offset: 0x002F5A24 [Token(Token = "0x170020DD")] private string ConstructedPath { [Token(Token = "0x600CE54")] [Address(RVA = "0x423E10", Offset = "0x422C10", VA = "0x180423E10")] get; [Token(Token = "0x600CE55")] [Address(RVA = "0x687270", Offset = "0x686070", VA = "0x180687270")] set; } // Token: 0x170020DE RID: 8414 // (get) Token: 0x0600CE56 RID: 52822 RVA: 0x002F7838 File Offset: 0x002F5A38 // (set) Token: 0x0600CE57 RID: 52823 RVA: 0x002F784C File Offset: 0x002F5A4C [Token(Token = "0x170020DE")] internal ulong MappedNameIDX { [Token(Token = "0x600CE56")] [Address(RVA = "0x4335D0", Offset = "0x4323D0", VA = "0x1804335D0")] get; [Token(Token = "0x600CE57")] [Address(RVA = "0x703580", Offset = "0x702380", VA = "0x180703580")] set; } // Token: 0x0600CE58 RID: 52824 RVA: 0x002F7860 File Offset: 0x002F5A60 [Token(Token = "0x600CE58")] [Address(RVA = "0xAA4B80", Offset = "0xAA3980", VA = "0x180AA4B80")] internal HTTPCacheFileInfo(Uri uri) { DateTime utcNow = DateTime.UtcNow; } // Token: 0x0600CE59 RID: 52825 RVA: 0x002F7878 File Offset: 0x002F5A78 [Token(Token = "0x600CE59")] [Address(RVA = "0xAA4C00", Offset = "0xAA3A00", VA = "0x180AA4C00")] internal HTTPCacheFileInfo(Uri uri, DateTime lastAcces, int bodyLength) { this.Uri = uri; this.LastAccess = lastAcces; this.BodyLength = bodyLength; this.MaxAge = (long)((ulong)(-1L)); ulong nameIdx = HTTPCacheService.GetNameIdx(); this.MappedNameIDX = nameIdx; } // Token: 0x0600CE5A RID: 52826 RVA: 0x002F78B8 File Offset: 0x002F5AB8 [Token(Token = "0x600CE5A")] [Address(RVA = "0xAA49A0", Offset = "0xAA37A0", VA = "0x180AA49A0")] internal HTTPCacheFileInfo(Uri uri, BinaryReader reader, int version) { this.Uri = uri; DateTime dateTime = DateTime.FromBinary((long)reader.ReadUInt32()); this.LastAccess = dateTime; ushort num = reader.ReadUInt16(); this.BodyLength = (int)num; if (version != 1) { if (version != 2) { return; } long num2 = reader.ReadInt64(); this.MappedNameIDX = (ulong)num2; } decimal num3 = reader.ReadDecimal(); this.ETag = num3; decimal num4 = reader.ReadDecimal(); this.LastModified = num4; DateTime dateTime2 = DateTime.FromBinary((long)reader.ReadUInt32()); this.Expires = dateTime2; uint num5 = reader.ReadUInt32(); this.Age = (long)num5; uint num6 = reader.ReadUInt32(); this.MaxAge = (long)num6; DateTime dateTime3 = DateTime.FromBinary((long)reader.ReadUInt32()); this.Date = dateTime3; int num7 = reader.Read(); this.MustRevalidate = num7 != 0; DateTime dateTime4 = DateTime.FromBinary((long)reader.ReadUInt32()); this.Received = dateTime4; } // Token: 0x0600CE5B RID: 52827 RVA: 0x002F79A0 File Offset: 0x002F5BA0 [Token(Token = "0x600CE5B")] [Address(RVA = "0xAA3D60", Offset = "0xAA2B60", VA = "0x180AA3D60")] internal void SaveTo(BinaryWriter writer) { DateTime dateTime = this.k__BackingField; long num; writer.Write((uint)num); int num2 = this.k__BackingField; writer.Write((ushort)num2); ulong num3 = this.k__BackingField; writer.Write((long)num3); string text = this.k__BackingField; writer.Write(text); string text2 = this.k__BackingField; writer.Write(text2); DateTime dateTime2 = this.k__BackingField; long num4; writer.Write((uint)num4); long num5 = this.k__BackingField; writer.Write((uint)num5); long num6 = this.k__BackingField; writer.Write((uint)num6); DateTime dateTime3 = this.k__BackingField; long num7; writer.Write((uint)num7); writer.Flush(); DateTime dateTime4 = this.k__BackingField; long num8; writer.Write((uint)num8); } // Token: 0x0600CE5C RID: 52828 RVA: 0x002F7A54 File Offset: 0x002F5C54 [Token(Token = "0x600CE5C")] [Address(RVA = "0xAA31E0", Offset = "0xAA1FE0", VA = "0x180AA31E0")] public string GetPath() { string text = this.k__BackingField; if (text == 0) { string k__BackingField = HTTPCacheService.k__BackingField; ulong num = this.k__BackingField; string text3; string text2 = Path.Combine(k__BackingField, text3); this.k__BackingField = text2; } return text; } // Token: 0x0600CE5D RID: 52829 RVA: 0x002F7A8C File Offset: 0x002F5C8C [Token(Token = "0x600CE5D")] [Address(RVA = "0xAA39F0", Offset = "0xAA27F0", VA = "0x180AA39F0")] public bool IsExists() { if (HTTPCacheService.IsSupported) { IIOService ioservice = HTTPManager.IOService; string path = this.GetPath(); } throw new NullReferenceException(); } // Token: 0x0600CE5E RID: 52830 RVA: 0x002F7AB8 File Offset: 0x002F5CB8 [Token(Token = "0x600CE5E")] [Address(RVA = "0xAA2ED0", Offset = "0xAA1CD0", VA = "0x180AA2ED0")] internal void Delete() { int num; do { num = 0; if (!HTTPCacheService.IsSupported) { break; } string path = this.GetPath(); IIOService ioservice = HTTPManager.IOService; this.k__BackingField = (int)((ulong)4294967295L); string empty = string.Empty; this.k__BackingField = empty; DateTime dateTime = DateTime.FromBinary(0L); this.k__BackingField = dateTime; string empty2 = string.Empty; this.k__BackingField = empty2; this.k__BackingField = (long)((ulong)0L); this.k__BackingField = (long)((ulong)(-1L)); DateTime dateTime2 = DateTime.FromBinary(0L); this.k__BackingField = dateTime2; this.k__BackingField = false; DateTime dateTime3 = DateTime.FromBinary(0L); this.k__BackingField = dateTime3; } while (num != 0); } // Token: 0x0600CE5F RID: 52831 RVA: 0x002F7B68 File Offset: 0x002F5D68 [Token(Token = "0x600CE5F")] [Address(RVA = "0xAA3CA0", Offset = "0xAA2AA0", VA = "0x180AA3CA0")] private void Reset() { this.k__BackingField = (int)((ulong)4294967295L); string empty = string.Empty; this.k__BackingField = empty; DateTime dateTime = DateTime.FromBinary(0L); this.k__BackingField = dateTime; string empty2 = string.Empty; int num = 0; this.k__BackingField = empty2; this.k__BackingField = (long)((ulong)0L); this.k__BackingField = (long)((ulong)(-1L)); DateTime dateTime2 = DateTime.FromBinary((long)num); this.k__BackingField = dateTime2; int num2 = 0; this.k__BackingField = false; DateTime dateTime3 = DateTime.FromBinary((long)num2); this.k__BackingField = dateTime3; } // Token: 0x0600CE60 RID: 52832 RVA: 0x002F7BEC File Offset: 0x002F5DEC [Token(Token = "0x600CE60")] [Address(RVA = "0xAA3EE0", Offset = "0xAA2CE0", VA = "0x180AA3EE0")] private void SetUpCachingValues(HTTPResponse response) { response.k__BackingField = this; string text = response.GetFirstHeaderValue("ETag").ToStrOrEmpty(); this.k__BackingField = text; string firstHeaderValue = response.GetFirstHeaderValue("Expires"); DateTime dateTime = DateTime.FromBinary(0L); DateTime dateTime2 = firstHeaderValue.ToDateTime(dateTime); this.k__BackingField = dateTime2; string text2 = response.GetFirstHeaderValue("Last-Modified").ToStrOrEmpty(); this.k__BackingField = text2; string firstHeaderValue2 = response.GetFirstHeaderValue("Age"); int num = 0; long num2 = firstHeaderValue2.ToInt64((long)num); this.k__BackingField = num2; string firstHeaderValue3 = response.GetFirstHeaderValue("Date"); DateTime dateTime3 = DateTime.FromBinary(0L); DateTime dateTime4 = firstHeaderValue3.ToDateTime(dateTime3); this.k__BackingField = dateTime4; string firstHeaderValue4 = response.GetFirstHeaderValue("cache-control"); if (!string.IsNullOrEmpty(firstHeaderValue4)) { string[] array = firstHeaderValue4.FindOption("max-age"); if (array != 0) { string text3 = array[1]; bool flag; if (flag) { this.k__BackingField = (flag ? 1L : 0L); } } bool flag2 = firstHeaderValue4.ToLower().Contains("must-revalidate"); this.k__BackingField = flag2; } DateTime utcNow = DateTime.UtcNow; this.k__BackingField = utcNow; } // Token: 0x0600CE61 RID: 52833 RVA: 0x002F7D14 File Offset: 0x002F5F14 [Token(Token = "0x600CE61")] [Address(RVA = "0xAA4820", Offset = "0xAA3620", VA = "0x180AA4820")] internal bool WillExpireInTheFuture() { if (this.IsExists() && !this.k__BackingField) { DateTime dateTime = this.k__BackingField; DateTime utcNow = DateTime.UtcNow; return dateTime > utcNow; } } // Token: 0x0600CE62 RID: 52834 RVA: 0x002F7DBC File Offset: 0x002F5FBC [Token(Token = "0x600CE62")] [Address(RVA = "0xAA4150", Offset = "0xAA2F50", VA = "0x180AA4150")] internal void SetUpRevalidationHeaders(HTTPRequest request) { bool flag = this.IsExists(); if (flag) { string text = this.k__BackingField; if (!flag) { string text2 = this.k__BackingField; request.SetHeader("If-None-Match", text2); } string text3 = this.k__BackingField; if (!flag) { string text4 = this.k__BackingField; request.SetHeader("If-Modified-Since", text4); } } } // Token: 0x0600CE63 RID: 52835 RVA: 0x002F7E18 File Offset: 0x002F6018 [Token(Token = "0x600CE63")] [Address(RVA = "0xAA30B0", Offset = "0xAA1EB0", VA = "0x180AA30B0")] public Stream GetBodyStream(out int length) { if (this.IsExists()) { int num = this.k__BackingField; length.m_value = num; DateTime utcNow = DateTime.UtcNow; this.k__BackingField = utcNow; IIOService ioservice = HTTPManager.IOService; string path = this.GetPath(); } throw new NullReferenceException(); } // Token: 0x0600CE64 RID: 52836 RVA: 0x002F7E64 File Offset: 0x002F6064 [Token(Token = "0x600CE64")] [Address(RVA = "0xAA3AC0", Offset = "0xAA28C0", VA = "0x180AA3AC0")] internal HTTPResponse ReadResponseTo(HTTPRequest request) { int num; do { num = 0; if (!this.IsExists()) { break; } DateTime utcNow = DateTime.UtcNow; this.k__BackingField = utcNow; IIOService ioservice = HTTPManager.IOService; string path = this.GetPath(); HTTPResponse httpresponse; httpresponse.k__BackingField = this; httpresponse.Dispose(); if (path != 0) { } } while (num != 0); throw new NullReferenceException(); } // Token: 0x0600CE65 RID: 52837 RVA: 0x002F7EC0 File Offset: 0x002F60C0 [Token(Token = "0x600CE65")] [Address(RVA = "0xAA41F0", Offset = "0xAA2FF0", VA = "0x180AA41F0")] internal void Store(HTTPResponse response) { for (;;) { int num = 0; if (!HTTPCacheService.IsSupported) { return; } int num2 = this.GetPath().m_stringLength; IIOService ioservice = HTTPManager.IOService; this.Delete(); IIOService ioservice2 = HTTPManager.IOService; string path = this.GetPath(); object[] array = new object[2]; int k__BackingField = response.k__BackingField; num2 = k__BackingField; if (k__BackingField != 0) { } array[0] = num2; string k__BackingField = response.k__BackingField; if (k__BackingField != 0) { } array[1] = k__BackingField; Dictionary> k__BackingField = response.k__BackingField; bool flag; int num3; if (flag) { if (num < this.k__BackingField) { break; } num3 = 0; } if (num3 != 0) { goto IL_116; } if (num3 != -1) { } byte[] k__BackingField = response.k__BackingField; if (path != 0) { } if (num3 == 0) { goto Block_4; } } object[] array2 = new object[2]; throw new ArrayTypeMismatchException(); Block_4: int length = response.k__BackingField.Length; DateTime utcNow = DateTime.UtcNow; return; IL_116: throw new NullReferenceException(); } // Token: 0x0600CE66 RID: 52838 RVA: 0x002F8008 File Offset: 0x002F6208 [Token(Token = "0x600CE66")] [Address(RVA = "0xAA3300", Offset = "0xAA2100", VA = "0x180AA3300")] internal Stream GetSaveStream(HTTPResponse response) { for (;;) { int num = 0; if (!HTTPCacheService.IsSupported) { goto IL_EA; } DateTime utcNow = DateTime.UtcNow; this.k__BackingField = utcNow; string path = this.GetPath(); IIOService ioservice = HTTPManager.IOService; if (path != 0) { this.Delete(); } int stringLength = path.m_stringLength; IIOService ioservice2 = HTTPManager.IOService; string path2 = this.GetPath(); object[] array = new object[2]; int k__BackingField = response.k__BackingField; if (k__BackingField != 0) { } array[0] = k__BackingField; string k__BackingField = response.k__BackingField; if (k__BackingField != 0) { } array[1] = k__BackingField; Dictionary> k__BackingField = response.k__BackingField; bool flag; if (flag) { break; } if (num != 0) { goto IL_11D; } if (num != -1) { } if (path2 != 0) { } if (num == 0) { goto Block_4; } } object[] array2 = new object[2]; throw new ArrayTypeMismatchException(); Block_4: throw new NullReferenceException(); IL_EA: throw new ArrayTypeMismatchException(); IL_11D: throw new NullReferenceException(); } // Token: 0x0600CE67 RID: 52839 RVA: 0x002F8144 File Offset: 0x002F6344 [Token(Token = "0x600CE67")] [Address(RVA = "0xAA2EA0", Offset = "0xAA1CA0", VA = "0x180AA2EA0", Slot = "4")] public int CompareTo(HTTPCacheFileInfo other) { DateTime dateTime = this.k__BackingField; DateTime dateTime2 = other.k__BackingField; int num; return num; } } }