예제 #1
0
        protected void SetupContext(IResponseCookies resCookies = null, IRequestCookieCollection reqCookies = null, string uid = null)
        {
            var controllerContext = new ControllerContext();
            var httpContext       = new Mock <HttpContext>(MockBehavior.Strict);

            if (resCookies != null)
            {
                var response = new Mock <HttpResponse>(MockBehavior.Strict);
                response.SetupGet(x => x.Cookies).Returns(resCookies);
                httpContext.SetupGet(x => x.Response).Returns(response.Object);
            }
            if (reqCookies != null)
            {
                var request = new Mock <HttpRequest>(MockBehavior.Strict);
                request.SetupGet(x => x.Cookies).Returns(reqCookies);
                httpContext.SetupGet(x => x.Request).Returns(request.Object);
            }
            if (uid != null)
            {
                httpContext.SetupGet(x => x.User).Returns(
                    new ClaimsPrincipal(new ClaimsIdentity(new Claim[] { new Claim(NotetasticApi.Users.ClaimTypes.UID, uid) }))
                    );
            }
            controllerContext.HttpContext    = httpContext.Object;
            authController.ControllerContext = controllerContext;
        }
예제 #2
0
        public static string GET(string url, IRequestCookieCollection cookies)
        {
            string         result  = string.Empty;
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

            request.Method = "GET";

            var cookieContainer = new CookieContainer();

            if (cookies != null)
            {
                if (cookies.Count > 0)
                {
                    var cookieCollection = new CookieCollection();
                    foreach (var cookie in cookies)
                    {
                        var ck = new Cookie(cookie.Key, cookie.Value);
                        ck.Domain = request.Host.ToString();
                        cookieCollection.Add(ck);
                    }
                    cookieContainer.Add(cookieCollection);
                }
            }
            request.CookieContainer = cookieContainer;

            HttpWebResponse response  = (HttpWebResponse)request.GetResponse();
            var             resStream = response.GetResponseStream();
            StreamReader    reader    = new StreamReader(resStream);

            result = reader.ReadToEnd();
            resStream.Close();
            reader.Close();
            logger.Info("GET:" + result);
            return(result);
        }
예제 #3
0
        private static IRequestCookieCollection GetCookies()
        {
            HttpContextAccessor      httpContextAccessor = new HttpContextAccessor();
            IRequestCookieCollection cookieValue         = httpContextAccessor.HttpContext.Request.Cookies;

            return(cookieValue);
        }
예제 #4
0
 public IActionResult Transfers(TransfersViewModel model)
 {
     if (model.SaveType == "partial")
     {
         model.VoyagerUserId = ckLoginUser_Id;
         PositionSetRes objPositionSetRes = positionMapping.SetTransfersDetails(model, ckUserName, token);
         var            objPosition       = objPositionSetRes.mPosition.FirstOrDefault();
         if (objPosition != null)
         {
             return(Json(new { objPositionSetRes.ResponseStatus, QRFID = objPosition.QRFID, PositionId = objPosition.PositionId, RoomDetailsInfo = objPosition.RoomDetailsInfo }));
         }
         else
         {
             return(Json(new { objPositionSetRes.ResponseStatus, QRFID = objPosition.QRFID, PositionId = objPosition.PositionId, RoomDetailsInfo = new List <RoomDetailsInfo>() }));
         }
     }
     else
     {
         model.VoyagerUserId = ckLoginUser_Id;
         IRequestCookieCollection objCookies = HttpContext.Request.Cookies;
         var            sessionData          = string.IsNullOrEmpty(HttpContext.Request.Cookies["VoyagerUser_Id"]) ? HttpContext.Session.GetComplexData <List <ProductAttributeDetails> >(SessionName) : null;
         PositionSetRes objPositionSetRes    = positionMapping.SetAllTransfersDetails(_configuration, token, model, objCookies, sessionData);
         objPositionSetRes.ResponseStatus.ErrorMessage = "Transfer Details " + objPositionSetRes.ResponseStatus.ErrorMessage;
         return(Json(new { objPositionSetRes.ResponseStatus }));
     }
 }
