using System;
using System.IO;
using System.Text;
using System.Web.Hosting;
namespace CodeBackpack.Test.Http
{
///
/// A worker request stub that lets you fake out the HTTP request methods.
///
///
/// Only few strategic methods were overriden.
///
internal class WorkerRequestStub : SimpleWorkerRequest
{
private readonly String requestMethod;
private readonly String requestBody;
private readonly Encoding requestEncoding;
private byte[] entityBody;
public WorkerRequestStub(String requestMethod, String requestBody, Encoding requestEncoding, String page, String query, StringWriter output)
: base("/it/does/not/matter", @"I:\t\does\not\matter", page, query, output)
{
this.requestMethod = requestMethod;
this.requestBody = requestBody;
this.requestEncoding = requestEncoding;
}
public override String GetHttpVerbName()
{
return requestMethod;
}
public override bool IsEntireEntityBodyIsPreloaded()
{
return true;
}
public override byte[] GetPreloadedEntityBody()
{
if (entityBody == null)
{
if (requestBody == null)
{
throw new ArgumentNullException("requestBody",
"You must supply non-null 'requestBody' argument!");
}
if (requestEncoding == null)
{
throw new ArgumentNullException("requestEncoding",
"You must supply non-null 'requestEncoding' argument!");
}
entityBody = requestEncoding.GetBytes(requestBody);
}
return entityBody;
}
}
}