public PagedSearchedQueryResult <FakturaZakupu> FakturyZakupu(int idFirmy, int idRoku, int?idKontrahenta, int page, string search, string asc, string desc, int pageSize = KancelariaSettings.PageSize, DateTime?dateFrom = null, DateTime?dateTo = null) { var Query = QueryStringParser <FakturaZakupu> .Parse( (from fz in db.FakturaZakupus where fz.IdFirmy == idFirmy && fz.IdRoku == idRoku && (idKontrahenta.HasValue ? fz.IdKontrahenta == idKontrahenta : true) select fz).SortBy(asc, desc, "DataFaktury", true), new FakturyZakupuDictionary(), ref search ); if (dateFrom.HasValue) { Query = Query.Where(p => p.DataFaktury >= dateFrom.Value); } if (dateTo.HasValue) { Query = Query.Where(p => p.DataFaktury <= dateTo.Value); } if (search != null) { Query = Query.Where( q => q.NumerFaktury.Contains(search.ToLower()) || q.Opis.Contains(search.ToLower()) || q.WlasnyNumerFaktury.Contains(search.ToLower()) //|| q.PozycjaFakturyZakupus.Sum(s => s.KwotaNetto).ToString().Contains(search) // TODO: dorobic na FZ - FS metody zwracajace sumy netto, brutto, vat ); } return(new PagedSearchedQueryResult <FakturaZakupu>(Query, page, pageSize, search)); }
protected override async Task <bool> GetHtmlAsync(IOwinEnvironment context, IClient client, CancellationToken cancellationToken) { var queryString = QueryStringParser.Parse(context.Request.QueryString, _logger); var spToken = queryString.GetString("sptoken"); if (string.IsNullOrEmpty(spToken)) { return(await HttpResponse.Redirect(context, _configuration.Web.ForgotPassword.Uri)); } var application = await client.GetApplicationAsync(_configuration.Application.Href, cancellationToken); try { await application.VerifyPasswordResetTokenAsync(spToken, cancellationToken); var viewModelBuilder = new ChangePasswordFormViewModelBuilder(client, _configuration); var changePasswordViewModel = viewModelBuilder.Build(); await RenderViewAsync(context, _configuration.Web.ChangePassword.View, changePasswordViewModel, cancellationToken); return(true); } catch (ResourceException) { return(await HttpResponse.Redirect(context, _configuration.Web.ChangePassword.ErrorUri)); } }
public PagedSearchedQueryResult <NieuregulowanaFakturaSprzedazy> NieuregulowaneFakturySprzedazy(int idFirmy, int idRoku, int?idKontrahenta, int?idInwestycji, int page, string search, string asc, string desc, int pageSize = KancelariaSettings.PageSize, bool czyRazemZKorektami = false, DateTime?stanNaDzien = null) { var Query = QueryStringParser <NieuregulowanaFakturaSprzedazy> .Parse( (from fz in db.NieuregulowanaFakturaSprzedazies where fz.IdFirmy == idFirmy && fz.IdRoku == idRoku && (idKontrahenta.HasValue ? fz.IdKontrahenta == idKontrahenta : true) && (idInwestycji.HasValue ? fz.IdInwestycji == idInwestycji : true) && fz.KwotaNieuregulowana != 0 && (czyRazemZKorektami ? true : !fz.IdFakturyKorygujacej.HasValue) select fz).SortBy(asc, desc, "DataFaktury"), new NieuregulowanaFakturySprzedazyDictionary(), ref search ); if (search != null) { Query = Query.Where( q => q.NumerFaktury.Contains(search.ToLower()) || q.Opis.Contains(search.ToLower()) || q.NumerFaktury.Contains(search.ToLower()) ); } if (stanNaDzien.HasValue) { Query = Query.Where(p => p.TerminPlatnosci <= stanNaDzien.Value); } if (idKontrahenta.HasValue) { Query = Query.Where(q => q.IdKontrahenta == idKontrahenta); } return(new PagedSearchedQueryResult <NieuregulowanaFakturaSprzedazy>(Query, page, pageSize, search)); }
public void Parse() { QueryStringContainer queryStringContainer = new QueryStringContainer(); QueryStringParser queryStringParser = new QueryStringParser(); NameValueCollection queryStringFields = new NameValueCollection(); queryStringFields.Add("s", "Hey"); queryStringFields.Add("intField", "122"); queryStringFields.Add("iaf", "1,23,456"); queryStringFields.Add("df", "20070408"); queryStringFields.Add("dtf", "20070408123456"); queryStringFields.Add("sts", "Hi,There"); queryStringFields.Add("integers", "1,2,3,4,5"); queryStringFields.Add("b", "1"); queryStringParser.Parse(queryStringFields, queryStringContainer); Assert.AreEqual("Hey", queryStringContainer.StringField); Assert.AreEqual(122, queryStringContainer.IntField); Assert.AreEqual(new int[] { 1, 23, 456 }, queryStringContainer.IntArrayField); Assert.AreEqual(new DateTime(2007, 4, 8), queryStringContainer.DateField); Assert.AreEqual(new DateTime(2007, 4, 8, 12, 34, 56), queryStringContainer.DateTimeField); Assert.AreEqual("Hi", queryStringContainer.Strings[0]); Assert.AreEqual("There", queryStringContainer.Strings[1]); Assert.AreEqual(1, queryStringContainer.Ints[0]); Assert.AreEqual(2, queryStringContainer.Ints[1]); Assert.AreEqual(3, queryStringContainer.Ints[2]); Assert.AreEqual(4, queryStringContainer.Ints[3]); Assert.AreEqual(5, queryStringContainer.Ints[4]); Assert.IsTrue(queryStringContainer.BoolField); }
public void OrderReturnFieldDictionaryWhenIsSetInQuery() { var order = new Http.Rest.Query(QueryStringParser.Parse("sort[a]=asc")).Order; Assert.Equal("a", order[0].Field); Assert.Equal(Order.Asc, order[0].Order); }
private async Task <bool> HandleIdSiteRedirectAsync( IOwinEnvironment context, IClient client, CancellationToken cancellationToken) { var application = await client.GetApplicationAsync(_configuration.Application.Href, cancellationToken); var options = _options as IdSiteRedirectOptions ?? new IdSiteRedirectOptions(); var queryString = QueryStringParser.Parse(context.Request.QueryString, _logger); var stateToken = queryString.GetString(StringConstants.StateTokenName); if (string.IsNullOrEmpty(stateToken) || !new StateTokenParser(client, _configuration.Client.ApiKey, stateToken, _logger).Valid) { stateToken = new StateTokenBuilder(client, _configuration.Client.ApiKey).ToString(); } var idSiteUrlBuilder = application.NewIdSiteUrlBuilder() .SetCallbackUri(options.CallbackUri) .SetPath(options.Path) .SetState(stateToken); if (options.Logout) { idSiteUrlBuilder.ForLogout(); } var idSiteUrl = idSiteUrlBuilder.Build(); return(await HttpResponse.Redirect(context, idSiteUrl)); }
public void ParseQueryStringShouldReturnEmptyValue() { var url = new Url("GET", "https://localhost:80/?field="); var query = QueryStringParser.Parse(url.Query); Assert.Equal("", query.GetValue("field")); }
public void OrderShouldReturnFieldsInOrder() { var order = new Http.Rest.Query(QueryStringParser.Parse("sort[x]=&sort[a]=")).Order; Assert.Equal("x", order[0].Field); Assert.Equal("a", order[1].Field); }
public PagedSearchedQueryResult <Kontrahent> Kontrahenci(int idFirmy, int page, string search, string asc, string desc, int pageSize = KancelariaSettings.PageSize) { //var result = (from k in db.Kontrahents // select k).AsQueryable(); //return new PagedSearchedQueryResult<Kontrahent>(result, page, KancelariaSettings.PageSize); if (search == null) { search = ""; } var Query = QueryStringParser <Kontrahent> .Parse( (from k in db.Kontrahents where k.IdFirmy == idFirmy select k).SortBy(asc, desc, "KodKontrahenta"), new KontrahenciDictionary(), ref search ).Where( q => q.KodKontrahenta.ToLower().Contains(search.ToLower()) || q.Miejscowosc.ToLower().Contains(search.ToLower()) || q.NazwaKontrahenta.ToLower().Contains(search.ToLower()) || q.NIP.ToLower().Contains(search.ToLower()) || q.Panstwo.ToLower().Contains(search.ToLower()) || q.Ulica.ToLower().Contains(search.ToLower()) ); return(new PagedSearchedQueryResult <Kontrahent>(Query, page, pageSize, search)); }
protected override async Task <bool> PostHtmlAsync(IOwinEnvironment context, IClient client, ContentType bodyContentType, CancellationToken cancellationToken) { var application = await client.GetApplicationAsync(_configuration.Application.Href, cancellationToken); try { var body = await context.Request.GetBodyAsStringAsync(cancellationToken); var model = PostBodyParser.ToModel <ForgotPasswordPostModel>(body, bodyContentType, _logger); var formData = FormContentParser.Parse(body, _logger); var stateToken = formData.GetString(StringConstants.StateTokenName); var parsedStateToken = new StateTokenParser(client, _configuration.Client.ApiKey, stateToken, _logger); if (!parsedStateToken.Valid) { var queryString = QueryStringParser.Parse(context.Request.QueryString, _logger); var viewModelBuilder = new ForgotPasswordFormViewModelBuilder(client, _configuration, queryString); var viewModel = viewModelBuilder.Build(); viewModel.Errors.Add("An error occurred. Please try again."); await RenderViewAsync(context, _configuration.Web.ForgotPassword.View, viewModel, cancellationToken); return(true); } await application.SendPasswordResetEmailAsync(model.Email, cancellationToken); } catch (Exception ex) { _logger.Error(ex, source: "ForgotRoute.PostHtml"); } return(await HttpResponse.Redirect(context, _configuration.Web.ForgotPassword.NextUri)); }
protected override async Task <bool> GetHtmlAsync(IOwinEnvironment context, IClient client, CancellationToken cancellationToken) { var queryString = QueryStringParser.Parse(context.Request.QueryString, _logger); var spToken = queryString.GetString("sptoken"); if (string.IsNullOrEmpty(spToken)) { var viewModelBuilder = new VerifyEmailFormViewModelBuilder(client, _configuration); var verifyViewModel = viewModelBuilder.Build(); await RenderViewAsync(context, _configuration.Web.VerifyEmail.View, verifyViewModel, cancellationToken); return(true); } try { var account = await client.VerifyAccountEmailAsync(spToken, cancellationToken); var postVerifyEmailContext = new PostVerifyEmailContext(context, account); await _handlers.PostVerifyEmailHandler(postVerifyEmailContext, cancellationToken); return(await HttpResponse.Redirect(context, $"{_configuration.Web.VerifyEmail.NextUri}")); } catch (ResourceException) { var viewModelBuilder = new VerifyEmailFormViewModelBuilder(client, _configuration); var verifyViewModel = viewModelBuilder.Build(); verifyViewModel.InvalidSpToken = true; await RenderViewAsync(context, _configuration.Web.VerifyEmail.View, verifyViewModel, cancellationToken); return(true); } }
public void ParseQueryStringShouldRewriteValueWithLastOccurence() { var url = new Url("GET", "https://localhost:80/?field=asd&field=acd&field=axd"); var query = QueryStringParser.Parse(url.Query); Assert.Equal("axd", query.GetValue("field")); }
public void ParseEmptyQueryStringShouldReturnEmptyDictionary() { var url = new Url("GET", "https://localhost:80/"); var query = QueryStringParser.Parse(url.Query); Assert.Empty(query.ToList()); }
/// <summary> /// Initializes a new instance of the <see cref="RequestMessage"/> class. /// </summary> /// <param name="urlDetails">The original url details.</param> /// <param name="method">The HTTP method.</param> /// <param name="clientIP">The client IP Address.</param> /// <param name="bodyData">The BodyData.</param> /// <param name="headers">The headers.</param> /// <param name="cookies">The cookies.</param> public RequestMessage([NotNull] UrlDetails urlDetails, [NotNull] string method, [NotNull] string clientIP, [CanBeNull] BodyData bodyData = null, [CanBeNull] IDictionary <string, string[]> headers = null, [CanBeNull] IDictionary <string, string> cookies = null) { Check.NotNull(urlDetails, nameof(urlDetails)); Check.NotNull(method, nameof(method)); Check.NotNull(clientIP, nameof(clientIP)); AbsoluteUrl = urlDetails.AbsoluteUrl.ToString(); Url = urlDetails.Url.ToString(); Protocol = urlDetails.Url.Scheme; Host = urlDetails.Url.Host; Port = urlDetails.Url.Port; Origin = $"{Protocol}://{Host}:{Port}"; AbsolutePath = WebUtility.UrlDecode(urlDetails.AbsoluteUrl.AbsolutePath); Path = WebUtility.UrlDecode(urlDetails.Url.AbsolutePath); PathSegments = Path.Split('/').Skip(1).ToArray(); AbsolutePathSegments = AbsolutePath.Split('/').Skip(1).ToArray(); Method = method; ClientIP = clientIP; BodyData = bodyData; // Convenience getters for e.g. Handlebars Body = BodyData?.BodyAsString; BodyAsJson = BodyData?.BodyAsJson; BodyAsBytes = BodyData?.BodyAsBytes; DetectedBodyType = BodyData?.DetectedBodyType.ToString(); DetectedBodyTypeFromContentType = BodyData?.DetectedBodyTypeFromContentType.ToString(); Headers = headers?.ToDictionary(header => header.Key, header => new WireMockList <string>(header.Value)); Cookies = cookies; RawQuery = WebUtility.UrlDecode(urlDetails.Url.Query); Query = QueryStringParser.Parse(RawQuery); }
public PagedSearchedQueryResult <NieuregulowanaFakturaZakupu> NieuregulowaneFakturyZakupu(int idFirmy, int idRoku, int?idKontrahenta, int page, string search, string asc, string desc, int pageSize = KancelariaSettings.PageSize, DateTime?stanNaDzien = null) { var Query = QueryStringParser <NieuregulowanaFakturaZakupu> .Parse( (from fz in db.NieuregulowanaFakturaZakupus where fz.IdFirmy == idFirmy && fz.IdRoku == idRoku && (idKontrahenta.HasValue ? fz.IdKontrahenta == idKontrahenta : true) && fz.KwotaNieuregulowana != 0 select fz).SortBy(asc, desc, "DataFaktury"), new NieuregulowanaFakturyZakupuDictionary(), ref search ); if (search != null) { Query = Query.Where( q => q.NumerFaktury.Contains(search.ToLower()) || q.Opis.Contains(search.ToLower()) || q.NumerFaktury.Contains(search.ToLower()) ); } if (stanNaDzien.HasValue) { Query = Query.Where(p => p.TerminPlatnosci <= stanNaDzien.Value); } if (idKontrahenta.HasValue) { Query = Query.Where(q => q.IdKontrahenta == idKontrahenta); } return(new PagedSearchedQueryResult <NieuregulowanaFakturaZakupu>(Query, page, pageSize, search)); }
public void GetFilterOrDefaultShouldReturnValueWhenFilterDefinedInQuery() { const string value = "s"; var result = new Http.Rest.Query(QueryStringParser.Parse($"?filter[name]={value}")).GetFilterOrDefault("name", "s"); Assert.Equal(value, result); }
public void GetFilterOrDefaultShouldReturnDefaultWhenFilterNotDefinedInQuery() { const string defaultValue = "s"; var result = new Http.Rest.Query(QueryStringParser.Parse("")).GetFilterOrDefault("name", defaultValue); Assert.Equal(defaultValue, result); }
/// <summary> /// Outputs GET request compatible set of hidden input fields representing the current state of the parameters object /// </summary> /// <typeparam name="TModel">object containing parameters (i.e. SearchResult)</typeparam> /// <typeparam name="TParameters">parameters</typeparam> /// <returns>Html string containing a set of hidden input types representing the current state of the parameters object</returns> public static IHtmlString SearchifyMvcRenderParametersAsHiddenInput <TModel, TParameters>(this HtmlHelper <TModel> htmlHelper, Expression <Func <TModel, TParameters> > expression) where TParameters : Parameters, new() { var nvc = QueryStringParser <TParameters> .Parse(expression.Compile()(htmlHelper.ViewData.Model)); var tags = string.Join(Environment.NewLine, nvc.AllKeys.SelectMany(key => HiddenParameter(key, nvc.GetValues(key))).ToList()); return(MvcHtmlString.Create(tags)); }
public void ParseQueryStringShouldReturnArrayValue() { var url = new Url("GET", "https://localhost:80/?field=asd&field=acd&field=axd"); var query = QueryStringParser.Parse(url.Query); Assert.Equal("axd", query.GetValue("field")); Assert.Equal(new[] { "asd", "acd", "axd" }, query.GetValues("field")); }
protected override async Task <bool> GetHtmlAsync(IOwinEnvironment context, IClient client, CancellationToken cancellationToken) { var queryString = QueryStringParser.Parse(context.Request.QueryString, _logger); var stateToken = queryString.GetString("state"); var parsedStateToken = new StateTokenParser(client, _configuration.Client.ApiKey, stateToken, _logger); if (!parsedStateToken.Valid) { _logger.Warn("State token was invalid", nameof(GithubCallbackRoute)); return(await HttpResponse.Redirect(context, SocialExecutor.CreateErrorUri(_configuration.Web.Login, stateToken: null))); } var code = queryString.GetString("code"); if (string.IsNullOrEmpty(code)) { _logger.Warn("Social code was empty", nameof(GithubCallbackRoute)); return(await HttpResponse.Redirect(context, SocialExecutor.CreateErrorUri(_configuration.Web.Login, stateToken))); } var accessToken = await ExchangeCodeAsync(code, cancellationToken); if (string.IsNullOrEmpty(accessToken)) { _logger.Warn("Exchanged access token was null", source: nameof(GithubCallbackRoute)); return(await HttpResponse.Redirect(context, SocialExecutor.CreateErrorUri(_configuration.Web.Login, stateToken))); } var application = await client.GetApplicationAsync(_configuration.Application.Href, cancellationToken); var socialExecutor = new SocialExecutor(client, _configuration, _handlers, _logger); try { var providerRequest = client.Providers() .Github() .Account() .SetAccessToken(accessToken) .Build(); var loginResult = await socialExecutor.LoginWithProviderRequestAsync(context, providerRequest, cancellationToken); await socialExecutor.HandleLoginResultAsync( context, application, loginResult, cancellationToken); return(await socialExecutor.HandleRedirectAsync(client, context, loginResult, parsedStateToken.Path, cancellationToken)); } catch (Exception ex) { _logger.Warn($"Got '{ex.Message}' during social login request", source: nameof(GithubCallbackRoute)); return(await HttpResponse.Redirect(context, SocialExecutor.CreateErrorUri(_configuration.Web.Login, stateToken))); } }
public static string SearchifyMvcSearchAction <TParameters>(this UrlHelper urlHelper, TParameters parameters) where TParameters : Parameters, new() { var nvc = QueryStringParser <TParameters> .Parse(parameters); var currentNvc = HttpUtility.ParseQueryString(urlHelper.RequestContext.HttpContext.Request.Url?.Query ?? ""); var searchNvc = MergeAndSortNameValueCollection <TParameters>(currentNvc, nvc); return($"{(searchNvc.HasKeys() ? "?" : "")}{searchNvc}"); }
protected override async Task <bool> GetHtmlAsync(IOwinEnvironment context, IClient client, CancellationToken cancellationToken) { var queryString = QueryStringParser.Parse(context.Request.QueryString, _logger); var viewModelBuilder = new RegisterFormViewModelBuilder(client, _configuration, queryString, null, _logger); var registerViewModel = viewModelBuilder.Build(); await RenderViewAsync(context, _configuration.Web.Register.View, registerViewModel, cancellationToken); return(true); }
public static string SearchifyMvcSearchAction <TParameters>(this UrlHelper urlHelper, string actionName, string controllerName, TParameters parameters) where TParameters : Parameters, new() { var nvc = QueryStringParser <TParameters> .Parse(parameters); var baseUri = new Uri($"http://tempuri.org{urlHelper.Action(actionName, controllerName)}"); var searchNvc = MergeAndSortNameValueCollection <TParameters>(HttpUtility.ParseQueryString(baseUri.Query), nvc); return($"{baseUri.GetComponents(UriComponents.Path, UriFormat.Unescaped)}{(searchNvc.HasKeys() ? "?" : "")}{searchNvc}"); }
public IEnumerable<Tuple<int, NameValueCollection>> PagingGroup(int range = 5) { var fromPage = (Page - range) <= 0 ? 1 : Page - range; var toPage = (Page + range) > Pages ? Pages : Page + range; for (var page = fromPage; page <= toPage; page++) { var nvc = QueryStringParser<TParameters>.Parse(ForPage(page)); yield return new Tuple<int, NameValueCollection>(page, nvc); } }
public IEnumerable<Tuple<int, Dictionary<string, Microsoft.Extensions.Primitives.StringValues>>> PagingGroup(int range = 5) { var fromPage = (Page - range) <= 0 ? 1 : Page - range; var toPage = (Page + range) > Pages ? Pages : Page + range; for (var page = fromPage; page <= toPage; page++) { var nvc = QueryStringParser<TParameters>.Parse(ForPage(page)); yield return new Tuple<int, Dictionary<string, Microsoft.Extensions.Primitives.StringValues>>(page, nvc); } }
public void Parse_WithQuestionMark() { // Assign string query = "?"; // Act var result = QueryStringParser.Parse(query); // Assert result.Should().Equal(new Dictionary <string, WireMockList <string> >()); }
public void Parse_WithMultipleParamWithSameKey() { // Assign string query = "?key=value&key=anotherValue"; // Act var result = QueryStringParser.Parse(query); // Assert result.Count.Should().Be(1); result["key"].Should().Equal(new WireMockList <string>(new[] { "value", "anotherValue" })); }
public void Parse_With1ParamNoValueWithEqualSign() { // Assign string query = "?empty="; // Act var result = QueryStringParser.Parse(query); // Assert result.Count.Should().Be(1); result["empty"].Should().Equal(new WireMockList <string>()); }
public void Parse_With1Param() { // Assign string query = "?key=bla/blub.xml"; // Act var result = QueryStringParser.Parse(query); // Assert result.Count.Should().Be(1); result["key"].Should().Equal(new WireMockList <string>("bla/blub.xml")); }
public void Parse_With1ParamContainingSpacesAndEqualSign() { // Assign string query = "?q=SELECT Id from User where username='******'"; // Act var result = QueryStringParser.Parse(query); // Assert result.Count.Should().Be(1); result["q"].Should().Equal(new WireMockList <string>("SELECT Id from User where username='******'")); }