예제 #5
0
 public static void SerializeCookieInfo(IRequestCookieCollection cookies, IgnorePropertiesInfo ignoreInfo, ILogger logger)
 {
     if (cookies != null && cookies.Count != 0)
     {
         try {
             logger.BeginWriteObject("cookie");
             foreach (string key in cookies.Keys)
             {
                 string cookie = cookies[key];
                 logger.BeginWriteObject(key);
                 //logger.WriteValue("domain", cookie.Domain);
                 //logger.WriteValue("expires", cookie.Expires.ToString());
                 logger.WriteValue("name", key);
                 //logger.WriteValue("secure", cookie.Secure);
                 //logger.WriteValue("value", cookie.Value);
                 if (ignoreInfo != null && ignoreInfo.ShouldIgnore(key))
                 {
                     logger.WriteValue("value", RequestBodyFilter.ValueStripped);
                 }
                 else
                 {
                     logger.WriteValue("value", cookie);
                 }
                 logger.EndWriteObject(key);
             }
         }
         finally {
             logger.EndWriteObject("cookie");
         }
     }
 }
예제 #6
0
        public async Task <Response <Request> > Build(
            string httpMethod,
            string downstreamUrl,
            Stream content,
            IHeaderDictionary headers,
            IRequestCookieCollection cookies,
            QueryString queryString,
            string contentType,
            RequestId.RequestId requestId,
            bool isQos,
            IQoSProvider qosProvider)
        {
            var request = await new RequestBuilder()
                          .WithHttpMethod(httpMethod)
                          .WithDownstreamUrl(downstreamUrl)
                          .WithQueryString(queryString)
                          .WithContent(content)
                          .WithContentType(contentType)
                          .WithHeaders(headers)
                          .WithRequestId(requestId)
                          .WithCookies(cookies)
                          .WithIsQos(isQos)
                          .WithQos(qosProvider)
                          .Build();

            return(new OkResponse <Request>(request));
        }
예제 #7
0
        public static bool LoggedIn(IRequestCookieCollection req)
        {
            var cookieUser   = req["user"];
            var cookieUserId = req["userId"];

            return((cookieUser != null) && (cookieUserId != null));
        }
예제 #8
0
        public async Task Invoke(HttpContext context, CredentialsHandler credentialsHandler)
        {
            string credentialsString = context.Session.GetString(CREDENTIALS_KEY);

            if (String.IsNullOrEmpty(credentialsString))
            {
                try
                {
                    IRequestCookieCollection cookies = context.Request.Cookies;
                    credentialsHandler.SetAndCheck(cookies);
                    if (credentialsHandler.AreSetted)
                    {
                        context.Session.SetString(CREDENTIALS_KEY, credentialsHandler.GetString);
                    }
                }
                catch (AppException)
                {
                    throw new AppException("Bad cookies", 400);
                }
            }
            else
            {
                credentialsHandler.Set(credentialsString);
            }
            await Next(context);
        }
예제 #9
0
 public async Task <bool> IsInRoleAsync(IRequestCookieCollection cookies, string roleName)
 {
     return(await Task.Run(async() =>
     {
         return true;
     }));
 }
예제 #10
0
        public override TPrivate CheckUpdate(int id, TPrivate dto, HttpContext ctxt)
        {
            CheckCredentials(id);
            CheckDTOForUpdating(dto);
            AccountService.CheckDTOForUpdating(dto.Account);
            if (Entities.Any(e => e.ConnectionId == dto.ConnectionId && e.Id != id))
            {
                throw new AppException($"'{dto.ConnectionId}' is already used as connectionId", 400);
            }
            TEntity entity = FindEntity(id);
            IRequestCookieCollection cookies = ctxt.Request.Cookies;

            if (
                entity.User.Password != dto.Password &&
                cookies.ContainsKey(Credentials.PASSWORD_KEY) &&
                !String.IsNullOrEmpty(cookies[Credentials.PASSWORD_KEY])
                )
            {
                ctxt.Response.Cookies.Append(Credentials.PASSWORD_KEY, dto.Password);
            }
            dto.Account.Balance = entity.Account.Balance;
            int userId = entity.UserId;

            entity         = DTOToUserEntity(dto, userId, id);
            entity.Id      = id;
            entity         = Repo.Update(entity);
            entity.User    = UserService.QuickUpdate(userId, dto);
            entity.Account = AccountService.QuickUpdate(entity.AccountId, dto.Account);
            return(EntityToDTO(entity));
        }
