1472 lines
46 KiB
C#
1472 lines
46 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Runtime.InteropServices;
|
|
using System.Text;
|
|
using System.Threading;
|
|
using BestHTTP.Caching;
|
|
using BestHTTP.Cookies;
|
|
using BestHTTP.Decompression.Zlib;
|
|
using BestHTTP.Extensions;
|
|
using BestHTTP.Logger;
|
|
using Cpp2IlInjected;
|
|
using UnityEngine;
|
|
|
|
namespace BestHTTP
|
|
{
|
|
// Token: 0x020012B5 RID: 4789
|
|
[Token(Token = "0x20012B5")]
|
|
[StructLayout(3)]
|
|
public class HTTPResponse : IDisposable
|
|
{
|
|
// Token: 0x1700137A RID: 4986
|
|
// (get) Token: 0x060077C6 RID: 30662 RVA: 0x0018CBA0 File Offset: 0x0018ADA0
|
|
// (set) Token: 0x060077C7 RID: 30663 RVA: 0x0018CBB4 File Offset: 0x0018ADB4
|
|
[Token(Token = "0x1700137A")]
|
|
public int VersionMajor
|
|
{
|
|
[Token(Token = "0x60077C6")]
|
|
[Address(RVA = "0x3C1C50", Offset = "0x3C0650", VA = "0x1803C1C50")]
|
|
get;
|
|
[Token(Token = "0x60077C7")]
|
|
[Address(RVA = "0x3C1C90", Offset = "0x3C0690", VA = "0x1803C1C90")]
|
|
protected set;
|
|
}
|
|
|
|
// Token: 0x1700137B RID: 4987
|
|
// (get) Token: 0x060077C8 RID: 30664 RVA: 0x0018CBC8 File Offset: 0x0018ADC8
|
|
// (set) Token: 0x060077C9 RID: 30665 RVA: 0x0018CBDC File Offset: 0x0018ADDC
|
|
[Token(Token = "0x1700137B")]
|
|
public int VersionMinor
|
|
{
|
|
[Token(Token = "0x60077C8")]
|
|
[Address(RVA = "0x55D550", Offset = "0x55BF50", VA = "0x18055D550")]
|
|
get;
|
|
[Token(Token = "0x60077C9")]
|
|
[Address(RVA = "0x55D5D0", Offset = "0x55BFD0", VA = "0x18055D5D0")]
|
|
protected set;
|
|
}
|
|
|
|
// Token: 0x1700137C RID: 4988
|
|
// (get) Token: 0x060077CA RID: 30666 RVA: 0x0018CBF0 File Offset: 0x0018ADF0
|
|
// (set) Token: 0x060077CB RID: 30667 RVA: 0x0018CC04 File Offset: 0x0018AE04
|
|
[Token(Token = "0x1700137C")]
|
|
public int StatusCode
|
|
{
|
|
[Token(Token = "0x60077CA")]
|
|
[Address(RVA = "0x3EE8D0", Offset = "0x3ED2D0", VA = "0x1803EE8D0")]
|
|
get;
|
|
[Token(Token = "0x60077CB")]
|
|
[Address(RVA = "0x4F8C20", Offset = "0x4F7620", VA = "0x1804F8C20")]
|
|
protected set;
|
|
}
|
|
|
|
// Token: 0x1700137D RID: 4989
|
|
// (get) Token: 0x060077CC RID: 30668 RVA: 0x0018CC18 File Offset: 0x0018AE18
|
|
[Token(Token = "0x1700137D")]
|
|
public bool IsSuccess
|
|
{
|
|
[Token(Token = "0x60077CC")]
|
|
[Address(RVA = "0x1C9D020", Offset = "0x1C9BA20", VA = "0x181C9D020")]
|
|
get
|
|
{
|
|
int num = this.<StatusCode>k__BackingField;
|
|
return true;
|
|
}
|
|
}
|
|
|
|
// Token: 0x1700137E RID: 4990
|
|
// (get) Token: 0x060077CD RID: 30669 RVA: 0x0018CC38 File Offset: 0x0018AE38
|
|
// (set) Token: 0x060077CE RID: 30670 RVA: 0x0018CC4C File Offset: 0x0018AE4C
|
|
[Token(Token = "0x1700137E")]
|
|
public string Message
|
|
{
|
|
[Token(Token = "0x60077CD")]
|
|
[Address(RVA = "0x3C1220", Offset = "0x3BFC20", VA = "0x1803C1220")]
|
|
get;
|
|
[Token(Token = "0x60077CE")]
|
|
[Address(RVA = "0x3C1260", Offset = "0x3BFC60", VA = "0x1803C1260")]
|
|
protected set;
|
|
}
|
|
|
|
// Token: 0x1700137F RID: 4991
|
|
// (get) Token: 0x060077CF RID: 30671 RVA: 0x0018CC60 File Offset: 0x0018AE60
|
|
// (set) Token: 0x060077D0 RID: 30672 RVA: 0x0018CC74 File Offset: 0x0018AE74
|
|
[Token(Token = "0x1700137F")]
|
|
public bool IsStreamed
|
|
{
|
|
[Token(Token = "0x60077CF")]
|
|
[Address(RVA = "0x651230", Offset = "0x64FC30", VA = "0x180651230")]
|
|
get;
|
|
[Token(Token = "0x60077D0")]
|
|
[Address(RVA = "0x6C60C0", Offset = "0x6C4AC0", VA = "0x1806C60C0")]
|
|
protected set;
|
|
}
|
|
|
|
// Token: 0x17001380 RID: 4992
|
|
// (get) Token: 0x060077D1 RID: 30673 RVA: 0x0018CC88 File Offset: 0x0018AE88
|
|
// (set) Token: 0x060077D2 RID: 30674 RVA: 0x0018CC9C File Offset: 0x0018AE9C
|
|
[Token(Token = "0x17001380")]
|
|
public bool IsStreamingFinished
|
|
{
|
|
[Token(Token = "0x60077D1")]
|
|
[Address(RVA = "0x74C4C0", Offset = "0x74AEC0", VA = "0x18074C4C0")]
|
|
get;
|
|
[Token(Token = "0x60077D2")]
|
|
[Address(RVA = "0x4564C0", Offset = "0x454EC0", VA = "0x1804564C0")]
|
|
internal set;
|
|
}
|
|
|
|
// Token: 0x17001381 RID: 4993
|
|
// (get) Token: 0x060077D3 RID: 30675 RVA: 0x0018CCB0 File Offset: 0x0018AEB0
|
|
// (set) Token: 0x060077D4 RID: 30676 RVA: 0x0018CCC4 File Offset: 0x0018AEC4
|
|
[Token(Token = "0x17001381")]
|
|
public bool IsFromCache
|
|
{
|
|
[Token(Token = "0x60077D3")]
|
|
[Address(RVA = "0x456460", Offset = "0x454E60", VA = "0x180456460")]
|
|
get;
|
|
[Token(Token = "0x60077D4")]
|
|
[Address(RVA = "0x456490", Offset = "0x454E90", VA = "0x180456490")]
|
|
internal set;
|
|
}
|
|
|
|
// Token: 0x17001382 RID: 4994
|
|
// (get) Token: 0x060077D5 RID: 30677 RVA: 0x0018CCD8 File Offset: 0x0018AED8
|
|
// (set) Token: 0x060077D6 RID: 30678 RVA: 0x0018CCEC File Offset: 0x0018AEEC
|
|
[Token(Token = "0x17001382")]
|
|
public HTTPCacheFileInfo CacheFileInfo
|
|
{
|
|
[Token(Token = "0x60077D5")]
|
|
[Address(RVA = "0x3C1250", Offset = "0x3BFC50", VA = "0x1803C1250")]
|
|
get;
|
|
[Token(Token = "0x60077D6")]
|
|
[Address(RVA = "0x3C1290", Offset = "0x3BFC90", VA = "0x1803C1290")]
|
|
internal set;
|
|
}
|
|
|
|
// Token: 0x17001383 RID: 4995
|
|
// (get) Token: 0x060077D7 RID: 30679 RVA: 0x0018CD00 File Offset: 0x0018AF00
|
|
// (set) Token: 0x060077D8 RID: 30680 RVA: 0x0018CD14 File Offset: 0x0018AF14
|
|
[Token(Token = "0x17001383")]
|
|
public bool IsCacheOnly
|
|
{
|
|
[Token(Token = "0x60077D7")]
|
|
[Address(RVA = "0x52F470", Offset = "0x52DE70", VA = "0x18052F470")]
|
|
get;
|
|
[Token(Token = "0x60077D8")]
|
|
[Address(RVA = "0x52F720", Offset = "0x52E120", VA = "0x18052F720")]
|
|
private set;
|
|
}
|
|
|
|
// Token: 0x17001384 RID: 4996
|
|
// (get) Token: 0x060077D9 RID: 30681 RVA: 0x0018CD28 File Offset: 0x0018AF28
|
|
// (set) Token: 0x060077DA RID: 30682 RVA: 0x0018CD3C File Offset: 0x0018AF3C
|
|
[Token(Token = "0x17001384")]
|
|
public Dictionary<string, List<string>> Headers
|
|
{
|
|
[Token(Token = "0x60077D9")]
|
|
[Address(RVA = "0x3D32F0", Offset = "0x3D1CF0", VA = "0x1803D32F0")]
|
|
get;
|
|
[Token(Token = "0x60077DA")]
|
|
[Address(RVA = "0x3D3460", Offset = "0x3D1E60", VA = "0x1803D3460")]
|
|
protected set;
|
|
}
|
|
|
|
// Token: 0x17001385 RID: 4997
|
|
// (get) Token: 0x060077DB RID: 30683 RVA: 0x0018CD50 File Offset: 0x0018AF50
|
|
// (set) Token: 0x060077DC RID: 30684 RVA: 0x0018CD64 File Offset: 0x0018AF64
|
|
[Token(Token = "0x17001385")]
|
|
public byte[] Data
|
|
{
|
|
[Token(Token = "0x60077DB")]
|
|
[Address(RVA = "0x3EDEA0", Offset = "0x3EC8A0", VA = "0x1803EDEA0")]
|
|
get;
|
|
[Token(Token = "0x60077DC")]
|
|
[Address(RVA = "0x3EDED0", Offset = "0x3EC8D0", VA = "0x1803EDED0")]
|
|
internal set;
|
|
}
|
|
|
|
// Token: 0x17001386 RID: 4998
|
|
// (get) Token: 0x060077DD RID: 30685 RVA: 0x0018CD78 File Offset: 0x0018AF78
|
|
// (set) Token: 0x060077DE RID: 30686 RVA: 0x0018CD8C File Offset: 0x0018AF8C
|
|
[Token(Token = "0x17001386")]
|
|
public bool IsUpgraded
|
|
{
|
|
[Token(Token = "0x60077DD")]
|
|
[Address(RVA = "0x446CB0", Offset = "0x4456B0", VA = "0x180446CB0")]
|
|
get;
|
|
[Token(Token = "0x60077DE")]
|
|
[Address(RVA = "0x534E20", Offset = "0x533820", VA = "0x180534E20")]
|
|
protected set;
|
|
}
|
|
|
|
// Token: 0x17001387 RID: 4999
|
|
// (get) Token: 0x060077DF RID: 30687 RVA: 0x0018CDA0 File Offset: 0x0018AFA0
|
|
// (set) Token: 0x060077E0 RID: 30688 RVA: 0x0018CDB4 File Offset: 0x0018AFB4
|
|
[Token(Token = "0x17001387")]
|
|
public List<Cookie> Cookies
|
|
{
|
|
[Token(Token = "0x60077DF")]
|
|
[Address(RVA = "0x4B81A0", Offset = "0x4B6BA0", VA = "0x1804B81A0")]
|
|
get;
|
|
[Token(Token = "0x60077E0")]
|
|
[Address(RVA = "0x3EDEB0", Offset = "0x3EC8B0", VA = "0x1803EDEB0")]
|
|
internal set;
|
|
}
|
|
|
|
// Token: 0x17001388 RID: 5000
|
|
// (get) Token: 0x060077E1 RID: 30689 RVA: 0x0018CDC8 File Offset: 0x0018AFC8
|
|
[Token(Token = "0x17001388")]
|
|
public string DataAsText
|
|
{
|
|
[Token(Token = "0x60077E1")]
|
|
[Address(RVA = "0x1C9CEB0", Offset = "0x1C9B8B0", VA = "0x181C9CEB0")]
|
|
get
|
|
{
|
|
if (this.<Data>k__BackingField == (ulong)0L)
|
|
{
|
|
return string.Empty;
|
|
}
|
|
if (string.IsNullOrEmpty(this.dataAsText))
|
|
{
|
|
Encoding utf = Encoding.UTF8;
|
|
byte[] array = this.<Data>k__BackingField;
|
|
string @string = utf.GetString(array);
|
|
this.dataAsText = @string;
|
|
return @string;
|
|
}
|
|
return this.dataAsText;
|
|
}
|
|
}
|
|
|
|
// Token: 0x17001389 RID: 5001
|
|
// (get) Token: 0x060077E2 RID: 30690 RVA: 0x0018CE20 File Offset: 0x0018B020
|
|
[Token(Token = "0x17001389")]
|
|
public Texture2D DataAsTexture2D
|
|
{
|
|
[Token(Token = "0x60077E2")]
|
|
[Address(RVA = "0x1C9CF50", Offset = "0x1C9B950", VA = "0x181C9CF50")]
|
|
get
|
|
{
|
|
if (this.<Data>k__BackingField != (ulong)0L)
|
|
{
|
|
Texture2D texture2D = this.texture;
|
|
int num = 0;
|
|
if (!(texture2D != num))
|
|
{
|
|
int num2;
|
|
int num3;
|
|
ulong num4;
|
|
Texture2D texture2D2 = new Texture2D(num2, num3, (TextureFormat)((uint)5), num4 != 0UL);
|
|
num3 = 0;
|
|
num2 = 0;
|
|
byte[] array = this.<Data>k__BackingField;
|
|
this.texture = texture2D2;
|
|
bool flag = texture2D2.LoadImage(array);
|
|
}
|
|
return this.texture;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x1700138A RID: 5002
|
|
// (get) Token: 0x060077E3 RID: 30691 RVA: 0x0018CE84 File Offset: 0x0018B084
|
|
// (set) Token: 0x060077E4 RID: 30692 RVA: 0x0018CE98 File Offset: 0x0018B098
|
|
[Token(Token = "0x1700138A")]
|
|
public bool IsClosedManually
|
|
{
|
|
[Token(Token = "0x60077E3")]
|
|
[Address(RVA = "0x6374D0", Offset = "0x635ED0", VA = "0x1806374D0")]
|
|
get;
|
|
[Token(Token = "0x60077E4")]
|
|
[Address(RVA = "0x6374E0", Offset = "0x635EE0", VA = "0x1806374E0")]
|
|
protected set;
|
|
}
|
|
|
|
// Token: 0x060077E5 RID: 30693 RVA: 0x0018CEAC File Offset: 0x0018B0AC
|
|
[Token(Token = "0x60077E5")]
|
|
[Address(RVA = "0x1C9CDF0", Offset = "0x1C9B7F0", VA = "0x181C9CDF0")]
|
|
public HTTPResponse(HTTPRequest request, Stream stream, bool isStreamed, bool isFromCache)
|
|
{
|
|
object obj = new object();
|
|
this.SyncRoot = obj;
|
|
base..ctor();
|
|
this.IsFromCache = false;
|
|
this.baseRequest = request;
|
|
this.Stream = stream;
|
|
this.IsStreamed = isStreamed;
|
|
bool cacheOnly = request.cacheOnly;
|
|
this.IsCacheOnly = cacheOnly;
|
|
this.IsClosedManually = false;
|
|
}
|
|
|
|
// Token: 0x060077E6 RID: 30694 RVA: 0x0018CF04 File Offset: 0x0018B104
|
|
[Token(Token = "0x60077E6")]
|
|
[Address(RVA = "0x1C9C3B0", Offset = "0x1C9ADB0", VA = "0x181C9C3B0", Slot = "5")]
|
|
public virtual bool Receive(int forceReadRawContentLength = -1, bool readPayloadData = true)
|
|
{
|
|
for (;;)
|
|
{
|
|
if (HTTPManager.Logger == 0)
|
|
{
|
|
string text;
|
|
this.VerboseLogging(text);
|
|
}
|
|
Stream stream = this.Stream;
|
|
string text3;
|
|
string text2;
|
|
if (HTTPManager.Logger == 0)
|
|
{
|
|
text2 = string.Format("Status Line: '{0}'", text3);
|
|
this.VerboseLogging(text2);
|
|
}
|
|
if (text2 == 0)
|
|
{
|
|
char[] array = new char[2];
|
|
array[0] = (char)((uint)47);
|
|
array[0] = (char)((uint)46);
|
|
string[] array2 = text3.Split(array);
|
|
int num = int.Parse(array2[1]);
|
|
this.<VersionMajor>k__BackingField = num;
|
|
int num2 = int.Parse(array2[2]);
|
|
this.<VersionMinor>k__BackingField = num2;
|
|
if (HTTPManager.Logger == 0)
|
|
{
|
|
int num3 = this.<VersionMajor>k__BackingField;
|
|
string text4 = string.Format("HTTP Version: '{0}.{1}'", num3, num3);
|
|
this.VerboseLogging(text4);
|
|
}
|
|
Stream stream2 = this.Stream;
|
|
string text6;
|
|
if (HTTPManager.Logger == 0)
|
|
{
|
|
string text5 = string.Format("Status Code: '{0}'", text6);
|
|
this.VerboseLogging(text5);
|
|
}
|
|
bool flag;
|
|
if (!this.baseRequest.<DisableRetry>k__BackingField && !flag)
|
|
{
|
|
goto IL_27C;
|
|
}
|
|
int num4 = int.Parse(text6);
|
|
this.<StatusCode>k__BackingField = num4;
|
|
int stringLength = text6.m_stringLength;
|
|
if (stringLength > 0)
|
|
{
|
|
char c = text6[stringLength];
|
|
int stringLength2 = text6.m_stringLength;
|
|
char c2 = text6[stringLength2];
|
|
Stream stream3 = this.Stream;
|
|
string text7;
|
|
this.<Message>k__BackingField = text7;
|
|
if (HTTPManager.Logger != 0)
|
|
{
|
|
goto IL_1CA;
|
|
}
|
|
string text8 = this.<Message>k__BackingField;
|
|
string text9 = string.Format("Status Message: '{0}'", text8);
|
|
this.VerboseLogging(text9);
|
|
}
|
|
BestHTTP.Logger.ILogger logger = HTTPManager.Logger;
|
|
HTTPRequest httprequest = this.baseRequest;
|
|
if (!httprequest.<IsRedirected>k__BackingField)
|
|
{
|
|
continue;
|
|
}
|
|
int hashCode = httprequest.<RedirectUri>k__BackingField.m_String.GetHashCode();
|
|
string text10 = string.Format("{0} - Skipping Status Message reading!", hashCode);
|
|
string empty = string.Empty;
|
|
this.<Message>k__BackingField = empty;
|
|
IL_1CA:
|
|
Stream stream4 = this.Stream;
|
|
this.ReadHeaders(stream4);
|
|
if (this.<StatusCode>k__BackingField != 101)
|
|
{
|
|
}
|
|
if (this.HasHeaderWithValue("connection", "upgrade"))
|
|
{
|
|
}
|
|
bool flag2 = this.GetHeaderValues("upgrade") != 0;
|
|
this.<IsUpgraded>k__BackingField = flag2;
|
|
if (flag2 && HTTPManager.Logger == 0)
|
|
{
|
|
this.VerboseLogging("Request Upgraded!");
|
|
}
|
|
if (readPayloadData)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
HTTPRequest httprequest2 = this.baseRequest;
|
|
if (!httprequest2.<DisableRetry>k__BackingField && !httprequest2.<DisableRetry>k__BackingField)
|
|
{
|
|
goto Block_13;
|
|
}
|
|
}
|
|
return this.ReadPayload(forceReadRawContentLength);
|
|
Block_13:
|
|
int num5 = 0;
|
|
BestHTTP.Logger.ILogger logger2 = HTTPManager.Logger;
|
|
int hashCode2 = num5.GetHashCode();
|
|
string text11 = string.Format("{0} - Failed to read Status Line! Retry is enabled, returning with false.", hashCode2);
|
|
IL_27C:
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x060077E7 RID: 30695 RVA: 0x0000220F File Offset: 0x0000040F
|
|
[Token(Token = "0x60077E7")]
|
|
[Address(RVA = "0x1C9B050", Offset = "0x1C99A50", VA = "0x181C9B050")]
|
|
protected bool ReadPayload(int forceReadRawContentLength)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x060077E8 RID: 30696 RVA: 0x0018D194 File Offset: 0x0018B394
|
|
[Token(Token = "0x60077E8")]
|
|
[Address(RVA = "0x1C9AF00", Offset = "0x1C99900", VA = "0x181C9AF00")]
|
|
protected void ReadHeaders(Stream stream)
|
|
{
|
|
string empty2;
|
|
string text4;
|
|
do
|
|
{
|
|
string empty = string.Empty;
|
|
string text;
|
|
if (!(text != empty))
|
|
{
|
|
break;
|
|
}
|
|
string text3;
|
|
if (HTTPManager.Logger == 0)
|
|
{
|
|
string text2 = string.Format("Header - '{0}': '{1}'", text, text3);
|
|
this.VerboseLogging(text2);
|
|
}
|
|
this.AddHeader(text, text3);
|
|
empty2 = string.Empty;
|
|
}
|
|
while (text4 != empty2);
|
|
}
|
|
|
|
// Token: 0x060077E9 RID: 30697 RVA: 0x0018D1F4 File Offset: 0x0018B3F4
|
|
[Token(Token = "0x60077E9")]
|
|
[Address(RVA = "0x1C98A90", Offset = "0x1C97490", VA = "0x181C98A90")]
|
|
protected void AddHeader(string name, string value)
|
|
{
|
|
string text = name.ToLower();
|
|
if (this.<Headers>k__BackingField == 0)
|
|
{
|
|
Dictionary<string, List<string>> dictionary = new Dictionary();
|
|
this.<Headers>k__BackingField = dictionary;
|
|
}
|
|
bool flag;
|
|
List<string> list;
|
|
if (!flag)
|
|
{
|
|
Dictionary<string, List<string>> dictionary2 = this.<Headers>k__BackingField;
|
|
list = new List(1);
|
|
dictionary2.Add(text, list);
|
|
}
|
|
list.Add(value);
|
|
}
|
|
|
|
// Token: 0x060077EA RID: 30698 RVA: 0x0018D24C File Offset: 0x0018B44C
|
|
[Token(Token = "0x60077EA")]
|
|
[Address(RVA = "0x1C99CF0", Offset = "0x1C986F0", VA = "0x181C99CF0")]
|
|
public List<string> GetHeaderValues(string name)
|
|
{
|
|
if (this.<Headers>k__BackingField != (ulong)0L)
|
|
{
|
|
string text = name.ToLower();
|
|
Dictionary<string, List<string>> dictionary = this.<Headers>k__BackingField;
|
|
bool flag;
|
|
if (flag)
|
|
{
|
|
}
|
|
}
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x060077EB RID: 30699 RVA: 0x0018D280 File Offset: 0x0018B480
|
|
[Token(Token = "0x60077EB")]
|
|
[Address(RVA = "0x1C99C40", Offset = "0x1C98640", VA = "0x181C99C40")]
|
|
public string GetFirstHeaderValue(string name)
|
|
{
|
|
if (this.<Headers>k__BackingField != (ulong)0L)
|
|
{
|
|
string text = name.ToLower();
|
|
Dictionary<string, List<string>> dictionary = this.<Headers>k__BackingField;
|
|
bool flag;
|
|
if (!flag || flag)
|
|
{
|
|
}
|
|
}
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x060077EC RID: 30700 RVA: 0x0000220F File Offset: 0x0000040F
|
|
[Token(Token = "0x60077EC")]
|
|
[Address(RVA = "0x1C9A260", Offset = "0x1C98C60", VA = "0x181C9A260")]
|
|
public bool HasHeaderWithValue(string headerName, string value)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x060077ED RID: 30701 RVA: 0x0018D2B8 File Offset: 0x0018B4B8
|
|
[Token(Token = "0x60077ED")]
|
|
[Address(RVA = "0x1C9A310", Offset = "0x1C98D10", VA = "0x181C9A310")]
|
|
public bool HasHeader(string headerName)
|
|
{
|
|
return this.GetHeaderValues(headerName) != 0;
|
|
}
|
|
|
|
// Token: 0x060077EE RID: 30702 RVA: 0x0000220F File Offset: 0x0000040F
|
|
[Token(Token = "0x60077EE")]
|
|
[Address(RVA = "0x1C99D90", Offset = "0x1C98790", VA = "0x181C99D90")]
|
|
public HTTPRange GetRange()
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x060077EF RID: 30703 RVA: 0x0018D2D4 File Offset: 0x0018B4D4
|
|
[Token(Token = "0x60077EF")]
|
|
[Address(RVA = "0x1C9B7D0", Offset = "0x1C9A1D0", VA = "0x181C9B7D0")]
|
|
public static string ReadTo(Stream stream, byte blocker)
|
|
{
|
|
int num;
|
|
do
|
|
{
|
|
num = 0;
|
|
uint num2;
|
|
ulong num3;
|
|
byte[] array = VariableSizedBufferPool.Get((long)num2, num3 != 0UL);
|
|
int num4;
|
|
uint num5;
|
|
if (num4 != (int)blocker && num4 != -1 && !char.IsWhiteSpace((char)num5))
|
|
{
|
|
num++;
|
|
}
|
|
bool flag;
|
|
if (num <= 0 || flag)
|
|
{
|
|
}
|
|
Encoding utf = Encoding.UTF8;
|
|
if (num != -1)
|
|
{
|
|
}
|
|
}
|
|
while (num != 0);
|
|
string text;
|
|
return text;
|
|
}
|
|
|
|
// Token: 0x060077F0 RID: 30704 RVA: 0x0018D34C File Offset: 0x0018B54C
|
|
[Token(Token = "0x60077F0")]
|
|
[Address(RVA = "0x1C9BAD0", Offset = "0x1C9A4D0", VA = "0x181C9BAD0")]
|
|
public static string ReadTo(Stream stream, byte blocker1, byte blocker2)
|
|
{
|
|
int num;
|
|
do
|
|
{
|
|
num = 0;
|
|
uint num2;
|
|
ulong num3;
|
|
byte[] array = VariableSizedBufferPool.Get((long)num2, num3 != 0UL);
|
|
int num4;
|
|
uint num5;
|
|
if (num4 != (int)blocker1 && num4 != (int)blocker1 && num4 != -1 && !char.IsWhiteSpace((char)num5))
|
|
{
|
|
num++;
|
|
}
|
|
if (num <= 0 || char.IsWhiteSpace((char)blocker1))
|
|
{
|
|
}
|
|
Encoding utf = Encoding.UTF8;
|
|
if (num != -1)
|
|
{
|
|
}
|
|
}
|
|
while (num != 0);
|
|
string text;
|
|
return text;
|
|
}
|
|
|
|
// Token: 0x060077F1 RID: 30705 RVA: 0x0018D3CC File Offset: 0x0018B5CC
|
|
[Token(Token = "0x60077F1")]
|
|
[Address(RVA = "0x1C9A440", Offset = "0x1C98E40", VA = "0x181C9A440")]
|
|
public static string NoTrimReadTo(Stream stream, byte blocker1, byte blocker2)
|
|
{
|
|
int num;
|
|
do
|
|
{
|
|
num = 0;
|
|
uint num2;
|
|
ulong num3;
|
|
byte[] array = VariableSizedBufferPool.Get((long)num2, num3 != 0UL);
|
|
int num4;
|
|
uint num5;
|
|
if (num4 != stream && num4 != (int)blocker2 && num4 != -1 && !char.IsWhiteSpace((char)num5))
|
|
{
|
|
num++;
|
|
}
|
|
Encoding utf = Encoding.UTF8;
|
|
if (num != -1)
|
|
{
|
|
}
|
|
}
|
|
while (num != 0);
|
|
string text;
|
|
return text;
|
|
}
|
|
|
|
// Token: 0x060077F2 RID: 30706 RVA: 0x0018D434 File Offset: 0x0018B634
|
|
[Token(Token = "0x60077F2")]
|
|
[Address(RVA = "0x1C9A6E0", Offset = "0x1C990E0", VA = "0x181C9A6E0")]
|
|
protected int ReadChunkLength(Stream stream)
|
|
{
|
|
/*
|
|
An exception occurred when decompiling this method (060077F2)
|
|
|
|
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Int32 BestHTTP.HTTPResponse::ReadChunkLength(System.IO.Stream)
|
|
|
|
---> System.Exception: Basic block has to end with unconditional control flow.
|
|
{
|
|
IL_3E:
|
|
stloc:Exception(var_5_4E, newobj:Exception(Exception::.ctor, call:string(string::Format, ldstr:string("Can't parse '{0}' as a hex number!"), ldloc:string[exp:object](var_3_20))))
|
|
}
|
|
|
|
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852
|
|
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
|
|
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
|
|
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1846
|
|
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355
|
|
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
|
|
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
|
|
--- End of inner exception stack trace ---
|
|
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
|
|
at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1663
|
|
*/;
|
|
}
|
|
|
|
// Token: 0x060077F3 RID: 30707 RVA: 0x0018D490 File Offset: 0x0018B690
|
|
[Token(Token = "0x60077F3")]
|
|
[Address(RVA = "0x1C9A800", Offset = "0x1C99200", VA = "0x181C9A800")]
|
|
protected void ReadChunked(Stream stream)
|
|
{
|
|
int num;
|
|
do
|
|
{
|
|
num = 0;
|
|
this.BeginReceiveStreamFragments();
|
|
string firstHeaderValue = this.GetFirstHeaderValue("Content-Length");
|
|
int num2 = 0;
|
|
if (!string.IsNullOrEmpty(firstHeaderValue))
|
|
{
|
|
bool flag = int.TryParse(firstHeaderValue, num2);
|
|
}
|
|
if (HTTPManager.Logger == 0)
|
|
{
|
|
string text;
|
|
this.VerboseLogging(text);
|
|
}
|
|
BufferPoolMemoryStream bufferPoolMemoryStream = new BufferPoolMemoryStream();
|
|
int num3 = this.ReadChunkLength(stream);
|
|
if (HTTPManager.Logger == 0)
|
|
{
|
|
string text2;
|
|
this.VerboseLogging(text2);
|
|
}
|
|
ulong num4;
|
|
byte[] array = VariableSizedBufferPool.Get((long)Mathf.NextPowerOfTwo(num3), num4 != 0UL);
|
|
this.baseRequest.<DownloadLength>k__BackingField = (long)num3;
|
|
HTTPRequest httprequest = this.baseRequest;
|
|
int num5 = this.<StatusCode>k__BackingField;
|
|
if (num3 <= 99 || num5 != 304)
|
|
{
|
|
}
|
|
uint num6;
|
|
bool flag2 = num6 != (uint)0;
|
|
httprequest.<DownloadProgressChanged>k__BackingField = flag2;
|
|
if (this.<IsFromCache>k__BackingField)
|
|
{
|
|
}
|
|
string firstHeaderValue2 = this.GetFirstHeaderValue("content-encoding");
|
|
if (string.IsNullOrEmpty(firstHeaderValue2))
|
|
{
|
|
}
|
|
bool flag3 = string.Equals(firstHeaderValue2, "gzip");
|
|
HTTPRequest httprequest3;
|
|
if (num3 != 0)
|
|
{
|
|
num3 -= num;
|
|
stream.SetLength((long)num3);
|
|
HTTPRequest httprequest2 = this.baseRequest;
|
|
httprequest3 = this.baseRequest;
|
|
if (!this.IsSuccess)
|
|
{
|
|
}
|
|
uint num7;
|
|
bool flag4 = num7 != (uint)0;
|
|
httprequest3.<DownloadProgressChanged>k__BackingField = flag4;
|
|
if (num < num3)
|
|
{
|
|
}
|
|
if (!this.baseRequest.useStreaming)
|
|
{
|
|
int num8 = bufferPoolMemoryStream.ReadByte();
|
|
}
|
|
if (httprequest3 == 0)
|
|
{
|
|
}
|
|
byte[] array2;
|
|
if (array2 != 0)
|
|
{
|
|
int length = array2.Length;
|
|
int num9 = 0;
|
|
this.FeedStreamFragment(array2, num9, length);
|
|
}
|
|
ulong num10;
|
|
string text3 = HTTPResponse.ReadTo(stream, (byte)num10);
|
|
num3 = this.ReadChunkLength(stream);
|
|
if (HTTPManager.Logger == 0)
|
|
{
|
|
string text4;
|
|
this.VerboseLogging(text4);
|
|
}
|
|
HTTPRequest httprequest4 = this.baseRequest;
|
|
HTTPRequest httprequest5 = this.baseRequest;
|
|
if (this.IsSuccess)
|
|
{
|
|
continue;
|
|
}
|
|
bool flag5 = this.<IsFromCache>k__BackingField;
|
|
httprequest5.<DownloadProgressChanged>k__BackingField = flag5;
|
|
}
|
|
if (this.baseRequest.useStreaming)
|
|
{
|
|
byte[] array3;
|
|
if (httprequest3 != 0 && array3 != 0)
|
|
{
|
|
int length2 = array3.Length;
|
|
int num11 = 0;
|
|
this.FeedStreamFragment(array3, num11, length2);
|
|
}
|
|
this.FlushRemainingFragmentBuffer();
|
|
}
|
|
this.ReadHeaders(stream);
|
|
if (!this.baseRequest.useStreaming)
|
|
{
|
|
byte[] array4 = this.DecodeStream(bufferPoolMemoryStream);
|
|
this.<Data>k__BackingField = array4;
|
|
}
|
|
if (bufferPoolMemoryStream != 0)
|
|
{
|
|
}
|
|
if (num != -1)
|
|
{
|
|
}
|
|
}
|
|
while (num != 0);
|
|
this.CloseDecompressors();
|
|
}
|
|
|
|
// Token: 0x060077F4 RID: 30708 RVA: 0x0018D72C File Offset: 0x0018B92C
|
|
[Token(Token = "0x60077F4")]
|
|
[Address(RVA = "0x1C9B210", Offset = "0x1C99C10", VA = "0x181C9B210")]
|
|
internal void ReadRaw(Stream stream, long contentLength)
|
|
{
|
|
for (;;)
|
|
{
|
|
int num = 0;
|
|
this.BeginReceiveStreamFragments();
|
|
HTTPRequest httprequest = this.baseRequest;
|
|
httprequest.<DownloadLength>k__BackingField = contentLength;
|
|
HTTPRequest httprequest2 = this.baseRequest;
|
|
int num2 = this.<StatusCode>k__BackingField;
|
|
if (httprequest <= (ulong)99L || num2 != 304)
|
|
{
|
|
}
|
|
uint num3;
|
|
bool flag = num3 != (uint)0;
|
|
httprequest2.<DownloadProgressChanged>k__BackingField = flag;
|
|
if (HTTPManager.Logger == 0)
|
|
{
|
|
string text;
|
|
this.VerboseLogging(text);
|
|
}
|
|
if ((this.<IsFromCache>k__BackingField ? 1 : 0) != num)
|
|
{
|
|
}
|
|
if (this.GetFirstHeaderValue("content-encoding") != 0)
|
|
{
|
|
}
|
|
if (!this.baseRequest.useStreaming)
|
|
{
|
|
}
|
|
BufferPoolMemoryStream bufferPoolMemoryStream = new BufferPoolMemoryStream((int)contentLength);
|
|
int num4 = this.baseRequest.streamFragmentSize;
|
|
uint num5;
|
|
num4 = Math.Max(num4, (int)num5);
|
|
ulong num6;
|
|
byte[] array = VariableSizedBufferPool.Get((long)num4, num6 != 0UL);
|
|
uint num8;
|
|
uint num7 = Math.Min(num8, (uint)contentLength);
|
|
int num9 = array.Length;
|
|
num9 -= num;
|
|
int num10 = Math.Min((int)num7, num9);
|
|
if (num10 > 0)
|
|
{
|
|
num += num10;
|
|
HTTPRequest httprequest3 = this.baseRequest;
|
|
HTTPRequest httprequest4 = this.baseRequest;
|
|
if (!this.IsSuccess)
|
|
{
|
|
}
|
|
uint num11;
|
|
bool flag2 = num11 != (uint)0;
|
|
httprequest4.<DownloadProgressChanged>k__BackingField = flag2;
|
|
if (num < array.Length)
|
|
{
|
|
}
|
|
if (!this.baseRequest.useStreaming)
|
|
{
|
|
}
|
|
int num12 = 0;
|
|
this.FeedStreamFragment(array, num12, num);
|
|
ulong num13;
|
|
byte[] array2 = this.Decompress(array, num12, num, num13 != 0UL);
|
|
while (array2 == 0)
|
|
{
|
|
}
|
|
int length = array2.Length;
|
|
int num14 = 0;
|
|
this.FeedStreamFragment(array2, num14, length);
|
|
VariableSizedBufferPool.Release(array);
|
|
if (this.baseRequest.useStreaming)
|
|
{
|
|
byte[] array3;
|
|
if (array3 != 0)
|
|
{
|
|
int length2 = array3.Length;
|
|
int num15 = 0;
|
|
this.FeedStreamFragment(array3, num15, length2);
|
|
}
|
|
this.FlushRemainingFragmentBuffer();
|
|
}
|
|
if (!this.baseRequest.useStreaming)
|
|
{
|
|
byte[] array4;
|
|
this.<Data>k__BackingField = array4;
|
|
}
|
|
if (httprequest4 != 0)
|
|
{
|
|
}
|
|
if (num != -1)
|
|
{
|
|
}
|
|
if (num == 0)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
this.CloseDecompressors();
|
|
}
|
|
|
|
// Token: 0x060077F5 RID: 30709 RVA: 0x0018D8FC File Offset: 0x0018BAFC
|
|
[Token(Token = "0x60077F5")]
|
|
[Address(RVA = "0x1C9BDE0", Offset = "0x1C9A7E0", VA = "0x181C9BDE0")]
|
|
protected void ReadUnknownSize(Stream stream)
|
|
{
|
|
for (;;)
|
|
{
|
|
if (this.<IsFromCache>k__BackingField)
|
|
{
|
|
}
|
|
string firstHeaderValue = this.GetFirstHeaderValue("content-encoding");
|
|
if (string.IsNullOrEmpty(firstHeaderValue))
|
|
{
|
|
}
|
|
bool flag = string.Equals(firstHeaderValue, "gzip");
|
|
BufferPoolMemoryStream bufferPoolMemoryStream = new BufferPoolMemoryStream();
|
|
int num = this.baseRequest.streamFragmentSize;
|
|
uint num2;
|
|
num = Math.Max(num, (int)num2);
|
|
int num3 = 0;
|
|
byte[] array = VariableSizedBufferPool.Get((long)num, num3 != 0);
|
|
if (HTTPManager.Logger == 0)
|
|
{
|
|
int length = array.Length;
|
|
string text = string.Format("ReadUnknownSize - buffer size: {0:N0}", length);
|
|
this.VerboseLogging(text);
|
|
}
|
|
int num4 = 0;
|
|
int num5 = 0;
|
|
if (stream == 0 || stream == 0 || (this.baseRequest.<EnableSafeReadOnUnknownContentLength>k__BackingField ? 1 : 0) == num5)
|
|
{
|
|
goto IL_B3;
|
|
}
|
|
if (num4 < array.Length)
|
|
{
|
|
num5++;
|
|
num4++;
|
|
goto IL_B3;
|
|
}
|
|
IL_C3:
|
|
HTTPRequest httprequest = this.baseRequest;
|
|
HTTPRequest httprequest2 = this.baseRequest;
|
|
long <Downloaded>k__BackingField = httprequest2.<Downloaded>k__BackingField;
|
|
httprequest2.<DownloadLength>k__BackingField = <Downloaded>k__BackingField;
|
|
HTTPRequest httprequest3 = this.baseRequest;
|
|
if (this.IsSuccess)
|
|
{
|
|
continue;
|
|
}
|
|
bool flag2 = this.<IsFromCache>k__BackingField;
|
|
httprequest3.<DownloadProgressChanged>k__BackingField = flag2;
|
|
if (num4 < array.Length)
|
|
{
|
|
}
|
|
if (!this.baseRequest.useStreaming)
|
|
{
|
|
int num6 = stream.ReadByte();
|
|
}
|
|
int num7 = 0;
|
|
if (httprequest3 == 0)
|
|
{
|
|
this.FeedStreamFragment(array, num7, num4);
|
|
}
|
|
ulong num8;
|
|
byte[] array2 = this.Decompress(array, num7, num4, num8 != 0UL);
|
|
if (array2 != 0)
|
|
{
|
|
int length2 = array2.Length;
|
|
int num9 = 0;
|
|
this.FeedStreamFragment(array2, num9, length2);
|
|
}
|
|
VariableSizedBufferPool.Release(array);
|
|
if (this.baseRequest.useStreaming)
|
|
{
|
|
byte[] array3;
|
|
if (httprequest3 != 0 && array3 != 0)
|
|
{
|
|
int length3 = array3.Length;
|
|
int num10 = 0;
|
|
this.FeedStreamFragment(array3, num10, length3);
|
|
}
|
|
this.FlushRemainingFragmentBuffer();
|
|
}
|
|
if (!this.baseRequest.useStreaming)
|
|
{
|
|
byte[] array4;
|
|
this.<Data>k__BackingField = array4;
|
|
}
|
|
int num11 = 0;
|
|
int num12 = 0;
|
|
if (stream != 0)
|
|
{
|
|
}
|
|
if ((num11 != -1 && "{il2cpp array field local18->}" == (ulong)493L) || num12 == 0)
|
|
{
|
|
break;
|
|
}
|
|
continue;
|
|
IL_B3:
|
|
int num13 = array.Length;
|
|
num13 -= num4;
|
|
goto IL_C3;
|
|
}
|
|
GZipStream gzipStream = this.decompressorGZipStream;
|
|
if (gzipStream != 0)
|
|
{
|
|
gzipStream.Dispose();
|
|
}
|
|
this.decompressorGZipStream = (ulong)0L;
|
|
BufferPoolMemoryStream bufferPoolMemoryStream2 = this.decompressorInputStream;
|
|
if (bufferPoolMemoryStream2 != 0)
|
|
{
|
|
bufferPoolMemoryStream2.Dispose();
|
|
}
|
|
this.decompressorInputStream = (ulong)0L;
|
|
BufferPoolMemoryStream bufferPoolMemoryStream3 = this.decompressorOutputStream;
|
|
if (bufferPoolMemoryStream3 != 0)
|
|
{
|
|
bufferPoolMemoryStream3.Dispose();
|
|
}
|
|
this.decompressorOutputStream = (ulong)0L;
|
|
}
|
|
|
|
// Token: 0x060077F6 RID: 30710 RVA: 0x0000220F File Offset: 0x0000040F
|
|
[Token(Token = "0x60077F6")]
|
|
[Address(RVA = "0x1C98F90", Offset = "0x1C97990", VA = "0x181C98F90")]
|
|
protected byte[] DecodeStream(BufferPoolMemoryStream streamToDecode)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x060077F7 RID: 30711 RVA: 0x0018DBA4 File Offset: 0x0018BDA4
|
|
[Token(Token = "0x60077F7")]
|
|
[Address(RVA = "0x1C98F20", Offset = "0x1C97920", VA = "0x181C98F20")]
|
|
private void CloseDecompressors()
|
|
{
|
|
GZipStream gzipStream = this.decompressorGZipStream;
|
|
if (gzipStream != 0)
|
|
{
|
|
gzipStream.Dispose();
|
|
}
|
|
BufferPoolMemoryStream bufferPoolMemoryStream = this.decompressorInputStream;
|
|
int num = 0;
|
|
this.decompressorGZipStream = num;
|
|
if (bufferPoolMemoryStream != 0)
|
|
{
|
|
bufferPoolMemoryStream.Dispose();
|
|
}
|
|
BufferPoolMemoryStream bufferPoolMemoryStream2 = this.decompressorOutputStream;
|
|
this.decompressorInputStream = num;
|
|
if (bufferPoolMemoryStream2 != 0)
|
|
{
|
|
bufferPoolMemoryStream2.Dispose();
|
|
}
|
|
this.decompressorOutputStream = num;
|
|
}
|
|
|
|
// Token: 0x060077F8 RID: 30712 RVA: 0x0018DBFC File Offset: 0x0018BDFC
|
|
[Token(Token = "0x60077F8")]
|
|
[Address(RVA = "0x1C99280", Offset = "0x1C97C80", VA = "0x181C99280")]
|
|
private byte[] Decompress(byte[] data, int offset, int count, bool forceDecompress = false)
|
|
{
|
|
BufferPoolMemoryStream bufferPoolMemoryStream = this.decompressorInputStream;
|
|
if (bufferPoolMemoryStream == 0)
|
|
{
|
|
BufferPoolMemoryStream bufferPoolMemoryStream2 = new BufferPoolMemoryStream(count);
|
|
this.decompressorInputStream = bufferPoolMemoryStream2;
|
|
}
|
|
if (data != 0)
|
|
{
|
|
int num = bufferPoolMemoryStream.ReadByte();
|
|
}
|
|
BufferPoolMemoryStream bufferPoolMemoryStream3 = this.decompressorInputStream;
|
|
if (bufferPoolMemoryStream3.CanWrite < false)
|
|
{
|
|
}
|
|
long position = bufferPoolMemoryStream3.Position;
|
|
GZipStream gzipStream;
|
|
FlushType flushMode = gzipStream.FlushMode;
|
|
BufferPoolMemoryStream bufferPoolMemoryStream4 = new BufferPoolMemoryStream();
|
|
byte[] array;
|
|
VariableSizedBufferPool.Release(array);
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x060077F9 RID: 30713 RVA: 0x0018DC64 File Offset: 0x0018BE64
|
|
[Token(Token = "0x60077F9")]
|
|
[Address(RVA = "0x1C98DF0", Offset = "0x1C977F0", VA = "0x181C98DF0")]
|
|
protected void BeginReceiveStreamFragments()
|
|
{
|
|
HTTPRequest httprequest = this.baseRequest;
|
|
if (!httprequest.disableCache && httprequest.useStreaming && !this.<IsFromCache>k__BackingField)
|
|
{
|
|
if (httprequest.<IsRedirected>k__BackingField)
|
|
{
|
|
}
|
|
Uri <Uri>k__BackingField = httprequest.<Uri>k__BackingField;
|
|
HTTPMethods <MethodType>k__BackingField = httprequest.<MethodType>k__BackingField;
|
|
if (HTTPCacheService.IsCacheble(<Uri>k__BackingField, <MethodType>k__BackingField, this))
|
|
{
|
|
HTTPRequest httprequest2 = this.baseRequest;
|
|
if (httprequest2.<IsRedirected>k__BackingField)
|
|
{
|
|
}
|
|
Stream stream = HTTPCacheService.PrepareStreamed(httprequest2.<Uri>k__BackingField, this);
|
|
this.cacheStream = stream;
|
|
}
|
|
}
|
|
this.allFragmentSize = (int)((ulong)0L);
|
|
}
|
|
|
|
// Token: 0x060077FA RID: 30714 RVA: 0x0018DCEC File Offset: 0x0018BEEC
|
|
[Token(Token = "0x60077FA")]
|
|
[Address(RVA = "0x1C99630", Offset = "0x1C98030", VA = "0x181C99630")]
|
|
protected void FeedStreamFragment(byte[] buffer, int pos, int length)
|
|
{
|
|
int num = 0;
|
|
if (buffer != 0 && length != 0)
|
|
{
|
|
if ((this.baseRequest.useStreaming ? 1 : 0) != num && this.FragmentQueueIsFull())
|
|
{
|
|
this.VerboseLogging("WaitWhileFragmentQueueIsFull");
|
|
if (this.fragmentWaitEvent == 0)
|
|
{
|
|
int num2;
|
|
AutoResetEvent autoResetEvent = new AutoResetEvent(num2 != 0);
|
|
num2 = 0;
|
|
this.fragmentWaitEvent = autoResetEvent;
|
|
}
|
|
AutoResetEvent autoResetEvent2 = this.fragmentWaitEvent;
|
|
}
|
|
byte[] array;
|
|
if (this.fragmentBuffer == num)
|
|
{
|
|
int streamFragmentSize = this.baseRequest.streamFragmentSize;
|
|
int num3 = 0;
|
|
array = VariableSizedBufferPool.Get((long)streamFragmentSize, num3 != 0);
|
|
this.fragmentBuffer = array;
|
|
this.fragmentBufferDataLength = num;
|
|
}
|
|
HTTPRequest httprequest = this.baseRequest;
|
|
int num4 = this.fragmentBufferDataLength;
|
|
int num5 = httprequest.streamFragmentSize;
|
|
if (array > num5)
|
|
{
|
|
num5 -= num4;
|
|
num4 = num5;
|
|
this.FeedStreamFragment(buffer, pos, num4);
|
|
}
|
|
byte[] array2 = this.fragmentBuffer;
|
|
Array.Copy(buffer, pos, array2, num4, length);
|
|
int num6 = this.fragmentBufferDataLength;
|
|
HTTPRequest httprequest2 = this.baseRequest;
|
|
num6 += length;
|
|
this.fragmentBufferDataLength = num6;
|
|
if (num6 == httprequest2.streamFragmentSize)
|
|
{
|
|
byte[] array3 = this.fragmentBuffer;
|
|
this.AddStreamedFragment(array3);
|
|
this.fragmentBuffer = num;
|
|
this.fragmentBufferDataLength = num;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x060077FB RID: 30715 RVA: 0x0018DE14 File Offset: 0x0018C014
|
|
[Token(Token = "0x60077FB")]
|
|
[Address(RVA = "0x1C99900", Offset = "0x1C98300", VA = "0x181C99900")]
|
|
protected void FlushRemainingFragmentBuffer()
|
|
{
|
|
int num = 0;
|
|
if (this.fragmentBuffer != num)
|
|
{
|
|
byte[] array = this.fragmentBuffer;
|
|
this.AddStreamedFragment(array);
|
|
this.fragmentBuffer = num;
|
|
this.fragmentBufferDataLength = num;
|
|
}
|
|
Stream stream = this.cacheStream;
|
|
if (stream != 0)
|
|
{
|
|
stream.Dispose();
|
|
HTTPRequest httprequest = this.baseRequest;
|
|
this.cacheStream = num;
|
|
if ((httprequest.<IsRedirected>k__BackingField ? 1 : 0) != num)
|
|
{
|
|
}
|
|
Uri <Uri>k__BackingField = httprequest.<Uri>k__BackingField;
|
|
int num2 = this.allFragmentSize;
|
|
HTTPCacheService.SetBodyLength(<Uri>k__BackingField, num2);
|
|
}
|
|
AutoResetEvent autoResetEvent = this.fragmentWaitEvent;
|
|
this.fragmentWaitEvent = num;
|
|
if (autoResetEvent != 0)
|
|
{
|
|
}
|
|
}
|
|
|
|
// Token: 0x060077FC RID: 30716 RVA: 0x0018DEA8 File Offset: 0x0018C0A8
|
|
[Token(Token = "0x60077FC")]
|
|
[Address(RVA = "0x1C98BB0", Offset = "0x1C975B0", VA = "0x181C98BB0")]
|
|
protected void AddStreamedFragment(byte[] buffer)
|
|
{
|
|
int num;
|
|
do
|
|
{
|
|
num = 0;
|
|
object syncRoot = this.SyncRoot;
|
|
if ((this.<IsCacheOnly>k__BackingField ? 1 : 0) == num)
|
|
{
|
|
List<byte[]> list = this.streamedFragments;
|
|
if (list == 0)
|
|
{
|
|
List<byte[]> list2 = new List();
|
|
this.streamedFragments = list2;
|
|
}
|
|
list.Add(buffer);
|
|
}
|
|
if (HTTPManager.Logger == 0 && buffer != 0 && this.streamedFragments != (ulong)0L)
|
|
{
|
|
int length = buffer.Length;
|
|
List<byte[]> list3 = this.streamedFragments;
|
|
string text = string.Format("AddStreamedFragment buffer length: {0:N0} streamedFragments: {1:N0}", length, length);
|
|
this.VerboseLogging(text);
|
|
}
|
|
Stream stream = this.cacheStream;
|
|
if (stream != 0)
|
|
{
|
|
int num2 = stream.ReadByte();
|
|
}
|
|
Monitor.Exit(syncRoot);
|
|
if (num != -1)
|
|
{
|
|
}
|
|
}
|
|
while (num != 0);
|
|
}
|
|
|
|
// Token: 0x060077FD RID: 30717 RVA: 0x0018DF68 File Offset: 0x0018C168
|
|
[Token(Token = "0x60077FD")]
|
|
[Address(RVA = "0x1C9CCF0", Offset = "0x1C9B6F0", VA = "0x181C9CCF0")]
|
|
protected void WaitWhileFragmentQueueIsFull()
|
|
{
|
|
if (this.baseRequest.useStreaming && this.FragmentQueueIsFull())
|
|
{
|
|
this.VerboseLogging("WaitWhileFragmentQueueIsFull");
|
|
if (this.fragmentWaitEvent == 0)
|
|
{
|
|
int num;
|
|
AutoResetEvent autoResetEvent = new AutoResetEvent(num != 0);
|
|
num = 0;
|
|
this.fragmentWaitEvent = autoResetEvent;
|
|
}
|
|
AutoResetEvent autoResetEvent2 = this.fragmentWaitEvent;
|
|
HTTPRequest httprequest = this.baseRequest;
|
|
}
|
|
}
|
|
|
|
// Token: 0x060077FE RID: 30718 RVA: 0x0018DFC8 File Offset: 0x0018C1C8
|
|
[Token(Token = "0x60077FE")]
|
|
[Address(RVA = "0x1C99A50", Offset = "0x1C98450", VA = "0x181C99A50")]
|
|
private bool FragmentQueueIsFull()
|
|
{
|
|
bool flag;
|
|
for (;;)
|
|
{
|
|
int num = 0;
|
|
object syncRoot = this.SyncRoot;
|
|
List<byte[]> list = this.streamedFragments;
|
|
if (list == 0)
|
|
{
|
|
}
|
|
int size = list._size;
|
|
int <MaxFragmentQueueLength>k__BackingField = this.baseRequest.<MaxFragmentQueueLength>k__BackingField;
|
|
flag = size >= <MaxFragmentQueueLength>k__BackingField;
|
|
if (HTTPManager.Logger == 0)
|
|
{
|
|
int size2 = this.streamedFragments._size;
|
|
int <MaxFragmentQueueLength>k__BackingField2 = this.baseRequest.<MaxFragmentQueueLength>k__BackingField;
|
|
string text = string.Format("HasFragmentsInQueue - {0} / {1}", size2, <MaxFragmentQueueLength>k__BackingField2);
|
|
this.VerboseLogging(text);
|
|
Monitor.Exit(syncRoot);
|
|
if (this != (ulong)(-1L))
|
|
{
|
|
}
|
|
if (num == 0)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
return flag;
|
|
}
|
|
|
|
// Token: 0x060077FF RID: 30719 RVA: 0x0018E074 File Offset: 0x0018C274
|
|
[Token(Token = "0x60077FF")]
|
|
[Address(RVA = "0x1C99FD0", Offset = "0x1C989D0", VA = "0x181C99FD0")]
|
|
public List<byte[]> GetStreamedFragments()
|
|
{
|
|
int num;
|
|
do
|
|
{
|
|
num = 0;
|
|
object syncRoot = this.SyncRoot;
|
|
List<byte[]> list = this.streamedFragments;
|
|
if (list != 0)
|
|
{
|
|
List<byte[]> list2 = new List(list);
|
|
this.streamedFragments.Clear();
|
|
if (this.fragmentWaitEvent != 0)
|
|
{
|
|
bool flag = this.fragmentWaitEvent.Set();
|
|
}
|
|
if (HTTPManager.Logger == 0)
|
|
{
|
|
int size = list2._size;
|
|
string text = string.Format("GetStreamedFragments - returning with {0:N0} fragments", size);
|
|
this.VerboseLogging(text);
|
|
}
|
|
}
|
|
if (HTTPManager.Logger == 0)
|
|
{
|
|
this.VerboseLogging("GetStreamedFragments - no fragments, returning with null");
|
|
}
|
|
Monitor.Exit(syncRoot);
|
|
if (num != -1)
|
|
{
|
|
}
|
|
}
|
|
while (num != 0);
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x06007800 RID: 30720 RVA: 0x0018E12C File Offset: 0x0018C32C
|
|
[Token(Token = "0x6007800")]
|
|
[Address(RVA = "0x1C9A330", Offset = "0x1C98D30", VA = "0x181C9A330")]
|
|
internal bool HasStreamedFragments()
|
|
{
|
|
int num;
|
|
bool flag;
|
|
do
|
|
{
|
|
num = 0;
|
|
object syncRoot = this.SyncRoot;
|
|
List<byte[]> list = this.streamedFragments;
|
|
if (list == 0)
|
|
{
|
|
}
|
|
int size = list._size;
|
|
HTTPRequest httprequest = this.baseRequest;
|
|
flag = size >= httprequest.<MaxFragmentQueueLength>k__BackingField;
|
|
Monitor.Exit(syncRoot);
|
|
if (num != -1)
|
|
{
|
|
}
|
|
}
|
|
while (num != 0);
|
|
return flag;
|
|
}
|
|
|
|
// Token: 0x06007801 RID: 30721 RVA: 0x0018E184 File Offset: 0x0018C384
|
|
[Token(Token = "0x6007801")]
|
|
[Address(RVA = "0x1C99870", Offset = "0x1C98270", VA = "0x181C99870")]
|
|
internal void FinishStreaming()
|
|
{
|
|
if (HTTPManager.Logger == 0)
|
|
{
|
|
this.VerboseLogging("FinishStreaming");
|
|
}
|
|
this.<IsStreamingFinished>k__BackingField = true;
|
|
this.Dispose();
|
|
}
|
|
|
|
// Token: 0x06007802 RID: 30722 RVA: 0x0018E1BC File Offset: 0x0018C3BC
|
|
[Token(Token = "0x6007802")]
|
|
[Address(RVA = "0x1C9CBC0", Offset = "0x1C9B5C0", VA = "0x181C9CBC0")]
|
|
private void VerboseLogging(string str)
|
|
{
|
|
if (HTTPManager.Logger == 0)
|
|
{
|
|
BestHTTP.Logger.ILogger logger = HTTPManager.Logger;
|
|
HTTPRequest httprequest = this.baseRequest;
|
|
if (httprequest.<IsRedirected>k__BackingField)
|
|
{
|
|
}
|
|
int hashCode = httprequest.<Uri>k__BackingField.GetHashCode();
|
|
}
|
|
}
|
|
|
|
// Token: 0x06007803 RID: 30723 RVA: 0x0018E200 File Offset: 0x0018C400
|
|
[Token(Token = "0x6007803")]
|
|
[Address(RVA = "0x1C99550", Offset = "0x1C97F50", VA = "0x181C99550", Slot = "4")]
|
|
public void Dispose()
|
|
{
|
|
Stream stream = this.Stream;
|
|
if (stream == 0 || stream != 0)
|
|
{
|
|
}
|
|
Stream stream2 = this.cacheStream;
|
|
this.Stream = (ulong)0L;
|
|
if (stream2 != 0)
|
|
{
|
|
stream2.Dispose();
|
|
this.cacheStream = (ulong)0L;
|
|
}
|
|
GC.SuppressFinalize(this);
|
|
}
|
|
|
|
// Token: 0x04005674 RID: 22132
|
|
[Token(Token = "0x4005674")]
|
|
internal const byte CR = 13;
|
|
|
|
// Token: 0x04005675 RID: 22133
|
|
[Token(Token = "0x4005675")]
|
|
internal const byte LF = 10;
|
|
|
|
// Token: 0x04005676 RID: 22134
|
|
[Token(Token = "0x4005676")]
|
|
public const int MinBufferSize = 4096;
|
|
|
|
// Token: 0x04005684 RID: 22148
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x60")]
|
|
[Token(Token = "0x4005684")]
|
|
protected string dataAsText;
|
|
|
|
// Token: 0x04005685 RID: 22149
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x68")]
|
|
[Token(Token = "0x4005685")]
|
|
protected Texture2D texture;
|
|
|
|
// Token: 0x04005687 RID: 22151
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x78")]
|
|
[Token(Token = "0x4005687")]
|
|
internal HTTPRequest baseRequest;
|
|
|
|
// Token: 0x04005688 RID: 22152
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x80")]
|
|
[Token(Token = "0x4005688")]
|
|
protected Stream Stream;
|
|
|
|
// Token: 0x04005689 RID: 22153
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x88")]
|
|
[Token(Token = "0x4005689")]
|
|
protected List<byte[]> streamedFragments;
|
|
|
|
// Token: 0x0400568A RID: 22154
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x90")]
|
|
[Token(Token = "0x400568A")]
|
|
protected object SyncRoot;
|
|
|
|
// Token: 0x0400568B RID: 22155
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x98")]
|
|
[Token(Token = "0x400568B")]
|
|
protected byte[] fragmentBuffer;
|
|
|
|
// Token: 0x0400568C RID: 22156
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0xA0")]
|
|
[Token(Token = "0x400568C")]
|
|
protected int fragmentBufferDataLength;
|
|
|
|
// Token: 0x0400568D RID: 22157
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0xA8")]
|
|
[Token(Token = "0x400568D")]
|
|
protected Stream cacheStream;
|
|
|
|
// Token: 0x0400568E RID: 22158
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0xB0")]
|
|
[Token(Token = "0x400568E")]
|
|
protected int allFragmentSize;
|
|
|
|
// Token: 0x0400568F RID: 22159
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0xB8")]
|
|
[Token(Token = "0x400568F")]
|
|
private BufferPoolMemoryStream decompressorInputStream;
|
|
|
|
// Token: 0x04005690 RID: 22160
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0xC0")]
|
|
[Token(Token = "0x4005690")]
|
|
private BufferPoolMemoryStream decompressorOutputStream;
|
|
|
|
// Token: 0x04005691 RID: 22161
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0xC8")]
|
|
[Token(Token = "0x4005691")]
|
|
private GZipStream decompressorGZipStream;
|
|
|
|
// Token: 0x04005692 RID: 22162
|
|
[Token(Token = "0x4005692")]
|
|
private const int MinLengthToDecompress = 256;
|
|
|
|
// Token: 0x04005693 RID: 22163
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0xD0")]
|
|
[Token(Token = "0x4005693")]
|
|
private AutoResetEvent fragmentWaitEvent;
|
|
}
|
|
}
|