using System; using System.Collections.Generic; using System.IO; using System.Runtime.InteropServices; using BestHTTP.Extensions; using BestHTTP.PlatformSupport.FileSystem; using Cpp2IlInjected; namespace BestHTTP.Caching { // Token: 0x020019E4 RID: 6628 [Token(Token = "0x20019E4")] [StructLayout(3)] public class HTTPCacheFileInfo : IComparable { // Token: 0x17001CD1 RID: 7377 // (get) Token: 0x0600B264 RID: 45668 RVA: 0x0029EF64 File Offset: 0x0029D164 // (set) Token: 0x0600B265 RID: 45669 RVA: 0x0029EF78 File Offset: 0x0029D178 [Token(Token = "0x17001CD1")] internal Uri Uri { [Token(Token = "0x600B264")] [Address(RVA = "0x3C39A0", Offset = "0x3C23A0", VA = "0x1803C39A0")] get; [Token(Token = "0x600B265")] [Address(RVA = "0x3C39B0", Offset = "0x3C23B0", VA = "0x1803C39B0")] set; } // Token: 0x17001CD2 RID: 7378 // (get) Token: 0x0600B266 RID: 45670 RVA: 0x0029EF8C File Offset: 0x0029D18C // (set) Token: 0x0600B267 RID: 45671 RVA: 0x0029EFA0 File Offset: 0x0029D1A0 [Token(Token = "0x17001CD2")] internal DateTime LastAccess { [Token(Token = "0x600B266")] [Address(RVA = "0x3C1240", Offset = "0x3BFC40", VA = "0x1803C1240")] get; [Token(Token = "0x600B267")] [Address(RVA = "0x3C1280", Offset = "0x3BFC80", VA = "0x1803C1280")] set; } // Token: 0x17001CD3 RID: 7379 // (get) Token: 0x0600B268 RID: 45672 RVA: 0x0029EFB4 File Offset: 0x0029D1B4 // (set) Token: 0x0600B269 RID: 45673 RVA: 0x0029EFC8 File Offset: 0x0029D1C8 [Token(Token = "0x17001CD3")] public int BodyLength { [Token(Token = "0x600B268")] [Address(RVA = "0x4FBD40", Offset = "0x4FA740", VA = "0x1804FBD40")] get; [Token(Token = "0x600B269")] [Address(RVA = "0x4E90F0", Offset = "0x4E7AF0", VA = "0x1804E90F0")] set; } // Token: 0x17001CD4 RID: 7380 // (get) Token: 0x0600B26A RID: 45674 RVA: 0x0029EFDC File Offset: 0x0029D1DC // (set) Token: 0x0600B26B RID: 45675 RVA: 0x0029EFF0 File Offset: 0x0029D1F0 [Token(Token = "0x17001CD4")] private string ETag { [Token(Token = "0x600B26A")] [Address(RVA = "0x3C1230", Offset = "0x3BFC30", VA = "0x1803C1230")] get; [Token(Token = "0x600B26B")] [Address(RVA = "0x3C1270", Offset = "0x3BFC70", VA = "0x1803C1270")] set; } // Token: 0x17001CD5 RID: 7381 // (get) Token: 0x0600B26C RID: 45676 RVA: 0x0029F004 File Offset: 0x0029D204 // (set) Token: 0x0600B26D RID: 45677 RVA: 0x0029F018 File Offset: 0x0029D218 [Token(Token = "0x17001CD5")] private string LastModified { [Token(Token = "0x600B26C")] [Address(RVA = "0x3C1250", Offset = "0x3BFC50", VA = "0x1803C1250")] get; [Token(Token = "0x600B26D")] [Address(RVA = "0x3C1290", Offset = "0x3BFC90", VA = "0x1803C1290")] set; } // Token: 0x17001CD6 RID: 7382 // (get) Token: 0x0600B26E RID: 45678 RVA: 0x0029F02C File Offset: 0x0029D22C // (set) Token: 0x0600B26F RID: 45679 RVA: 0x0029F040 File Offset: 0x0029D240 [Token(Token = "0x17001CD6")] private DateTime Expires { [Token(Token = "0x600B26E")] [Address(RVA = "0x3EE8E0", Offset = "0x3ED2E0", VA = "0x1803EE8E0")] get; [Token(Token = "0x600B26F")] [Address(RVA = "0x421E00", Offset = "0x420800", VA = "0x180421E00")] set; } // Token: 0x17001CD7 RID: 7383 // (get) Token: 0x0600B270 RID: 45680 RVA: 0x0029F054 File Offset: 0x0029D254 // (set) Token: 0x0600B271 RID: 45681 RVA: 0x0029F068 File Offset: 0x0029D268 [Token(Token = "0x17001CD7")] private long Age { [Token(Token = "0x600B270")] [Address(RVA = "0x3D32F0", Offset = "0x3D1CF0", VA = "0x1803D32F0")] get; [Token(Token = "0x600B271")] [Address(RVA = "0x3D3460", Offset = "0x3D1E60", VA = "0x1803D3460")] set; } // Token: 0x17001CD8 RID: 7384 // (get) Token: 0x0600B272 RID: 45682 RVA: 0x0029F07C File Offset: 0x0029D27C // (set) Token: 0x0600B273 RID: 45683 RVA: 0x0029F090 File Offset: 0x0029D290 [Token(Token = "0x17001CD8")] private long MaxAge { [Token(Token = "0x600B272")] [Address(RVA = "0x3EDEA0", Offset = "0x3EC8A0", VA = "0x1803EDEA0")] get; [Token(Token = "0x600B273")] [Address(RVA = "0x3EDED0", Offset = "0x3EC8D0", VA = "0x1803EDED0")] set; } // Token: 0x17001CD9 RID: 7385 // (get) Token: 0x0600B274 RID: 45684 RVA: 0x0029F0A4 File Offset: 0x0029D2A4 // (set) Token: 0x0600B275 RID: 45685 RVA: 0x0029F0B8 File Offset: 0x0029D2B8 [Token(Token = "0x17001CD9")] private DateTime Date { [Token(Token = "0x600B274")] [Address(RVA = "0x462740", Offset = "0x461140", VA = "0x180462740")] get; [Token(Token = "0x600B275")] [Address(RVA = "0x462750", Offset = "0x461150", VA = "0x180462750")] set; } // Token: 0x17001CDA RID: 7386 // (get) Token: 0x0600B276 RID: 45686 RVA: 0x0029F0CC File Offset: 0x0029D2CC // (set) Token: 0x0600B277 RID: 45687 RVA: 0x0029F0E0 File Offset: 0x0029D2E0 [Token(Token = "0x17001CDA")] private bool MustRevalidate { [Token(Token = "0x600B276")] [Address(RVA = "0x566D70", Offset = "0x565770", VA = "0x180566D70")] get; [Token(Token = "0x600B277")] [Address(RVA = "0x566E50", Offset = "0x565850", VA = "0x180566E50")] set; } // Token: 0x17001CDB RID: 7387 // (get) Token: 0x0600B278 RID: 45688 RVA: 0x0029F0F4 File Offset: 0x0029D2F4 // (set) Token: 0x0600B279 RID: 45689 RVA: 0x0029F108 File Offset: 0x0029D308 [Token(Token = "0x17001CDB")] private DateTime Received { [Token(Token = "0x600B278")] [Address(RVA = "0x3EDE90", Offset = "0x3EC890", VA = "0x1803EDE90")] get; [Token(Token = "0x600B279")] [Address(RVA = "0x3EDEC0", Offset = "0x3EC8C0", VA = "0x1803EDEC0")] set; } // Token: 0x17001CDC RID: 7388 // (get) Token: 0x0600B27A RID: 45690 RVA: 0x0029F11C File Offset: 0x0029D31C // (set) Token: 0x0600B27B RID: 45691 RVA: 0x0029F130 File Offset: 0x0029D330 [Token(Token = "0x17001CDC")] private string ConstructedPath { [Token(Token = "0x600B27A")] [Address(RVA = "0x48F050", Offset = "0x48DA50", VA = "0x18048F050")] get; [Token(Token = "0x600B27B")] [Address(RVA = "0x52F860", Offset = "0x52E260", VA = "0x18052F860")] set; } // Token: 0x17001CDD RID: 7389 // (get) Token: 0x0600B27C RID: 45692 RVA: 0x0029F144 File Offset: 0x0029D344 // (set) Token: 0x0600B27D RID: 45693 RVA: 0x0029F158 File Offset: 0x0029D358 [Token(Token = "0x17001CDD")] internal ulong MappedNameIDX { [Token(Token = "0x600B27C")] [Address(RVA = "0x4D2570", Offset = "0x4D0F70", VA = "0x1804D2570")] get; [Token(Token = "0x600B27D")] [Address(RVA = "0x7D4760", Offset = "0x7D3160", VA = "0x1807D4760")] set; } // Token: 0x0600B27E RID: 45694 RVA: 0x0029F16C File Offset: 0x0029D36C [Token(Token = "0x600B27E")] [Address(RVA = "0x1A2FAD0", Offset = "0x1A2E4D0", VA = "0x181A2FAD0")] internal HTTPCacheFileInfo(Uri uri) { DateTime utcNow = DateTime.UtcNow; base..ctor(); this.Uri = uri; this.LastAccess = utcNow; this.BodyLength = (int)((ulong)4294967295L); this.MaxAge = (long)((ulong)(-1L)); ulong nameIdx = HTTPCacheService.GetNameIdx(); this.MappedNameIDX = nameIdx; } // Token: 0x0600B27F RID: 45695 RVA: 0x0029F1C0 File Offset: 0x0029D3C0 [Token(Token = "0x600B27F")] [Address(RVA = "0x1A2FBA0", Offset = "0x1A2E5A0", VA = "0x181A2FBA0")] 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: 0x0600B280 RID: 45696 RVA: 0x0029F200 File Offset: 0x0029D400 [Token(Token = "0x600B280")] [Address(RVA = "0x1A2F8F0", Offset = "0x1A2E2F0", VA = "0x181A2F8F0")] 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: 0x0600B281 RID: 45697 RVA: 0x0029F2E8 File Offset: 0x0029D4E8 [Token(Token = "0x600B281")] [Address(RVA = "0x1A2EC80", Offset = "0x1A2D680", VA = "0x181A2EC80")] internal void SaveTo(BinaryWriter writer) { DateTime dateTime = this.k__BackingField; int num = this.k__BackingField; writer.Write((ushort)num); ulong num2 = this.k__BackingField; writer.Write((long)num2); string text = this.k__BackingField; writer.Write(text); string text2 = this.k__BackingField; writer.Write(text2); DateTime dateTime2 = this.k__BackingField; long num3 = this.k__BackingField; writer.Write((uint)num3); long num4 = this.k__BackingField; writer.Write((uint)num4); DateTime dateTime3 = this.k__BackingField; writer.Flush(); DateTime dateTime4 = this.k__BackingField; } // Token: 0x0600B282 RID: 45698 RVA: 0x0029F37C File Offset: 0x0029D57C [Token(Token = "0x600B282")] [Address(RVA = "0x1A2E0C0", Offset = "0x1A2CAC0", VA = "0x181A2E0C0")] public string GetPath() { string text = this.k__BackingField; if (text == 0) { string k__BackingField = HTTPCacheService.k__BackingField; ulong num = this.k__BackingField; string text2; this.k__BackingField = text2; } return text; } // Token: 0x0600B283 RID: 45699 RVA: 0x0029F3AC File Offset: 0x0029D5AC [Token(Token = "0x600B283")] [Address(RVA = "0x1A2E8F0", Offset = "0x1A2D2F0", VA = "0x181A2E8F0")] public bool IsExists() { if (HTTPCacheService.IsSupported) { IIOService ioservice = HTTPManager.IOService; string path = this.GetPath(); } throw new NullReferenceException(); } // Token: 0x0600B284 RID: 45700 RVA: 0x0029F3D8 File Offset: 0x0029D5D8 [Token(Token = "0x600B284")] [Address(RVA = "0x1A2DD90", Offset = "0x1A2C790", VA = "0x181A2DD90")] internal void Delete() { int num; do { num = 0; if (!HTTPCacheService.IsSupported) { break; } string path = this.GetPath(); IIOService ioservice = HTTPManager.IOService; int num2 = 0; num2++; 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; if (num2 != -1) { } } while (num != 0); } // Token: 0x0600B285 RID: 45701 RVA: 0x0029F494 File Offset: 0x0029D694 [Token(Token = "0x600B285")] [Address(RVA = "0x1A2EBC0", Offset = "0x1A2D5C0", VA = "0x181A2EBC0")] 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: 0x0600B286 RID: 45702 RVA: 0x0029F518 File Offset: 0x0029D718 [Token(Token = "0x600B286")] [Address(RVA = "0x1A2EE00", Offset = "0x1A2D800", VA = "0x181A2EE00")] 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: 0x0600B287 RID: 45703 RVA: 0x0029F640 File Offset: 0x0029D840 [Token(Token = "0x600B287")] [Address(RVA = "0x1A2F770", Offset = "0x1A2E170", VA = "0x181A2F770")] internal bool WillExpireInTheFuture() { if (this.IsExists() && !this.k__BackingField) { DateTime dateTime = this.k__BackingField; DateTime utcNow = DateTime.UtcNow; return dateTime > utcNow; } } // Token: 0x0600B288 RID: 45704 RVA: 0x0029F6E8 File Offset: 0x0029D8E8 [Token(Token = "0x600B288")] [Address(RVA = "0x1A2F070", Offset = "0x1A2DA70", VA = "0x181A2F070")] 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: 0x0600B289 RID: 45705 RVA: 0x0029F744 File Offset: 0x0029D944 [Token(Token = "0x600B289")] [Address(RVA = "0x1A2DF90", Offset = "0x1A2C990", VA = "0x181A2DF90")] 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: 0x0600B28A RID: 45706 RVA: 0x0029F790 File Offset: 0x0029D990 [Token(Token = "0x600B28A")] [Address(RVA = "0x1A2E9C0", Offset = "0x1A2D3C0", VA = "0x181A2E9C0")] 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) { } if (num != -1) { } } while (num != 0); throw new NullReferenceException(); } // Token: 0x0600B28B RID: 45707 RVA: 0x0029F7F0 File Offset: 0x0029D9F0 [Token(Token = "0x600B28B")] [Address(RVA = "0x1A2F110", Offset = "0x1A2DB10", VA = "0x181A2F110")] 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; Dictionary.Enumerator enumerator; int num3; if (enumerator != 0) { if (num < this.k__BackingField) { break; } num3 = 0; } if (num3 != -1) { byte[] k__BackingField = response.k__BackingField; num3++; } if (num3 != 0) { goto IL_127; } if (path != 0) { } if (num3 != -1) { } if (num3 == 0) { goto Block_5; } } object[] array2 = new object[2]; throw new ArrayTypeMismatchException(); Block_5: int length = response.k__BackingField.Length; DateTime utcNow = DateTime.UtcNow; return; IL_127: throw new NullReferenceException(); } // Token: 0x0600B28C RID: 45708 RVA: 0x0029F944 File Offset: 0x0029DB44 [Token(Token = "0x600B28C")] [Address(RVA = "0x1A2E1E0", Offset = "0x1A2CBE0", VA = "0x181A2E1E0")] internal Stream GetSaveStream(HTTPResponse response) { for (;;) { int num = 0; if (!HTTPCacheService.IsSupported) { goto IL_E7; } 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; Dictionary.Enumerator enumerator; if (enumerator != 0) { break; } if (num != -1) { num++; } if (num != 0) { goto IL_120; } if (path2 != 0) { } if (num != -1) { } if (num == 0) { goto Block_5; } } object[] array2 = new object[2]; throw new ArrayTypeMismatchException(); Block_5: bool flag; if (!flag) { List list = new List(); } IIOService ioservice3 = HTTPManager.IOService; IL_E7: throw new ArrayTypeMismatchException(); IL_120: throw new NullReferenceException(); } // Token: 0x0600B28D RID: 45709 RVA: 0x0029FA7C File Offset: 0x0029DC7C [Token(Token = "0x600B28D")] [Address(RVA = "0x1A2DD60", Offset = "0x1A2C760", VA = "0x181A2DD60", Slot = "4")] public int CompareTo(HTTPCacheFileInfo other) { DateTime dateTime = this.k__BackingField; throw new NullReferenceException(); } } }