예제 #11
0
        /// <summary>
        /// 签到
        /// </summary>
        /// <param name="cookieCollection"></param>
        /// <returns></returns>
        public int Reward(IRequestCookieCollection cookieCollection)
        {
            string url    = "http://jnga.app1.magcloud.net/mag/addon/v1/sign/signReward";
            var    result = HttpHelper.GET(url, cookieCollection);

            return(JsonConvert.DeserializeAnonymousType(result, new { success = false, code = 0 }).code);
        }
예제 #12
0
        //On SendMessage
        public async Task SendMessage(int groupId, int type, string message)
        {
            //Check if authenticated
            IRequestCookieCollection Cookies = Context.GetHttpContext().Request.Cookies;

            if ((User = authService.GetUser(Cookies)) == null)
            {
                await Clients.Caller.SendAsync("AuthenticationFailed");
            }

            var groupUser = dbContext.GroupUsers.Include(p => p.Group).FirstOrDefault(p => p.GroupId == groupId && p.UserId == User.Id);

            if (groupUser != null)
            {
                MessageViewModel messageObj = new MessageViewModel
                {
                    Type     = type,
                    Data     = message,
                    Date     = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss"),
                    UserId   = User.Id,
                    UserName = User.Login
                };
                groupUser.Group.Messages.Add(new Message {
                    User = User, Type = type, Data = message, Date = DateTime.Now
                });
                await dbContext.SaveChangesAsync();

                await Clients.Group(groupId.ToString()).SendAsync("SendMessage", groupId, JsonConvert.SerializeObject(messageObj));
            }
        }
예제 #13
0
        /// <inheritdoc />
        public async Task <string> CheckAuthorization(IRequestCookieCollection cookies, CancellationToken cancellationToken)
        {
            if (!cookies.TryGetValue(CookieName, out string cookieGuid))
            {
                return(null);
            }

            if (!Guid.TryParse(cookieGuid, out Guid guid))
            {
                return(null);
            }

            //cleanup
            var now        = DateTimeOffset.Now;
            var everything = await databaseContext.AccessTokenEntries.ToAsyncEnumerable().ToList().ConfigureAwait(false);

            var toRemove = everything.Where(x => x.Expiry < now);

            databaseContext.AccessTokenEntries.RemoveRange(toRemove);
            await databaseContext.Save(cancellationToken).ConfigureAwait(false);

            var entry = everything.Where(x => x.Id == guid && x.Expiry >= now).FirstOrDefault();

            if (entry == default(AccessTokenEntry))
            {
                return(null);
            }

            return(entry.AccessToken);
        }
예제 #14
0
        internal static List <KeyValue> ToList(this IRequestCookieCollection obj)
        {
            if (obj == null)
            {
                return(null);
            }

            var list = new List <KeyValue>();

            foreach (var key in obj.Keys)
            {
                if (key != null)
                {
                    if (obj.TryGetValue(key, out string value))
                    {
                        list.Add(new KeyValue(key, value));
                    }
                    else
                    {
                        list.Add(new KeyValue(key, "__ERROR_READING_VALUE__"));
                    }
                }
            }

            return(list);
        }
예제 #15
0
        public RequestLog(HttpRequest request)
        {
            var requestBody = request.GetBodyString();

            //Redact password from json body
            if (requestBody.Contains("password", StringComparison.InvariantCultureIgnoreCase))
            {
                var pattern = "(\\\"password\\\":\\\")[^\\\"]*(\\\")";
                requestBody = Regex.Replace(requestBody, pattern, "$1***REDACTED***$2", RegexOptions.IgnoreCase);
            }

            //Redact Authorization from headers
            Headers = request.Headers.Select(x => x.Key.Equals("Authorization", StringComparison.InvariantCultureIgnoreCase) ? $"{x.Key} : {x.Value.ToString().Obfuscate(obfuscationTerm: "***REDACTED***")}" : $"{x.Key} : {x.Value}").ToList();

            //_headers = request.Headers;
            _cookies = request.Cookies;
            _form    = request.HasFormContentType ? request.Form : null;
            _body    = requestBody;

            ContentLength = request.ContentLength;
            ContentType   = request.ContentType;
            Method        = request.Method;

            Url       = $"{request.Scheme}://{request.Host}{request.Path}{request.QueryString}";
            IpAddress = request.HttpContext.Connection.RemoteIpAddress.ToString();
        }
