mirror of
https://git.oceanpay.cc/danial/kami_itunes_june.git
synced 2025-12-18 22:31:24 +00:00
113 lines
2.2 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|