| 557 | } |
| 558 | |
| 559 | std::tuple<std::variant<std::string, ada::url_pattern_init>, |
| 560 | std::optional<std::string>> |
| 561 | parse_inputs_array(ondemand::array& inputs) { |
| 562 | std::cout << "inputs: " << inputs.raw_json().value() << std::endl; |
| 563 | inputs.reset(); |
| 564 | |
| 565 | std::variant<std::string, ada::url_pattern_init> first_param = |
| 566 | ada::url_pattern_init{}; |
| 567 | std::optional<std::string> base_url{}; |
| 568 | |
| 569 | size_t index = 0; |
| 570 | for (auto input : inputs) { |
| 571 | if (index == 0) { |
| 572 | if (input.type() == ondemand::json_type::string) { |
| 573 | std::string_view value; |
| 574 | EXPECT_FALSE(input.get_string().get(value)); |
| 575 | first_param = std::string(value); |
| 576 | index++; |
| 577 | continue; |
| 578 | } |
| 579 | |
| 580 | ondemand::object attribute; |
| 581 | EXPECT_FALSE(input.get_object().get(attribute)); |
| 582 | // We always know that this function is called with url pattern init. |
| 583 | auto parse_result = parse_init(attribute); |
| 584 | if (parse_result.has_value()) { |
| 585 | first_param = std::get<ada::url_pattern_init>(*parse_result); |
| 586 | } |
| 587 | // If parse_init returns nullopt (broken surrogates), keep default empty |
| 588 | // init |
| 589 | index++; |
| 590 | continue; |
| 591 | } |
| 592 | |
| 593 | std::string_view value; |
| 594 | EXPECT_FALSE(input.get_string().get(value)); |
| 595 | base_url = std::string(value); |
| 596 | index++; |
| 597 | } |
| 598 | |
| 599 | return {first_param, base_url}; |
| 600 | } |
| 601 | |
| 602 | ada::url_pattern_component_result parse_component_result( |
| 603 | ondemand::object& component, bool& skip_test) { |
no test coverage detected