예제 #16
0
 public IActionResult QuoteFOC(QuoteFOCViewModel model)
 {
     try
     {
         SalesQuoteLibrary        quoteLibrary = new SalesQuoteLibrary(_configuration);
         IRequestCookieCollection objCookies   = HttpContext.Request.Cookies;
         var            sessionData            = string.IsNullOrEmpty(HttpContext.Request.Cookies["VoyagerUser_Id"]) ? HttpContext.Session.GetComplexData <List <ProductAttributeDetails> >(SessionName) : null;
         PaxSetResponse focSetResponse         = quoteLibrary.SetFOCDetails(_configuration, token, model, objCookies, sessionData);
         if (focSetResponse.Status.ToLower() == "success")
         {
             TempData["success"] = "FOC details saved successfully";
         }
         else
         {
             TempData["error"] = focSetResponse.Status;
         }
         return(RedirectToAction("GetFOC", new { model.QRFID }));
     }
     catch (Exception ex)
     {
         throw;
         TempData["error"] = ex.Message;
         return(RedirectToAction("GetFOC", new { model.QRFID }));
     }
 }
예제 #17
0
        public string SendCheckCode(IRequestCookieCollection cookieCollection)
        {
            string url    = "http://www.bjguahao.gov.cn/v/sendorder.htm";
            var    result = HttpHelper.POST(url, "", cookieCollection);

            return(result);
        }
예제 #18
0
        public IActionResult QuotePaxRange(QuotePaxRangeViewModel model)
        {
            try
            {
                SalesQuoteLibrary        quoteLibrary = new SalesQuoteLibrary(_configuration);
                IRequestCookieCollection objCookies   = HttpContext.Request.Cookies;
                var sessionData = string.IsNullOrEmpty(HttpContext.Request.Cookies["VoyagerUser_Id"]) ? HttpContext.Session.GetComplexData <List <ProductAttributeDetails> >(SessionName) : null;
                //if (ModelState.IsValid)
                //{
                model.QuotePaxSlabDetails = model.QuotePaxSlabDetails.Where(a => a.PaxSlabId > 0 || (a.PaxSlabId == 0 && a.IsDeleted == false)).ToList();
                if (model.HotelsOption != "yes")
                {
                    model.HotelCategoryList = null; model.HotelChainList = null;
                }

                PaxSetResponse departureSetResponse = quoteLibrary.SetPaxRangeDetails(_configuration, token, model, objCookies, sessionData);
                if (departureSetResponse.Status.ToLower() == "success")
                {
                    TempData["success"] = "Pax details saved successfully";
                }
                else
                {
                    TempData["error"] = departureSetResponse.Status;
                }
                //}
                return(RedirectToAction("GetPaxRange", new { model.QRFID }));
            }
            catch (Exception ex)
            {
                throw;
                TempData["error"] = ex.Message;
                return(RedirectToAction("GetPaxRange", new { model.QRFID }));
            }
        }
