public virtual object GetService(Type serviceType) { if (!_isChildContainer && (typeof(IController).IsAssignableFrom(serviceType) || typeof(IHttpController).IsAssignableFrom(serviceType))) { return(HttpContextContainer.GetService(serviceType)); } return(_resolver.Resolve(serviceType)); }
public async Task Invoke(HttpContext context) { HttpContextContainer ctxContainer = (HttpContextContainer)context.RequestServices.GetService(typeof(HttpContextContainer)); ctxContainer.Current = new HttpContextImpl(context); ctxContainer.Current.Message = Guid.NewGuid().ToString(); await _next.Invoke(context); }
/// <summary> /// Consists the context. /// </summary> /// <typeparam name="TRequest">The type of the request.</typeparam> /// <typeparam name="TResponse">The type of the response.</typeparam> /// <param name="context">The context.</param> /// <param name="settings">The settings.</param> internal static void ConsistContext <TRequest, TResponse>(HttpContextContainer <TRequest, TResponse> context, RestApiSettings settings) { ConsistContext( GetValueCompatibly(context, context, HttpConstants.HttpHeader.TOKEN), settings, context.ClientIpAddress, context.UserAgent, context.QueryString.Get(HttpConstants.QueryString.Language).SafeToString(context?.GetCookieValue(HttpConstants.QueryString.Language)).SafeToString(context.UserLanguages.SafeFirstOrDefault()).EnsureCultureCode(), context.Url, HttpExtension.GetBasicAuthentication(context.TryGetRequestHeader(HttpConstants.HttpHeader.Authorization).DecodeBase64()), new ApiUniqueIdentifier { HttpMethod = context.HttpMethod, Path = context.Url.AbsolutePath } ); }
public DummyVisualModelWS(HttpContextContainer contextContainer) { this._contextContainer = contextContainer; }
/// <summary> /// Packages the response. /// </summary> /// <param name="context">The context.</param> /// <param name="data">The data.</param> /// <param name="operationParameters">The operation parameters.</param> /// <param name="ex">The ex.</param> /// <param name="acceptEncoding">The accept encoding.</param> /// <param name="noBody">if set to <c>true</c> [no body].</param> /// <param name="settings">The settings.</param> public static void PackageResponse(HttpContextContainer <TRequest, TResponse> context, object data, RuntimeApiOperationParameters operationParameters = null, BaseException ex = null, string acceptEncoding = null, bool noBody = false, RestApiSettings settings = null) { if (context != null) { if (settings == null) { settings = RestApiSettingPool.DefaultRestApiSettings; } var objectToReturn = ex != null ? (settings.OmitExceptionDetail ? ex.ToSimpleExceptionInfo() : ex.ToExceptionInfo()) : data; context.SetResponseHeader(HttpConstants.HttpHeader.SERVERNAME, EnvironmentCore.MachineName); context.SetResponseHeader(HttpConstants.HttpHeader.TRACEID, ApiTraceContext.TraceId); context.SetResponseHeader(HttpConstants.HttpHeader.POWEREDBY, HttpConstants.HttpValues.PoweredByBeyova); context.SetResponseHeader(HttpConstants.HttpHeader.BEYOVAAPIVERSION, BeyovaVersion.CommonVesion); int httpStatusCode = (int)(ex == null ? (noBody ? HttpStatusCode.NoContent : HttpStatusCode.OK) : ex.Code.ToHttpStatusCode()); if (ex == null && operationParameters?.EntitySynchronizationMode != null) { DateTime?lastModifiedStamp = null; data = operationParameters.EntitySynchronizationMode.RebuildOutputObject(ContextHelper.ApiContext.LastSynchronizedStamp, data, ref httpStatusCode, ref noBody, out lastModifiedStamp); if (lastModifiedStamp.HasValue) { context.SetResponseHeader(operationParameters.EntitySynchronizationMode.LastModifiedKey, lastModifiedStamp.Value.ToFullDateTimeTzString()); } } context.ResponseStatusCode = (HttpStatusCode)httpStatusCode; if (!noBody) { var contentType = HttpConstants.ContentType.Json; var contentWritten = false; byte[] responseBytes = null; if (ex == null) { if (!string.IsNullOrWhiteSpace(operationParameters?.ContentType)) { contentType = operationParameters.ContentType; if (objectToReturn != null && contentType.StartsWith("application/", StringComparison.OrdinalIgnoreCase) && objectToReturn.GetType() == typeof(byte[])) { responseBytes = (byte[])objectToReturn; } } } if (responseBytes == null) { responseBytes = Framework.DefaultTextEncoding.GetBytes(contentType.Equals(HttpConstants.ContentType.Json, StringComparison.OrdinalIgnoreCase) ? objectToReturn.ToJson(true, JsonConverters) : objectToReturn.SafeToString()); } context.SetResponseHeader(HttpConstants.HttpHeader.SERVEREXITTIME, DateTime.UtcNow.ToFullDateTimeTzString()); if (settings.EnableContentCompression) { acceptEncoding = acceptEncoding.SafeToString().ToLowerInvariant(); if (acceptEncoding.Contains(HttpConstants.HttpValues.GZip)) { context.WriteResponseGzipBody(responseBytes, contentType); contentWritten = true; } else if (acceptEncoding.Contains(HttpConstants.HttpValues.Deflate)) { context.WriteResponseDeflateBody(responseBytes, contentType); contentWritten = true; } } if (!contentWritten) { //return as string; context.WriteResponseBody(responseBytes, contentType); } } else { context.SetResponseHeader(HttpConstants.HttpHeader.SERVEREXITTIME, DateTime.UtcNow.ToFullDateTimeTzString()); } } }
public DummyMainWS(HttpContextContainer contextContainer) { this._contextContainer = contextContainer; }
/// <summary> /// Gets the value compatibly. /// </summary> /// <typeparam name="TRequest">The type of the request.</typeparam> /// <typeparam name="TResponse">The type of the response.</typeparam> /// <param name="context">The context.</param> /// <param name="cookieActions">The cookie actions.</param> /// <param name="key">The key.</param> /// <returns></returns> private static string GetValueCompatibly <TRequest, TResponse>(HttpContextContainer <TRequest, TResponse> context, IHttpRequestCookieActions cookieActions, string key) { return(!string.IsNullOrWhiteSpace(key) ? (context?.TryGetRequestHeader(key).SafeToString(cookieActions?.GetCookieValue(key))) : null); }