public SdkEvent(EventOptions eventOptions, SecureNativeOptions options) { if (eventOptions.GetUserId() == null || eventOptions.GetUserId().Length <= 0 || eventOptions.GetUserId().Equals("")) { throw new SecureNativeInvalidOptionsException("Invalid event structure; User Id is missing"); } if (eventOptions.GetEventType() == null || eventOptions.GetEventType().Length <= 0 || eventOptions.GetEventType().Equals("")) { throw new SecureNativeInvalidOptionsException("Invalid event structure; Event Type is missing"); } var context = eventOptions.GetContext() ?? SecureNativeContextBuilder.DefaultContextBuilder().Build(); var clientToken = EncryptionUtils.Decrypt(context.GetClientToken(), options.GetApiKey()); Rid = Guid.NewGuid().ToString(); EventType = eventOptions.GetEventType(); UserId = eventOptions.GetUserId(); UserTraits = eventOptions.GetUserTraits(); Request = new RequestContextBuilder() .WithCid(clientToken.GetCid()) .WithVid(clientToken.GetVid()) .WithFp(clientToken.GetFp()) .WithIp(context.GetIp()) .WithRemoteIp(context.GetRemoteIp()) .WithMethod(context.GetMethod()) .WithUrl(context.GetUrl()) .WitHeaders(context.GetHeaders()) .Build(); Timestamp = DateUtils.ToTimestamp(eventOptions.GetTimestamp() ?? new DateTime()); Properties = eventOptions.GetProperties(); }
public RouteContext GetContext(RouteId id, HttpContext ctx) { var spec = Specs[id]; var options = RouteOptionsBuilder.Build(id, Config); var callCtx = RequestContextBuilder.Build(ctx); var handler = HandlerProvider.GetHandler(options.Handler, options.Config, responseContext: null); return(new RouteContext(options, spec, callCtx, handler, Logger)); }
public RequestContext ParseRequestStream(NetworkStream requestStream) { if (requestStream == null) { throw new ArgumentNullException($"{nameof(requestStream)} cannot be null."); } StringBuilder requestHeaderTextBuilder = new StringBuilder(); int currentByte; bool lastCharNewLine = false; byte[] buffer = new byte[1]; int bytesRead = requestStream.Read(buffer, 0, buffer.Length); if (bytesRead > 0) { requestHeaderTextBuilder.Append(Encoding.UTF8.GetString(buffer)); } while (requestStream.DataAvailable) { currentByte = requestStream.ReadByte(); if (currentByte > -1) { char currentChar = Convert.ToChar(currentByte); if (lastCharNewLine && currentChar == '\r') { requestStream.ReadByte(); break; } else if (lastCharNewLine && currentChar == '\n') { break; } lastCharNewLine = currentChar == '\n'; requestHeaderTextBuilder.Append(currentChar); } } string requestHeaderText = RequestHeaderStringNormalizer.NormalizeForApplication(requestHeaderTextBuilder.ToString()); Console.WriteLine(requestHeaderText); if (string.IsNullOrWhiteSpace(requestHeaderText)) { throw new HttpRequestParserException("Empty Requests cannot be parsed."); } return(RequestContextBuilder.BuildRequestContext(requestHeaderText, requestStream)); }
/// <summary> /// Creates a new RequestContextBuilder which can be used to fluently set /// preferences /// </summary> /// <returns>Returns a new RequestContextBuilder</returns> public static RequestContextBuilder Configure() { var builder = new RequestContextBuilder(); return(builder); }
public static IRequestContext UseWebContext(this RequestContextBuilder <IServiceProvider> contextBuilder) { var contextAccessor = contextBuilder.Container.GetRequiredService <IHttpContextAccessor>(); return(new RequestContext(contextAccessor)); }