예제 #19
0
 public IActionResult QuoteDateRange(QuoteDateRangeViewModel model)
 {
     try
     {
         SalesQuoteLibrary quoteLibrary = new SalesQuoteLibrary(_configuration);
         if (ModelState.IsValid)
         {
             IRequestCookieCollection objCookies = HttpContext.Request.Cookies;
             var sessionData = string.IsNullOrEmpty(HttpContext.Request.Cookies["VoyagerUser_Id"]) ? HttpContext.Session.GetComplexData <List <ProductAttributeDetails> >(SessionName) : null;
             model.QuoteSpecificDateViewModel = model.QuoteSpecificDateViewModel.Where(a => a.DepartureId > 0 || (a.DepartureId == 0 && a.IsDeleted == false)).ToList();
             DepartureDateSetResponse departureSetResponse = quoteLibrary.SetQRFDepartureDetails(_configuration, token, model, objCookies, sessionData);
             if (departureSetResponse.Status.ToLower() == "success")
             {
                 TempData["success"] = "Departure Dates saved successfully";
             }
             else
             {
                 TempData["error"] = departureSetResponse.Status;
             }
         }
         return(RedirectToAction("GetDateRange", new { model.QRFID }));
     }
     catch (Exception ex)
     {
         throw;
         return(RedirectToAction("GetDateRange", new { model.QRFID }));
     }
 }
        public void GetFilterCookiesForUserIfNull(IRequestCookieCollection cookies, string username, bool isFromFilterForm, ref string selectedName, ref int?selectedDeliveryMethodId, ref int?selectedProductTypeId)
        {
            if (string.IsNullOrEmpty(selectedName))
            {
                if (!isFromFilterForm)
                {
                    cookies.TryGetValue(username + "supplierSelectedName", out selectedName);
                }
            }

            if (selectedProductTypeId == null || selectedProductTypeId == 0)
            {
                if (!isFromFilterForm)
                {
                    cookies.TryGetValue(username + "supplierSelectedProductType", out string selectedTypeIdStr);
                    selectedProductTypeId = string.IsNullOrEmpty(selectedTypeIdStr)
                        ? null
                        : (int?)int.Parse(selectedTypeIdStr);
                }
            }

            if (selectedDeliveryMethodId == null || selectedDeliveryMethodId == 0)
            {
                if (!isFromFilterForm)
                {
                    cookies.TryGetValue(username + "supplierSelectedDeliveryMethod", out string selectedDeliveryMethodIdStr);
                    selectedDeliveryMethodId = string.IsNullOrEmpty(selectedDeliveryMethodIdStr)
                        ? null
                        : (int?)int.Parse(selectedDeliveryMethodIdStr);
                }
            }
        }
 public void AddCookies(IRequestCookieCollection cookies)
 {
     foreach (var cookie in cookies)
     {
         AddCookie(cookie.Key, cookie.Value);
     }
 }
예제 #22
0
        public static T GetObject <T>(this IRequestCookieCollection cookies, string key)
        {
            var value = cookies[key];

            return(value == null ? default(T) :
                   JsonConvert.DeserializeObject <T>(value));
        }
예제 #23
0
        public static string GetCookieValueFor(HttpContext context, string cookieName, bool setCookieToResponse = true)
        {
            string strRet = "";

            if (context != null)
            {
                IRequestCookieCollection cookies = context.Request.Cookies;
                string cookieValue = cookies[cookieName];

                if (cookieValue != null)
                {
                    strRet = System.Web.HttpUtility.UrlDecode(cookieValue);

                    if (setCookieToResponse)
                    {
                        if (!SetCookieValueFor(context, cookieName, strRet))
                        {
                            Console.WriteLine("On GetCookieValueFor - could not set the cookie value to response");
                        }
                    }
                }
            }
            else
            {
                Console.WriteLine("On GetCookieValueFor - context object is null ");
            }

            return(strRet);
        }
        public static UserData GetUserData(this IRequestCookieCollection cookieCollection, string key)
        {
            string resStr;

            cookieCollection.TryGetValue(key, out resStr);
            return(resStr == null ? default(UserData) : JsonSerializer.Deserialize <UserData>(resStr));
        }
예제 #25
0
 public static void ClearCookies(this HttpResponse @this, IRequestCookieCollection cookies)
 {
     foreach (var key in cookies.Keys)
     {
         @this.Cookies.Delete(key);
     }
 }
