using Apewer.Network;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Text;
namespace Apewer.Web
{
/// API 上下文。
public sealed class ApiContext
{
#region 构造参数
private ApiInvoker _invoker = null;
private ApiProvider _provider = null;
private ApiEntries _entries = null;
private DateTime _beginning = DateTime.Now;
private ApiOptions _options = null;
/// 此上下文启动的时间。
public DateTime Beginning { get => _beginning; }
/// API 调用器。
public ApiInvoker Invoker { get => _invoker; }
/// API 提供程序。
public ApiProvider Provider { get => _provider; }
/// API 入口集。
public ApiEntries Entries { get => _entries; }
/// API 选项。
public ApiOptions Options { get => _options; }
#endregion
#region 执行过程中产生的内容
/// API 行为。
public ApiAction ApiAction { get; internal set; }
/// API 请求。
public ApiRequest Request { get; internal set; }
/// API 响应。
public ApiResponse Response { get; internal set; }
/// API 控制器实例。
public ApiController Controller { get; internal set; }
/// 执行的方法。
public MethodInfo MethodInfo { get; internal set; }
#endregion
internal ApiContext(ApiInvoker invoker, ApiProvider provider, ApiEntries entries)
{
if (invoker == null) throw new ArgumentNullException(nameof(invoker));
if (provider == null) throw new ArgumentNullException(nameof(provider));
if (entries == null) throw new ArgumentNullException(nameof(entries));
_invoker = invoker;
_provider = provider;
_entries = entries;
_options = invoker.Options ?? new ApiOptions();
}
}
}