Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
158 commits
Select commit Hold shift + click to select a range
2e181f7
Merge remote-tracking branch 'ya/develop' into develop
Nov 29, 2024
14570b3
Merge remote-tracking branch 'upstream/develop' into develop
Dec 26, 2024
5c6a76f
Merge remote-tracking branch 'ya/develop' into develop
Feb 26, 2025
6b4f79a
Merge remote-tracking branch 'ya/develop' into develop
Apr 18, 2025
ecc59f5
Merge remote-tracking branch 'ya/develop' into develop
Apr 21, 2025
adc87a1
Merge remote-tracking branch 'upstream/develop' into develop
Jul 24, 2025
b5e54e7
feat core: remove deprecated Statement()
apolukhin Jul 24, 2025
bd9ee64
feat libraries: replace deprecated GetName() with GetOptionalName()
apolukhin Jul 25, 2025
f971e07
refactor dynamic_config: move public testsuite classes from pytest pl…
Jul 25, 2025
9c39943
feat userver: set span level=debug for set_config queries
Jul 25, 2025
60d6f44
feat userver/postgresql: add prepared statements override toggle in c…
Jul 25, 2025
122dd84
feat core: remove deprecated GetName()
apolukhin Jul 25, 2025
aaebbbf
feat secdist: update-period defaults to 10s
segoon Jul 28, 2025
ed47ac4
feat chaotic: "format: uri"
segoon Jul 28, 2025
43d48c5
refactor grpc: cleanup client CallState
kpavlov00 Jul 28, 2025
6da1866
feat core: avoid dynamic initialization in storages::Query while keep…
apolukhin Jul 28, 2025
63f3634
feat kafka: bump kafka recipe version to 4.0.0
Jul 28, 2025
3bd59de
feat clickhouse: add parameter store
Jul 28, 2025
cbb6019
feat grpc: added client certs
aklyuchev86 Jul 28, 2025
9fd73bb
feat redis: add sentinel_password option and make sure that it work f…
tysion Jul 28, 2025
cb3053f
fix grpc: fix test 'DeadlineToTimespec.Base'
kpavlov00 Jul 28, 2025
583e0dd
refactor grpc: introduce MiddlewarePipeline
kpavlov00 Jul 28, 2025
a48d540
docs userver: translate dynconfigs desc to English
segoon Jul 28, 2025
4278aee
refactor kafka: use utils::zstring_view for topic name
fdr400 Jul 29, 2025
570c59f
feat userver: generate docs for dynamic configs
segoon Jul 29, 2025
3f57030
test kafka: switch a real kafka in to mock
Jul 29, 2025
7a2586b
feat websocket: add ping poing logic
Jul 29, 2025
31ae52e
feat core: add support for Google Benchmark ASLR-disabling feature
botanegg Jul 29, 2025
1b84485
Revert commit rXXXXXX, feat redis: add sentinel_password option and m…
Jul 29, 2025
a889902
test kafka: remove unittests non-mock Kafka support
fdr400 Jul 30, 2025
922af0d
feat grpc: add lowlevel client tests
fdr400 Jul 30, 2025
e05f886
fix grpc-protovalidate: wrap ValidatorFactory with ThreadLocal
TTPO100AJIEX Jul 30, 2025
c6e5d8c
feat redis: add sentinel_password option and make sure that it work f…
apolukhin Jul 30, 2025
5669f5f
fix grpc: do not test unix-socket + TLS for MacOS
fdr400 Jul 30, 2025
092c4aa
feat CI: bump Kafka version to 4.0 in CI checks
MichaelKab Jul 30, 2025
cbd203a
fix grpc: remove unused setting from config schema
kpavlov00 Jul 30, 2025
5b37af6
feat docs: update docs to answer recent user questions
apolukhin Jul 31, 2025
b889acb
cc grpc: reorder ClientFactoryComponent config
kpavlov00 Jul 31, 2025
561fbbe
feat integration-tests: remove integration tests launch
Jul 31, 2025
23f7b74
fix kafka: link kafka-utest with rdkafka target (for includes)
fdr400 Jul 31, 2025
97d3c11
refactor grpc: mv tracing.hpp to includes
kpavlov00 Jul 31, 2025
0c4130a
feat grpc: add PerformUnaryCall
kpavlov00 Aug 1, 2025
1acf3a8
fix universal: link with corrent benchmark target
fdr400 Aug 1, 2025
2882de8
feat userver: revert integration tests
Aug 1, 2025
059c9fe
feat kafka: add GetTopics for ConsumerScope
fdr400 Aug 1, 2025
9f57b67
test grpc-client: add retries and RST_STREAM lowlevel tests
fdr400 Aug 1, 2025
0c4f0d6
feat proto35: learn clients to include structs
Aug 4, 2025
e8ae24a
feat chaotic: simplify third-party types usage
segoon Aug 4, 2025
1ff442e
feat docs: update docs to answer more user questions
apolukhin Aug 4, 2025
57bc470
cc userver: rename kIsDetected to IsDetected
TTPO100AJIEX Aug 5, 2025
40a134e
feat grpc: upd functional_tests/middleware_client, add retry count check
kpavlov00 Aug 5, 2025
2c7c138
feat redis: add logs for CLUSTER SLOT parsing errors
apolukhin Aug 5, 2025
c5088d6
feat grpc: add empty proto structs generation
ArkadyRudenko Aug 5, 2025
424bc83
cc core: better HttpRequest docs
ArkadyRudenko Aug 5, 2025
3000e23
feat proto-struct: add child directory
ArkadyRudenko Aug 6, 2025
bfce84a
feat universal: work with multiple string_views in crypto
apolukhin Aug 6, 2025
a434bf7
feat core: add the core of the transaction tracker
Aug 6, 2025
33caf0a
fix grpc: fix test DeadlineStatsTests.ClientDeadlineUpdated
kpavlov00 Aug 6, 2025
db9d98d
bug websocket: properly mask received frames
Aug 6, 2025
046b779
feat grpc: introduce UnaryCall with retries
kpavlov00 Aug 6, 2025
4c62865
cc core: rm static_cast
ArkadyRudenko Aug 7, 2025
7bcd3f6
feat proto-structs: generate enums and basic fields
Anton3 Aug 7, 2025
026c6d5
bug docs: fix building dynamic config pages
apolukhin Aug 7, 2025
1878095
fix build: bump macos python
fdr400 Aug 7, 2025
a546282
feat kafka: support SSL authentication
Aug 7, 2025
be42565
feat core: non blocking receive for TLS wrapper
Aug 7, 2025
8f3bd7b
fix grpc: fix UnaryCall::GetContext::GetSpan race
kpavlov00 Aug 7, 2025
72794fc
feat grpc: support UnaryCall TryCancel
kpavlov00 Aug 9, 2025
d74c0cc
fix grpc: fix CallContext::GetClientContext safety
kpavlov00 Aug 9, 2025
01d18dc
feat redis: log cluster topology changes
apolukhin Aug 11, 2025
11e9b77
feat ci: update ci-conan.yml to test on pure environment without addi…
apolukhin Aug 11, 2025
5bc3afa
fix grpc: correct CallContext::GetClientContext invariants
kpavlov00 Aug 11, 2025
9e6aeb5
refactor grpc: add ResponseFuture::Cancel
kpavlov00 Aug 11, 2025
ff556ef
feat core: introduce USERVER_ENABLE_STACK_USAGE_MONITOR
segoon Aug 11, 2025
a8098ba
feat chaotic: x-taxi-handler-codegen
segoon Aug 11, 2025
fc1c8b7
feat chaotic: support $ref to $ref in oneOf
segoon Aug 12, 2025
ca3be75
feat chaotic: honour operationId
segoon Aug 12, 2025
78c08d5
feat chaotic: compile schemaless files too
segoon Aug 12, 2025
1908a6a
feat chaotic: support x-taxi-middleware in swagger
segoon Aug 12, 2025
1f8cf7a
feat grpc: append RpcType to StaticServiceMetadata
kpavlov00 Aug 12, 2025
8fe5d3e
feat userver: support in uPg parse cpp enum to pg text
Aug 12, 2025
a28cd58
feat proto-structs: add include bundles
Anton3 Aug 12, 2025
edc1539
feat chaotic: support x-taxi-cpp-type: storages::postgres::*
segoon Aug 13, 2025
dd4c05a
feat chaotic: ignore x-taxi-py3
segoon Aug 13, 2025
45ccdc0
feat chaotic: ignore x-taxi-go-*
segoon Aug 13, 2025
68b12fb
feat chaotic: support in: body from swagger 2.0
segoon Aug 13, 2025
1c37f20
feat chaotic: ignore x-taxi-handler-tag for client
segoon Aug 13, 2025
8b5f3c6
feat chaotic: implement title
segoon Aug 13, 2025
e2be125
feat chaotic: std::intXX_t
segoon Aug 13, 2025
2ff07e6
feat proto-structs: settle directory hierarchy for tests
Aug 13, 2025
409d2ce
feat chaotic: use full path in generated files
segoon Aug 13, 2025
7a617a0
feat chaotic: implement x-taxi-cpp-name in parameters
segoon Aug 13, 2025
926880b
feat clients: allow overriding Plugin list in codegen clients
Aug 13, 2025
0c4d83d
feat cmake: drop unsupported python versions < 3.9
segoon Aug 13, 2025
ebc2371
feat userver: add trx tracker global disabler
Aug 14, 2025
1c7a88e
feat chaotic: better error msg in translator
segoon Aug 14, 2025
66b27f4
cc chaotic: eliminate dead code
segoon Aug 14, 2025
d55cf7e
feat chaotic: implement PEP 585
segoon Aug 14, 2025
1c1e8b1
feat docs: add SlugKit logo and fix minor issues with links
apolukhin Aug 14, 2025
1da30a5
feat proto-structs: add basic support for oneof fields
Anton3 Aug 14, 2025
f6c11e9
feat chaotic: handle non-string headers in responses
segoon Aug 14, 2025
3daa57c
feat chaotic: support "x-usrv-" tags
segoon Aug 14, 2025
10e8763
feat chaotic: x-taxi-middlewares.eats: v1
segoon Aug 15, 2025
2cd1757
feat userver/ydb: make ydb transaction name a literal string
Aug 15, 2025
bb7208c
feat userver: add CheckNoTransactions to codegen http handles
Aug 15, 2025
dc394ea
feat chaotic: use Ref class for $ref parsing
segoon Aug 15, 2025
4b409d6
feat chaotic: support nullable oneOf
segoon Aug 15, 2025
35f71f3
feat userver/configs: add prepared_statements_enabled field to comman…
Aug 15, 2025
cd895de
fix client: pass location in Request::perform
Aug 15, 2025
ba23a01
feat userver/proto-structs: implement the library part of proto structs
Aug 15, 2025
dbfaad3
feat grpc: support Streaming method retries
kpavlov00 Aug 15, 2025
bf1c3db
cc uservices: enable templates & namespaces readability-identifier-na…
TTPO100AJIEX Aug 15, 2025
e3e7ba0
fix grpc: drop excessive info log
kpavlov00 Aug 15, 2025
4fd0ce5
cc grpc: fix tracing_metadata test
ArkadyRudenko Aug 18, 2025
2b329a4
bug chaotic: do not fail with -DUSERVER_CHAOTIC_FORMAT:BOOL=OFF
segoon Aug 18, 2025
3d64de9
bug crypto: const-time signature check
segoon Aug 18, 2025
51daf25
feat chaotic: implement 'x-taxi-query-log-mode: hide'
segoon Aug 18, 2025
5ae415c
cc uservices: enable Class, Struct, Enum & Union readability-identifi…
TTPO100AJIEX Aug 18, 2025
817712c
cc userver: remove default_ns namespace
TTPO100AJIEX Aug 18, 2025
989f177
feat cmake: by-components cpack install
segoon Aug 18, 2025
4c5d84b
feat chaotic: implement x-taxi-cpp-type: userver::utils::StrongTypedef<>
segoon Aug 18, 2025
009af36
feat chaotic: implement type: file
segoon Aug 18, 2025
a065e2b
cc chaotic: deduplicate tests code
segoon Aug 18, 2025
3d7a262
feat core: speed up periodic_task.hpp
segoon Aug 18, 2025
e2eb5d9
bug chaotic: fix boost::uuid inside std::unordered_set
segoon Aug 18, 2025
257a05f
fix proto-structs: minor fixes for oneof codegen
Anton3 Aug 18, 2025
84fd648
feat chaotic: implement bank-authproxy
segoon Aug 18, 2025
4109fc7
bug websockets: fix UB
Aug 19, 2025
ada9e72
feat cmake: include intercomponent install dependencies
segoon Aug 19, 2025
46166a4
feat chaotic: add test to invalid $ref
segoon Aug 19, 2025
5663466
cc chaotic: document middlewares
segoon Aug 20, 2025
b8bfc6c
cc proto-structs: add more tests for oneof
Anton3 Aug 20, 2025
7cfb57f
cc proto-structs: clean up InheritsFromInstantiation implementation
Anton3 Aug 20, 2025
1645279
feat userver: add service start-ms metric
Aug 20, 2025
aefa1b1
feat proto-structs: remove boilerplate in common enum name patterns
Anton3 Aug 20, 2025
0b22960
feature: support exponential format in decimal64::Decimal::FromString…
Aug 20, 2025
ed88adc
feat mongo: support the collection.distinct operation
Aug 20, 2025
fad60c1
feat grpc: add tests on metadata usage and documentation for them
Aug 20, 2025
d1d217d
cc grpc: document how to complete client-side streaming RPCs gracefully
Aug 21, 2025
3d4934a
feat engine: invalidate cancelled task after Get()
Aug 21, 2025
30d2682
fix proto-structs: fix concept names resolving
4JustMe4 Aug 21, 2025
b9a1835
feat docs: add info on mirrors
apolukhin Aug 21, 2025
89e269f
feat proto-structs: implement map types
Anton3 Aug 21, 2025
0f703a3
cc userver: document distro maintainer's role
segoon Aug 21, 2025
ad0e19e
feat docs: improve version change widget
Lone-Marshal Aug 22, 2025
9d9d2aa
feat userver: generate debian/ & add test for .deb packages installation
segoon Aug 22, 2025
da575b2
feat proto-structs: generate proper oneof classes
Anton3 Aug 22, 2025
6b7c4f3
cc userver: enable Member and Method readability-identifier-naming
TTPO100AJIEX Aug 22, 2025
2460839
cc chaotic: improve in-code documentation
segoon Aug 22, 2025
5239844
feat cmake: add Fedora github CI workflow
segoon Aug 23, 2025
1161513
feat docs: minor updates for the docs building scripts
apolukhin Aug 25, 2025
53b581b
cc kafka: fix -Wpointer-bool-conversion in tests
4JustMe4 Aug 25, 2025
a0bb0a4
feat concurrent: allow zero-sized items in GenericQueue
Aug 25, 2025
c5543c0
cc userver: fixes for debian/ generator
segoon Aug 25, 2025
e584ce9
feat redis: add Client::GenericCommand
Aug 25, 2025
4237328
Fix problem with /endpoint?args parameters without =
mistergad Aug 26, 2025
3d9ac70
Added unit test for parseArgs
Oct 8, 2025
f2eccaf
Merge remote-tracking branch 'origin/develop' into fix/http-args-parse
Oct 8, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions universal/src/http/parser/http_request_parse_args.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,15 @@ void ParseAndConsumeArgs(std::string_view args, ArgsConsumer handler) {
USERVER_NAMESPACE::http::parser::UrlDecode(value)
);
}
} else {
key_end = ptr;
const std::string_view key(key_begin, key_end - key_begin);
handler(
USERVER_NAMESPACE::http::parser::UrlDecode(key),
USERVER_NAMESPACE::http::parser::UrlDecode("")
);
}

parse_key = true;
key_begin = ptr + 1;
continue;
Expand Down
28 changes: 28 additions & 0 deletions universal/src/http/parser/http_request_parse_args_test.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#include <string>
#include <string_view>

#include <gtest/gtest.h>

#include <userver/http/parser/http_request_parse_args.hpp>
#include <utils/impl/internal_tag.hpp>

#include <userver/utils/encoding/hex.hpp>

USERVER_NAMESPACE_BEGIN

using namespace http::parser;


TEST(ParseArgs, Basic) {
constexpr std::string_view params = "a=123&b=456&c1=someText&x";
std::unordered_map<std::string, std::vector<std::string>, utils::StrCaseHash> result;
ParseArgs(params, result);

EXPECT_EQ(result.at("a").size(), 1);
EXPECT_EQ(result.at("a")[0], "123");
EXPECT_EQ(result.at("b")[0], "456");
EXPECT_EQ(result.at("c1")[0], "someText");
EXPECT_EQ(result.at("x")[0], "");
}

USERVER_NAMESPACE_END