예제 #26
0
        public IActionResult SaveQuickPickActivities(ActivitiesViewModel model)
        {
            PositionSetReq           positionSetReq = new PositionSetReq();
            string                   UserName       = HttpContext.Request.Cookies["UserName"] ?? ckUserName;
            IRequestCookieCollection objCookies     = HttpContext.Request.Cookies;
            SalesProviders           salesProviders = new SalesProviders(_configuration);
            RoutingDaysGetRes        routingDaysRes = salesProviders.GetQRFRoutingDays(new RoutingDaysGetReq {
                QRFID = model.QRFID
            }, token).Result;
            PositionGetReq positionGetReq = new PositionGetReq {
                QRFID = model.QRFID
            };

            positionGetReq.ProductType.Add(new ProductType {
                ProdType = "Attractions"
            });
            positionGetReq.ProductType.Add(new ProductType {
                ProdType = "Sightseeing - CityTour"
            });
            PositionGetRes positionGetRes = positionProviders.GetPosition(positionGetReq, token).Result;

            positionMapping.ActivitiesGet(positionGetRes, null, ref model, token);

            positionSetReq               = positionMapping.QuickPickActivitiesSet(model, routingDaysRes.RoutingDays, ckUserEmailId, positionGetRes);
            positionSetReq.QRFID         = model.QRFID;
            positionSetReq.VoyagerUserID = ckLoginUser_Id;
            PositionSetRes positionSetRes = positionProviders.SetPosition(positionSetReq, token).Result;

            model.SaveType = "full";
            return(RedirectToAction("Activities", new { model.QRFID, model.SaveType, IsClone = model.MenuViewModel.IsClone }));
        }
예제 #27
0
        internal static Dictionary <string, string> ToDictionary(this IRequestCookieCollection obj)
        {
            if (obj == null)
            {
                return(null);
            }

            var dic = new Dictionary <string, string>();

            foreach (var key in obj.Keys)
            {
                if (key != null)
                {
                    if (obj.TryGetValue(key, out string value))
                    {
                        dic.Add(key, value);
                    }
                    else
                    {
                        dic.Add(key, "__ERROR_READING_VALUE__");
                    }
                }
            }

            return(dic);
        }
예제 #28
0
        public void GetFilterCookiesForUserIfNull(IRequestCookieCollection cookies, string username, bool isFromFilterForm, ref string selectedName, ref int?selectedMinOrderQuantity, ref int?selectedMaxOrderQuantity)
        {
            if (string.IsNullOrEmpty(selectedName))
            {
                if (!isFromFilterForm)
                {
                    cookies.TryGetValue(username + "customerSelectedName", out selectedName);
                }
            }

            if (selectedMinOrderQuantity == null)
            {
                if (!isFromFilterForm)
                {
                    cookies.TryGetValue(username + "customerSelectedMinQuantity", out string selectedMinQuantityStr);
                    selectedMinOrderQuantity = string.IsNullOrEmpty(selectedMinQuantityStr)
                        ? null
                        : (int?)int.Parse(selectedMinQuantityStr);
                }
            }

            if (selectedMaxOrderQuantity == null)
            {
                if (!isFromFilterForm)
                {
                    cookies.TryGetValue(username + "customerSelectedMaxQuantity", out string selectedMaxQuantityStr);
                    selectedMaxOrderQuantity = string.IsNullOrEmpty(selectedMaxQuantityStr)
                        ? null
                        : (int?)int.Parse(selectedMaxQuantityStr);
                }
            }
        }
    public CookieValueProvider(BindingSource bindingSource, IRequestCookieCollection values, CultureInfo culture) : base(bindingSource)
    {
        _ = bindingSource ?? throw new ArgumentNullException(nameof(bindingSource));
        _ = values ?? throw new ArgumentNullException(nameof(values));

        (_values, Culture) = (values, culture);
    }
