Files
kami_itunes_june/AppleBatch_June.Model/RequestState.cs
2024-07-22 00:43:14 +08:00

113 lines
2.2 KiB
C#

using System;
using System.Collections.Generic;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Net;
using DotNet.Utilities;
namespace AppleBatch_June.Model
{
public class RequestState : IDisposable
{
private const int BUFFER_SIZE = 1024;
public byte[] BufferRead;
public List<byte[]> RequestData;
public HttpWebRequest request;
public HttpWebResponse response;
public Stream streamResponse;
public HttpResult result;
public HttpItem item;
private bool m_disposed;
public RequestState(HttpResult _result, HttpItem _item)
{
BufferRead = new byte[1024];
RequestData = new List<byte[]>();
result = _result;
item = _item;
request = null;
streamResponse = null;
}
public void Dispose()
{
Dispose(disposing: true);
}
protected virtual void Dispose(bool disposing)
{
if (m_disposed)
{
return;
}
if (disposing)
{
try
{
if (BufferRead != null)
{
Array.Clear(BufferRead, 0, BufferRead.Length);
BufferRead = null;
}
if (RequestData != null)
{
foreach (byte[] requestDatum in RequestData)
{
Array.Clear(requestDatum, 0, requestDatum.Length);
}
RequestData.Clear();
RequestData = null;
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
m_disposed = true;
}
~RequestState()
{
Dispose(disposing: false);
}
public byte[] getDataBytes()
{
if (RequestData != null && RequestData.Count > 0)
{
byte[] array = new byte[RequestData.Sum((byte[] c) => c.Length)];
int num = 0;
foreach (byte[] requestDatum in RequestData)
{
foreach (byte b in requestDatum)
{
array[num] = b;
num++;
}
}
if (response.ContentEncoding != null && response.ContentEncoding.Equals("gzip", StringComparison.InvariantCultureIgnoreCase))
{
using (MemoryStream stream = new MemoryStream(array))
{
MemoryStream memoryStream = new MemoryStream();
new GZipStream(stream, CompressionMode.Decompress).CopyTo(memoryStream, 1024);
return memoryStream.ToArray();
}
}
return array;
}
return null;
}
}
}