예제 #30
0
        public Task BindModelAsync(ModelBindingContext bindingContext)
        {
            if (bindingContext == null)
            {
                throw new ArgumentNullException(nameof(bindingContext));
            }
            if (bindingContext.ModelType == typeof(SysUser))
            {
                // 1、创建用户对象
                SysUser sysUser = new SysUser();

                // 2、设置模型值(cookie,header)
                HttpContext httpContext          = bindingContext.HttpContext;
                IRequestCookieCollection cookies = httpContext.Request.Cookies;
                string UserId   = cookies["UserId"];
                string UserName = cookies["UserName"];
                // 1、判断UserId是否为空
                if (string.IsNullOrEmpty(UserId))
                {
                    throw new BizException("授权失败,没有登录");
                }
                sysUser.UserId   = Convert.ToInt32(UserId);
                sysUser.UserName = UserName;

                // 3、返回结果
                bindingContext.Result = ModelBindingResult.Success(sysUser);
            }

            return(Task.CompletedTask);
        }
        public RequestCookiesFeature(IRequestCookieCollection cookies)
        {
            if (cookies == null)
            {
                throw new ArgumentNullException(nameof(cookies));
            }

            _parsedValues = cookies;
        }
        /// <summary>
        /// Instantiates a new web request wrapping the http request provided.
        /// </summary>
        /// <param name="request">The underlying http request to wrap.</param>
        public AspNetRequest(HttpRequest request)
        {
            _underlyingRequest = request;
            _urlInfo = new UrlInfo(request.Url);
            _cookies = new AspNetRequestCookieCollection(request.Cookies);
            // setup the request params
            ImmutableDictionary<string, string>.Builder parms = ImmutableDictionary.CreateBuilder<string, string>();
            ImmutableList<string>.Builder flags = ImmutableList.CreateBuilder<string>();
            // import the querystring
            for (int i = 0; i < _underlyingRequest.QueryString.Count; i++) {
                string key = _underlyingRequest.QueryString.GetKey(i);
                string[] values = _underlyingRequest.QueryString.GetValues(i);
                // check for valueless parameters and use as flags
                if (values != null) {
                    if (key == null) {
                        flags.InsertRange(0, values);
                    } else {
                        parms.Add(key, values[0]);
                    }
                }
            }

            // import the post values
            foreach (string key in _underlyingRequest.Form.Keys) {
                parms.Add(key, _underlyingRequest.Form.Get(key));
            }

            if (_underlyingRequest.ContentLength > 0 && _underlyingRequest.Files.Count == 0) {
                using (TextReader reader = new StreamReader(_underlyingRequest.InputStream)) {
                    _payload = reader.ReadToEnd();
                }
            }

            ImmutableDictionary<string, string>.Builder headers = ImmutableDictionary.CreateBuilder<string, string>();
            foreach (string key in _underlyingRequest.Headers.AllKeys) {
                headers.Add(key, _underlyingRequest.Headers[key]);
            }

            _flags = flags.ToImmutable();
            _params = parms.ToImmutable();
            _headers = headers.ToImmutable();
        }
예제 #33
0
        public OwinRequest(IOwinRequest request)
        {
            _request = request;
            _urlInfo = new UrlInfo(request.Uri);
            _cookies = new OwinRequestCookieCollection(request.Cookies);
            // setup the request params
            ImmutableDictionary<string, string>.Builder parms = ImmutableDictionary.CreateBuilder<string, string>();
            ImmutableList<string>.Builder flags = ImmutableList.CreateBuilder<string>();
            // import the querystring
            foreach (KeyValuePair<string, string[]> entry in request.Query) {
                if (entry.Value != null) {
                    if (entry.Key == null) {
                        flags.InsertRange(0, entry.Value);
                    } else {
                        parms.Add(entry.Key, entry.Value[0]);
                    }
                }
            }
            // import the post values
            IFormCollection form = request.Get<IFormCollection>("Microsoft.Owin.Form#collection");
            if (form != null) {
                foreach (KeyValuePair<string, string[]> entry in form) {
                    parms.Add(entry.Key, entry.Value[0]);
                }
            }
            // import the payload
            _payload = request.Body.AsMemoryStream().AsText();

            // import the headers
            ImmutableDictionary<string, string>.Builder headers = ImmutableDictionary.CreateBuilder<string, string>();
            foreach (KeyValuePair<string, string[]> entry in request.Headers) {
                headers.Add(entry.Key, entry.Value[0]);
            }

            _flags = flags.ToImmutable();
            _params = parms.ToImmutable();
            _headers = headers.ToImmutable();
        }
        private HttpContext GetHttpContext(IRequestCookieCollection cookies)
        {
            var httpContext = new DefaultHttpContext();
            httpContext.Request.Cookies = cookies;

            return httpContext;
        }
 private static List<RaygunRequestMessage.Cookie> GetCookies(IRequestCookieCollection cookies, Func<string, bool> isCookieIgnored)
 {
   return cookies.Where(c => !isCookieIgnored(c.Key)).Select(c => new RaygunRequestMessage.Cookie(c.Key, c.Value)).ToList();
 }