refactor: use api_compat for rpc (#7995)

* fix: legacy RPC tag should ignore non-integers

* refactor: delegate legacy RPC callback to api-compat

* refactor: move `TR_KEY_alt_speed_down_kebab` handling

* refactor: move `TR_KEY_alt_speed_enabled_kebab` handling

* refactor: move `TR_KEY_alt_speed_time_begin_kebab` handling

* refactor: move `TR_KEY_alt_speed_time_day_kebab` handling

* refactor: move `TR_KEY_alt_speed_time_enabled_kebab` handling

* refactor: move `TR_KEY_alt_speed_time_end_kebab` handling

* refactor: move `TR_KEY_alt_speed_up_kebab` handling

* refactor: move `TR_KEY_anti_brute_force_enabled_kebab` handling

* refactor: move `TR_KEY_anti_brute_force_threshold_kebab` handling

* refactor: move `TR_KEY_blocklist_enabled_kebab` handling

* refactor: move `TR_KEY_blocklist_size_kebab` handling

* refactor: move `TR_KEY_blocklist_url_kebab` handling

* refactor: move `TR_KEY_cache_size_mb_kebab` handling

* refactor: move `TR_KEY_config_dir_kebab` handling

* refactor: move `TR_KEY_default_trackers_kebab` handling

* refactor: move `TR_KEY_dht_enabled_kebab` handling

* refactor: move `TR_KEY_download_dir_kebab` handling

* refactor: move `TR_KEY_download_dir_free_space_kebab` handling

* refactor: move `TR_KEY_download_queue_enabled_kebab` handling

* refactor: move `TR_KEY_download_queue_size_kebab` handling

* refactor: move `TR_KEY_idle_seeding_limit_kebab` handling

* refactor: move `TR_KEY_idle_seeding_limit_enabled_kebab` handling

* refactor: move `TR_KEY_incomplete_dir_kebab` handling

* refactor: move `TR_KEY_incomplete_dir_enabled_kebab` handling

* refactor: move `TR_KEY_lpd_enabled_kebab` handling

* refactor: move `TR_KEY_peer_limit_global_kebab` handling

* refactor: move `TR_KEY_peer_limit_per_torrent_kebab` handling

* refactor: move `TR_KEY_peer_port_kebab` handling

* refactor: move `TR_KEY_peer_port_random_on_start_kebab` handling

* refactor: move `TR_KEY_pex_enabled_kebab` handling

* refactor: move `TR_KEY_port_forwarding_enabled_kebab` handling

* refactor: move `TR_KEY_queue_stalled_enabled_kebab` handling

* refactor: move `TR_KEY_queue_stalled_minutes_kebab` handling

* refactor: move `TR_KEY_rename_partial_files_kebab` handling

* refactor: move `TR_KEY_rpc_version_kebab` handling

* refactor: move `TR_KEY_rpc_version_minimum_kebab` handling

* refactor: move `TR_KEY_rpc_version_semver_kebab` handling

* refactor: move `TR_KEY_script_torrent_added_enabled_kebab` handling

* refactor: move `TR_KEY_script_torrent_added_filename_kebab` handling

* refactor: move `TR_KEY_script_torrent_done_enabled_kebab` handling

* refactor: move `TR_KEY_script_torrent_done_filename_kebab` handling

* refactor: move `TR_KEY_script_torrent_done_seeding_enabled_kebab` handling

* refactor: move `TR_KEY_script_torrent_done_seeding_filename_kebab` handling

* refactor: remove `tr_quark_convert` usage for `tr_session::Scripts`

* refactor: move `TR_KEY_seed_ratio_limit_camel` handling

* refactor: move `TR_KEY_seed_ratio_limited_camel` handling

* refactor: move `TR_KEY_seed_queue_enabled_kebab` handling

* refactor: move `TR_KEY_seed_queue_size_kebab` handling

* refactor: move `TR_KEY_session_id_kebab` handling

* refactor: move `TR_KEY_speed_limit_down_kebab` handling

* refactor: move `TR_KEY_speed_limit_down_enabled_kebab` handling

* refactor: move `TR_KEY_speed_limit_up_kebab` handling

* refactor: move `TR_KEY_speed_limit_up_enabled_kebab` handling

* refactor: move `TR_KEY_start_added_torrents_kebab` handling

* refactor: move `TR_KEY_tcp_enabled_kebab` handling

* refactor: move `TR_KEY_trash_original_torrent_files_kebab` handling

* refactor: move `TR_KEY_utp_enabled_kebab` handling

* refactor: move `TR_KEY_recently_active_kebab` handling

* refactor: move `TR_KEY_delete_local_data_kebab` handling

* refactor: move `TR_KEY_activity_date_camel` handling

* refactor: move `TR_KEY_added_date_camel` handling

* refactor: move `TR_KEY_bandwidth_priority_camel` handling

* refactor: move `TR_KEY_bytes_completed_camel` handling

* refactor: move `TR_KEY_corrupt_ever_camel` handling

* refactor: move `TR_KEY_date_created_camel` handling

* refactor: move `TR_KEY_desired_available_camel` handling

* refactor: move `TR_KEY_done_date_camel` handling

* refactor: move `TR_KEY_download_dir_camel` handling

* refactor: move `TR_KEY_download_limit_camel` handling

* refactor: move `TR_KEY_download_limited_camel` handling

* refactor: move `TR_KEY_downloaded_ever_camel` handling

* refactor: move `TR_KEY_edit_date_camel` handling

* refactor: move `TR_KEY_error_string_camel` handling

* refactor: move `TR_KEY_eta_idle_camel` handling

* refactor: move `TR_KEY_file_stats_camel` handling

* refactor: move `TR_KEY_file_count_kebab` handling

* refactor: move `TR_KEY_hash_string_camel` handling

* refactor: move `TR_KEY_have_unchecked_camel` handling

* refactor: move `TR_KEY_have_valid_camel` handling

* refactor: move `TR_KEY_honors_session_limits_camel` handling

* refactor: move `TR_KEY_is_finished_camel` handling

* refactor: move `TR_KEY_is_private_camel` handling

* refactor: move `TR_KEY_is_stalled_camel` handling

* refactor: move `TR_KEY_left_until_done_camel` handling

* refactor: move `TR_KEY_magnet_link_camel` handling

* refactor: move `TR_KEY_manual_announce_time_camel` handling

* refactor: move `TR_KEY_max_connected_peers_camel` handling

* refactor: move `TR_KEY_metadata_percent_complete_camel` handling

* refactor: move `TR_KEY_peer_limit_kebab` handling

* refactor: move `TR_KEY_peers_connected_camel` handling

* refactor: move `TR_KEY_peers_from_camel` handling

* refactor: move `TR_KEY_peers_getting_from_us_camel` handling

* refactor: move `TR_KEY_peers_sending_to_us_camel` handling

* refactor: move `TR_KEY_percent_complete_camel` handling

* refactor: move `TR_KEY_percent_done_camel` handling

* refactor: move `TR_KEY_piece_count_camel` handling

* refactor: move `TR_KEY_piece_size_camel` handling

* refactor: move `TR_KEY_primary_mime_type_kebab` handling

* refactor: move `TR_KEY_queue_position_camel` handling

* refactor: move `TR_KEY_rate_download_camel` handling

* refactor: move `TR_KEY_rate_upload_camel` handling

* refactor: move `TR_KEY_recheck_progress_camel` handling

* refactor: move `TR_KEY_seconds_downloading_camel` handling

* refactor: move `TR_KEY_seconds_seeding_camel` handling

* refactor: move `TR_KEY_seed_idle_limit_camel` handling

* refactor: move `TR_KEY_seed_idle_mode_camel` handling

* refactor: move `TR_KEY_seed_ratio_mode_camel` handling

* refactor: move `TR_KEY_size_when_done_camel` handling

* refactor: move `TR_KEY_start_date_camel` handling

* refactor: move `TR_KEY_torrent_file_camel` handling

* refactor: move `TR_KEY_total_size_camel` handling

* refactor: move `TR_KEY_tracker_list_camel` handling

* refactor: move `TR_KEY_tracker_stats_camel` handling

* refactor: move `TR_KEY_upload_limit_camel` handling

* refactor: move `TR_KEY_upload_limited_camel` handling

* refactor: move `TR_KEY_upload_ratio_camel` handling

* refactor: move `TR_KEY_uploaded_ever_camel` handling

* refactor: move `TR_KEY_webseeds_sending_to_us_camel` handling

* refactor: move `TR_KEY_announce_state_camel` handling

* refactor: move `TR_KEY_download_count_camel` handling

* refactor: move `TR_KEY_has_announced_camel` handling

* refactor: move `TR_KEY_has_scraped_camel` handling

* refactor: move `TR_KEY_is_backup_camel` handling

* refactor: move `TR_KEY_last_announce_peer_count_camel` handling

* refactor: move `TR_KEY_last_announce_result_camel` handling

* refactor: move `TR_KEY_last_announce_start_time_camel` handling

* refactor: move `TR_KEY_last_announce_succeeded_camel` handling

* refactor: move `TR_KEY_last_announce_time_camel` handling

* refactor: move `TR_KEY_last_announce_timed_out_camel` handling

* refactor: move `TR_KEY_last_scrape_result_camel` handling

* refactor: move `TR_KEY_last_scrape_start_time_camel` handling

* refactor: move `TR_KEY_last_scrape_succeeded_camel` handling

* refactor: move `TR_KEY_last_scrape_time_camel` handling

* refactor: move `TR_KEY_last_scrape_timed_out_camel` handling

* refactor: move `TR_KEY_leecher_count_camel` handling

* refactor: move `TR_KEY_next_announce_time_camel` handling

* refactor: move `TR_KEY_next_scrape_time_camel` handling

* refactor: move `TR_KEY_scrape_state_camel` handling

* refactor: move `TR_KEY_seeder_count_camel` handling

* refactor: move `TR_KEY_client_is_choked_camel` handling

* refactor: move `TR_KEY_client_is_interested_camel` handling

* refactor: move `TR_KEY_client_name_camel` handling

* refactor: move `TR_KEY_flag_str_camel` handling

* refactor: move `TR_KEY_is_downloading_from_camel` handling

* refactor: move `TR_KEY_is_encrypted_camel` handling

* refactor: move `TR_KEY_is_incoming_camel` handling

* refactor: move `TR_KEY_is_utp_camel` handling

* refactor: move `TR_KEY_is_uploading_to_camel` handling

* refactor: move `TR_KEY_peer_is_choked_camel` handling

* refactor: move `TR_KEY_peer_is_interested_camel` handling

* refactor: move `TR_KEY_rate_to_client_camel` handling

* refactor: move `TR_KEY_rate_to_peer_camel` handling

* refactor: move `TR_KEY_from_cache_camel` handling

* refactor: move `TR_KEY_from_dht_camel` handling

* refactor: move `TR_KEY_from_incoming_camel` handling

* refactor: move `TR_KEY_from_lpd_camel` handling

* refactor: move `TR_KEY_from_ltep_camel` handling

* refactor: move `TR_KEY_from_pex_camel` handling

* refactor: move `TR_KEY_from_pex_camel` handling

* refactor: move `TR_KEY_tracker_add_camel` handling

* refactor: move `TR_KEY_tracker_remove_camel` handling

* refactor: move `TR_KEY_tracker_replace_camel` handling

* refactor: move `TR_KEY_downloaded_bytes_camel` handling

* refactor: move `TR_KEY_files_added_camel` handling

* refactor: move `TR_KEY_seconds_active_camel` handling

* refactor: move `TR_KEY_session_count_camel` handling

* refactor: move `TR_KEY_uploaded_bytes_camel` handling

* refactor: move `TR_KEY_active_torrent_count_camel` handling

* refactor: move `TR_KEY_cumulative_stats_kebab` handling

* refactor: move `TR_KEY_cumulative_stats_kebab` handling

* refactor: move `TR_KEY_download_speed_camel` handling

* refactor: move `TR_KEY_paused_torrent_count_camel` handling

* refactor: move `TR_KEY_torrent_count_camel` handling

* refactor: move `TR_KEY_upload_speed_camel` handling

* refactor: move `TR_KEY_files_unwanted_kebab` handling

* refactor: move `TR_KEY_files_wanted_kebab` handling

* refactor: move `TR_KEY_priority_high_kebab` handling

* refactor: move `TR_KEY_priority_low_kebab` handling

* refactor: move `TR_KEY_priority_normal_kebab` handling

* refactor: move `TR_KEY_port_is_open_kebab` handling

* refactor: move `TR_KEY_torrent_duplicate_kebab` handling

* refactor: move `TR_KEY_torrent_added_kebab` handling

* refactor: move `TR_KEY_memory_bytes_kebab` handling

* refactor: move `TR_KEY_memory_units_kebab` handling

* refactor: move `TR_KEY_size_bytes_kebab` handling

* refactor: move `TR_KEY_size_units_kebab` handling

* refactor: move `TR_KEY_speed_bytes_kebab` handling

* refactor: move `TR_KEY_speed_units_kebab` handling

* refactor: remove DoneCb

* perf: adjust reserve capacity
This commit is contained in:
Yat Ho
2025-12-25 03:29:59 +08:00
committed by GitHub
parent cf37c7daff
commit 62c8edc039
9 changed files with 716 additions and 1027 deletions

View File

@@ -29,194 +29,195 @@ struct ApiKey
};
auto constexpr RpcKeys = std::array<ApiKey, 212U>{ {
{ TR_KEY_active_torrent_count, TR_KEY_active_torrent_count_camel },
{ TR_KEY_activity_date, TR_KEY_activity_date_camel }, // TODO(ckerr) legacy duplicate
{ TR_KEY_added_date, TR_KEY_added_date_camel }, // TODO(ckerr) legacy duplicate
{ TR_KEY_alt_speed_down, TR_KEY_alt_speed_down_kebab },
{ TR_KEY_alt_speed_enabled, TR_KEY_alt_speed_enabled_kebab },
{ TR_KEY_alt_speed_time_begin, TR_KEY_alt_speed_time_begin_kebab },
{ TR_KEY_alt_speed_time_day, TR_KEY_alt_speed_time_day_kebab },
{ TR_KEY_alt_speed_time_enabled, TR_KEY_alt_speed_time_enabled_kebab },
{ TR_KEY_alt_speed_time_end, TR_KEY_alt_speed_time_end_kebab },
{ TR_KEY_alt_speed_up, TR_KEY_alt_speed_up_kebab },
{ TR_KEY_announce_state, TR_KEY_announce_state_camel },
{ TR_KEY_anti_brute_force_enabled, TR_KEY_anti_brute_force_enabled_kebab },
{ TR_KEY_anti_brute_force_threshold, TR_KEY_anti_brute_force_threshold_kebab },
{ TR_KEY_bandwidth_priority, TR_KEY_bandwidth_priority_camel }, // TODO(ckerr) legacy duplicate
{ TR_KEY_blocklist_enabled, TR_KEY_blocklist_enabled_kebab },
{ TR_KEY_blocklist_size, TR_KEY_blocklist_size_kebab },
{ TR_KEY_blocklist_url, TR_KEY_blocklist_url_kebab },
{ TR_KEY_bytes_completed, TR_KEY_bytes_completed_camel },
{ TR_KEY_cache_size_mb, TR_KEY_cache_size_mb_kebab },
{ TR_KEY_client_is_choked, TR_KEY_client_is_choked_camel },
{ TR_KEY_client_is_interested, TR_KEY_client_is_interested_camel },
{ TR_KEY_client_name, TR_KEY_client_name_camel },
{ TR_KEY_config_dir, TR_KEY_config_dir_kebab },
{ TR_KEY_corrupt_ever, TR_KEY_corrupt_ever_camel },
{ TR_KEY_cumulative_stats, TR_KEY_cumulative_stats_kebab },
{ TR_KEY_current_stats, TR_KEY_current_stats_kebab },
{ TR_KEY_date_created, TR_KEY_date_created_camel },
{ TR_KEY_default_trackers, TR_KEY_default_trackers_kebab },
{ TR_KEY_delete_local_data, TR_KEY_delete_local_data_kebab },
{ TR_KEY_desired_available, TR_KEY_desired_available_camel },
{ TR_KEY_dht_enabled, TR_KEY_dht_enabled_kebab },
{ TR_KEY_done_date, TR_KEY_done_date_camel }, // TODO(ckerr) legacy duplicate
{ TR_KEY_download_count, TR_KEY_download_count_camel },
{ TR_KEY_download_dir, TR_KEY_download_dir_kebab }, // crazy case 1: camel in torrent-get/set, kebab everywhere else
{ TR_KEY_download_dir_free_space, TR_KEY_download_dir_free_space_kebab },
{ TR_KEY_download_limit, TR_KEY_download_limit_camel },
{ TR_KEY_download_limited, TR_KEY_download_limited_camel },
{ TR_KEY_download_queue_enabled, TR_KEY_download_queue_enabled_kebab },
{ TR_KEY_download_queue_size, TR_KEY_download_queue_size_kebab },
{ TR_KEY_download_speed, TR_KEY_download_speed_camel },
{ TR_KEY_downloaded_bytes, TR_KEY_downloaded_bytes_camel }, // TODO(ckerr) legacy duplicate
{ TR_KEY_downloaded_ever, TR_KEY_downloaded_ever_camel },
{ TR_KEY_edit_date, TR_KEY_edit_date_camel },
{ TR_KEY_error_string, TR_KEY_error_string_camel },
{ TR_KEY_eta_idle, TR_KEY_eta_idle_camel },
{ TR_KEY_file_count, TR_KEY_file_count_kebab },
{ TR_KEY_file_stats, TR_KEY_file_stats_camel },
{ TR_KEY_files_added, TR_KEY_files_added_camel }, // TODO(ckerr) legacy duplicate
{ TR_KEY_files_unwanted, TR_KEY_files_unwanted_kebab },
{ TR_KEY_files_wanted, TR_KEY_files_wanted_kebab },
{ TR_KEY_flag_str, TR_KEY_flag_str_camel },
{ TR_KEY_from_cache, TR_KEY_from_cache_camel },
{ TR_KEY_from_dht, TR_KEY_from_dht_camel },
{ TR_KEY_from_incoming, TR_KEY_from_incoming_camel },
{ TR_KEY_from_lpd, TR_KEY_from_lpd_camel },
{ TR_KEY_from_ltep, TR_KEY_from_ltep_camel },
{ TR_KEY_from_pex, TR_KEY_from_pex_camel },
{ TR_KEY_from_tracker, TR_KEY_from_tracker_camel },
{ TR_KEY_has_announced, TR_KEY_has_announced_camel },
{ TR_KEY_has_scraped, TR_KEY_has_scraped_camel },
{ TR_KEY_hash_string, TR_KEY_hash_string_camel },
{ TR_KEY_have_unchecked, TR_KEY_have_unchecked_camel },
{ TR_KEY_have_valid, TR_KEY_have_valid_camel },
{ TR_KEY_honors_session_limits, TR_KEY_honors_session_limits_camel },
{ TR_KEY_idle_seeding_limit, TR_KEY_idle_seeding_limit_kebab },
{ TR_KEY_idle_seeding_limit_enabled, TR_KEY_idle_seeding_limit_enabled_kebab },
{ TR_KEY_incomplete_dir, TR_KEY_incomplete_dir_kebab },
{ TR_KEY_incomplete_dir_enabled, TR_KEY_incomplete_dir_enabled_kebab },
{ TR_KEY_is_backup, TR_KEY_is_backup_camel },
{ TR_KEY_is_downloading_from, TR_KEY_is_downloading_from_camel },
{ TR_KEY_is_encrypted, TR_KEY_is_encrypted_camel },
{ TR_KEY_is_finished, TR_KEY_is_finished_camel },
{ TR_KEY_is_incoming, TR_KEY_is_incoming_camel },
{ TR_KEY_is_private, TR_KEY_is_private_camel },
{ TR_KEY_is_stalled, TR_KEY_is_stalled_camel },
{ TR_KEY_is_uploading_to, TR_KEY_is_uploading_to_camel },
{ TR_KEY_is_utp, TR_KEY_is_utp_camel },
{ TR_KEY_last_announce_peer_count, TR_KEY_last_announce_peer_count_camel },
{ TR_KEY_last_announce_result, TR_KEY_last_announce_result_camel },
{ TR_KEY_last_announce_start_time, TR_KEY_last_announce_start_time_camel },
{ TR_KEY_last_announce_succeeded, TR_KEY_last_announce_succeeded_camel },
{ TR_KEY_last_announce_time, TR_KEY_last_announce_time_camel },
{ TR_KEY_last_announce_timed_out, TR_KEY_last_announce_timed_out_camel },
{ TR_KEY_last_scrape_result, TR_KEY_last_scrape_result_camel },
{ TR_KEY_last_scrape_start_time, TR_KEY_last_scrape_start_time_camel },
{ TR_KEY_last_scrape_succeeded, TR_KEY_last_scrape_succeeded_camel },
{ TR_KEY_last_scrape_time, TR_KEY_last_scrape_time_camel },
{ TR_KEY_last_scrape_timed_out, TR_KEY_last_scrape_timed_out_camel },
{ TR_KEY_leecher_count, TR_KEY_leecher_count_camel },
{ TR_KEY_left_until_done, TR_KEY_left_until_done_camel },
{ TR_KEY_lpd_enabled, TR_KEY_lpd_enabled_kebab },
{ TR_KEY_magnet_link, TR_KEY_magnet_link_camel },
{ TR_KEY_manual_announce_time, TR_KEY_manual_announce_time_camel },
{ TR_KEY_max_connected_peers, TR_KEY_max_connected_peers_camel },
{ TR_KEY_memory_bytes, TR_KEY_memory_bytes_kebab },
{ TR_KEY_memory_units, TR_KEY_memory_units_kebab },
{ TR_KEY_metadata_percent_complete, TR_KEY_metadata_percent_complete_camel },
{ TR_KEY_next_announce_time, TR_KEY_next_announce_time_camel },
{ TR_KEY_next_scrape_time, TR_KEY_next_scrape_time_camel },
{ TR_KEY_paused_torrent_count, TR_KEY_paused_torrent_count_camel },
{ TR_KEY_peer_is_choked, TR_KEY_peer_is_choked_camel },
{ TR_KEY_peer_is_interested, TR_KEY_peer_is_interested_camel },
{ TR_KEY_peer_limit, TR_KEY_peer_limit_kebab },
{ TR_KEY_peer_limit_global, TR_KEY_peer_limit_global_kebab },
{ TR_KEY_peer_limit_per_torrent, TR_KEY_peer_limit_per_torrent_kebab },
{ TR_KEY_peer_port, TR_KEY_peer_port_kebab },
{ TR_KEY_peer_port_random_on_start, TR_KEY_peer_port_random_on_start_kebab },
{ TR_KEY_peers_connected, TR_KEY_peers_connected_camel },
{ TR_KEY_peers_from, TR_KEY_peers_from_camel },
{ TR_KEY_peers_getting_from_us, TR_KEY_peers_getting_from_us_camel },
{ TR_KEY_peers_sending_to_us, TR_KEY_peers_sending_to_us_camel },
{ TR_KEY_percent_complete, TR_KEY_percent_complete_camel },
{ TR_KEY_percent_done, TR_KEY_percent_done_camel },
{ TR_KEY_pex_enabled, TR_KEY_pex_enabled_kebab },
{ TR_KEY_piece_count, TR_KEY_piece_count_camel },
{ TR_KEY_piece_size, TR_KEY_piece_size_camel },
{ TR_KEY_port_forwarding_enabled, TR_KEY_port_forwarding_enabled_kebab },
{ TR_KEY_port_is_open, TR_KEY_port_is_open_kebab },
{ TR_KEY_primary_mime_type, TR_KEY_primary_mime_type_kebab },
{ TR_KEY_priority_high, TR_KEY_priority_high_kebab },
{ TR_KEY_priority_low, TR_KEY_priority_low_kebab },
{ TR_KEY_priority_normal, TR_KEY_priority_normal_kebab },
{ TR_KEY_queue_position, TR_KEY_queue_position_camel },
{ TR_KEY_queue_stalled_enabled, TR_KEY_queue_stalled_enabled_kebab },
{ TR_KEY_queue_stalled_minutes, TR_KEY_queue_stalled_minutes_kebab },
{ TR_KEY_rate_download, TR_KEY_rate_download_camel },
{ TR_KEY_rate_to_client, TR_KEY_rate_to_client_camel },
{ TR_KEY_rate_to_peer, TR_KEY_rate_to_peer_camel },
{ TR_KEY_rate_upload, TR_KEY_rate_upload_camel },
{ TR_KEY_recently_active, TR_KEY_recently_active_kebab },
{ TR_KEY_recheck_progress, TR_KEY_recheck_progress_camel },
{ TR_KEY_rename_partial_files, TR_KEY_rename_partial_files_kebab },
{ TR_KEY_active_torrent_count, TR_KEY_active_torrent_count_camel_APICOMPAT },
{ TR_KEY_activity_date, TR_KEY_activity_date_camel_APICOMPAT },
{ TR_KEY_added_date, TR_KEY_added_date_camel_APICOMPAT },
{ TR_KEY_alt_speed_down, TR_KEY_alt_speed_down_kebab_APICOMPAT },
{ TR_KEY_alt_speed_enabled, TR_KEY_alt_speed_enabled_kebab_APICOMPAT },
{ TR_KEY_alt_speed_time_begin, TR_KEY_alt_speed_time_begin_kebab_APICOMPAT },
{ TR_KEY_alt_speed_time_day, TR_KEY_alt_speed_time_day_kebab_APICOMPAT },
{ TR_KEY_alt_speed_time_enabled, TR_KEY_alt_speed_time_enabled_kebab_APICOMPAT },
{ TR_KEY_alt_speed_time_end, TR_KEY_alt_speed_time_end_kebab_APICOMPAT },
{ TR_KEY_alt_speed_up, TR_KEY_alt_speed_up_kebab_APICOMPAT },
{ TR_KEY_announce_state, TR_KEY_announce_state_camel_APICOMPAT },
{ TR_KEY_anti_brute_force_enabled, TR_KEY_anti_brute_force_enabled_kebab_APICOMPAT },
{ TR_KEY_anti_brute_force_threshold, TR_KEY_anti_brute_force_threshold_kebab_APICOMPAT },
{ TR_KEY_bandwidth_priority, TR_KEY_bandwidth_priority_camel_APICOMPAT },
{ TR_KEY_blocklist_enabled, TR_KEY_blocklist_enabled_kebab_APICOMPAT },
{ TR_KEY_blocklist_size, TR_KEY_blocklist_size_kebab_APICOMPAT },
{ TR_KEY_blocklist_url, TR_KEY_blocklist_url_kebab_APICOMPAT },
{ TR_KEY_bytes_completed, TR_KEY_bytes_completed_camel_APICOMPAT },
{ TR_KEY_cache_size_mb, TR_KEY_cache_size_mb_kebab_APICOMPAT },
{ TR_KEY_client_is_choked, TR_KEY_client_is_choked_camel_APICOMPAT },
{ TR_KEY_client_is_interested, TR_KEY_client_is_interested_camel_APICOMPAT },
{ TR_KEY_client_name, TR_KEY_client_name_camel_APICOMPAT },
{ TR_KEY_config_dir, TR_KEY_config_dir_kebab_APICOMPAT },
{ TR_KEY_corrupt_ever, TR_KEY_corrupt_ever_camel_APICOMPAT },
{ TR_KEY_cumulative_stats, TR_KEY_cumulative_stats_kebab_APICOMPAT },
{ TR_KEY_current_stats, TR_KEY_current_stats_kebab_APICOMPAT },
{ TR_KEY_date_created, TR_KEY_date_created_camel_APICOMPAT },
{ TR_KEY_default_trackers, TR_KEY_default_trackers_kebab_APICOMPAT },
{ TR_KEY_delete_local_data, TR_KEY_delete_local_data_kebab_APICOMPAT },
{ TR_KEY_desired_available, TR_KEY_desired_available_camel_APICOMPAT },
{ TR_KEY_dht_enabled, TR_KEY_dht_enabled_kebab_APICOMPAT },
{ TR_KEY_done_date, TR_KEY_done_date_camel_APICOMPAT },
{ TR_KEY_download_count, TR_KEY_download_count_camel_APICOMPAT },
{ TR_KEY_download_dir,
TR_KEY_download_dir_kebab_APICOMPAT }, // crazy case 1: camel in torrent-get/set, kebab everywhere else
{ TR_KEY_download_dir_free_space, TR_KEY_download_dir_free_space_kebab_APICOMPAT },
{ TR_KEY_download_limit, TR_KEY_download_limit_camel_APICOMPAT },
{ TR_KEY_download_limited, TR_KEY_download_limited_camel_APICOMPAT },
{ TR_KEY_download_queue_enabled, TR_KEY_download_queue_enabled_kebab_APICOMPAT },
{ TR_KEY_download_queue_size, TR_KEY_download_queue_size_kebab_APICOMPAT },
{ TR_KEY_download_speed, TR_KEY_download_speed_camel_APICOMPAT },
{ TR_KEY_downloaded_bytes, TR_KEY_downloaded_bytes_camel_APICOMPAT },
{ TR_KEY_downloaded_ever, TR_KEY_downloaded_ever_camel_APICOMPAT },
{ TR_KEY_edit_date, TR_KEY_edit_date_camel_APICOMPAT },
{ TR_KEY_error_string, TR_KEY_error_string_camel_APICOMPAT },
{ TR_KEY_eta_idle, TR_KEY_eta_idle_camel_APICOMPAT },
{ TR_KEY_file_count, TR_KEY_file_count_kebab_APICOMPAT },
{ TR_KEY_file_stats, TR_KEY_file_stats_camel_APICOMPAT },
{ TR_KEY_files_added, TR_KEY_files_added_camel_APICOMPAT },
{ TR_KEY_files_unwanted, TR_KEY_files_unwanted_kebab_APICOMPAT },
{ TR_KEY_files_wanted, TR_KEY_files_wanted_kebab_APICOMPAT },
{ TR_KEY_flag_str, TR_KEY_flag_str_camel_APICOMPAT },
{ TR_KEY_from_cache, TR_KEY_from_cache_camel_APICOMPAT },
{ TR_KEY_from_dht, TR_KEY_from_dht_camel_APICOMPAT },
{ TR_KEY_from_incoming, TR_KEY_from_incoming_camel_APICOMPAT },
{ TR_KEY_from_lpd, TR_KEY_from_lpd_camel_APICOMPAT },
{ TR_KEY_from_ltep, TR_KEY_from_ltep_camel_APICOMPAT },
{ TR_KEY_from_pex, TR_KEY_from_pex_camel_APICOMPAT },
{ TR_KEY_from_tracker, TR_KEY_from_tracker_camel_APICOMPAT },
{ TR_KEY_has_announced, TR_KEY_has_announced_camel_APICOMPAT },
{ TR_KEY_has_scraped, TR_KEY_has_scraped_camel_APICOMPAT },
{ TR_KEY_hash_string, TR_KEY_hash_string_camel_APICOMPAT },
{ TR_KEY_have_unchecked, TR_KEY_have_unchecked_camel_APICOMPAT },
{ TR_KEY_have_valid, TR_KEY_have_valid_camel_APICOMPAT },
{ TR_KEY_honors_session_limits, TR_KEY_honors_session_limits_camel_APICOMPAT },
{ TR_KEY_idle_seeding_limit, TR_KEY_idle_seeding_limit_kebab_APICOMPAT },
{ TR_KEY_idle_seeding_limit_enabled, TR_KEY_idle_seeding_limit_enabled_kebab_APICOMPAT },
{ TR_KEY_incomplete_dir, TR_KEY_incomplete_dir_kebab_APICOMPAT },
{ TR_KEY_incomplete_dir_enabled, TR_KEY_incomplete_dir_enabled_kebab_APICOMPAT },
{ TR_KEY_is_backup, TR_KEY_is_backup_camel_APICOMPAT },
{ TR_KEY_is_downloading_from, TR_KEY_is_downloading_from_camel_APICOMPAT },
{ TR_KEY_is_encrypted, TR_KEY_is_encrypted_camel_APICOMPAT },
{ TR_KEY_is_finished, TR_KEY_is_finished_camel_APICOMPAT },
{ TR_KEY_is_incoming, TR_KEY_is_incoming_camel_APICOMPAT },
{ TR_KEY_is_private, TR_KEY_is_private_camel_APICOMPAT },
{ TR_KEY_is_stalled, TR_KEY_is_stalled_camel_APICOMPAT },
{ TR_KEY_is_uploading_to, TR_KEY_is_uploading_to_camel_APICOMPAT },
{ TR_KEY_is_utp, TR_KEY_is_utp_camel_APICOMPAT },
{ TR_KEY_last_announce_peer_count, TR_KEY_last_announce_peer_count_camel_APICOMPAT },
{ TR_KEY_last_announce_result, TR_KEY_last_announce_result_camel_APICOMPAT },
{ TR_KEY_last_announce_start_time, TR_KEY_last_announce_start_time_camel_APICOMPAT },
{ TR_KEY_last_announce_succeeded, TR_KEY_last_announce_succeeded_camel_APICOMPAT },
{ TR_KEY_last_announce_time, TR_KEY_last_announce_time_camel_APICOMPAT },
{ TR_KEY_last_announce_timed_out, TR_KEY_last_announce_timed_out_camel_APICOMPAT },
{ TR_KEY_last_scrape_result, TR_KEY_last_scrape_result_camel_APICOMPAT },
{ TR_KEY_last_scrape_start_time, TR_KEY_last_scrape_start_time_camel_APICOMPAT },
{ TR_KEY_last_scrape_succeeded, TR_KEY_last_scrape_succeeded_camel_APICOMPAT },
{ TR_KEY_last_scrape_time, TR_KEY_last_scrape_time_camel_APICOMPAT },
{ TR_KEY_last_scrape_timed_out, TR_KEY_last_scrape_timed_out_camel_APICOMPAT },
{ TR_KEY_leecher_count, TR_KEY_leecher_count_camel_APICOMPAT },
{ TR_KEY_left_until_done, TR_KEY_left_until_done_camel_APICOMPAT },
{ TR_KEY_lpd_enabled, TR_KEY_lpd_enabled_kebab_APICOMPAT },
{ TR_KEY_magnet_link, TR_KEY_magnet_link_camel_APICOMPAT },
{ TR_KEY_manual_announce_time, TR_KEY_manual_announce_time_camel_APICOMPAT },
{ TR_KEY_max_connected_peers, TR_KEY_max_connected_peers_camel_APICOMPAT },
{ TR_KEY_memory_bytes, TR_KEY_memory_bytes_kebab_APICOMPAT },
{ TR_KEY_memory_units, TR_KEY_memory_units_kebab_APICOMPAT },
{ TR_KEY_metadata_percent_complete, TR_KEY_metadata_percent_complete_camel_APICOMPAT },
{ TR_KEY_next_announce_time, TR_KEY_next_announce_time_camel_APICOMPAT },
{ TR_KEY_next_scrape_time, TR_KEY_next_scrape_time_camel_APICOMPAT },
{ TR_KEY_paused_torrent_count, TR_KEY_paused_torrent_count_camel_APICOMPAT },
{ TR_KEY_peer_is_choked, TR_KEY_peer_is_choked_camel_APICOMPAT },
{ TR_KEY_peer_is_interested, TR_KEY_peer_is_interested_camel_APICOMPAT },
{ TR_KEY_peer_limit, TR_KEY_peer_limit_kebab_APICOMPAT },
{ TR_KEY_peer_limit_global, TR_KEY_peer_limit_global_kebab_APICOMPAT },
{ TR_KEY_peer_limit_per_torrent, TR_KEY_peer_limit_per_torrent_kebab_APICOMPAT },
{ TR_KEY_peer_port, TR_KEY_peer_port_kebab_APICOMPAT },
{ TR_KEY_peer_port_random_on_start, TR_KEY_peer_port_random_on_start_kebab_APICOMPAT },
{ TR_KEY_peers_connected, TR_KEY_peers_connected_camel_APICOMPAT },
{ TR_KEY_peers_from, TR_KEY_peers_from_camel_APICOMPAT },
{ TR_KEY_peers_getting_from_us, TR_KEY_peers_getting_from_us_camel_APICOMPAT },
{ TR_KEY_peers_sending_to_us, TR_KEY_peers_sending_to_us_camel_APICOMPAT },
{ TR_KEY_percent_complete, TR_KEY_percent_complete_camel_APICOMPAT },
{ TR_KEY_percent_done, TR_KEY_percent_done_camel_APICOMPAT },
{ TR_KEY_pex_enabled, TR_KEY_pex_enabled_kebab_APICOMPAT },
{ TR_KEY_piece_count, TR_KEY_piece_count_camel_APICOMPAT },
{ TR_KEY_piece_size, TR_KEY_piece_size_camel_APICOMPAT },
{ TR_KEY_port_forwarding_enabled, TR_KEY_port_forwarding_enabled_kebab_APICOMPAT },
{ TR_KEY_port_is_open, TR_KEY_port_is_open_kebab_APICOMPAT },
{ TR_KEY_primary_mime_type, TR_KEY_primary_mime_type_kebab_APICOMPAT },
{ TR_KEY_priority_high, TR_KEY_priority_high_kebab_APICOMPAT },
{ TR_KEY_priority_low, TR_KEY_priority_low_kebab_APICOMPAT },
{ TR_KEY_priority_normal, TR_KEY_priority_normal_kebab_APICOMPAT },
{ TR_KEY_queue_position, TR_KEY_queue_position_camel_APICOMPAT },
{ TR_KEY_queue_stalled_enabled, TR_KEY_queue_stalled_enabled_kebab_APICOMPAT },
{ TR_KEY_queue_stalled_minutes, TR_KEY_queue_stalled_minutes_kebab_APICOMPAT },
{ TR_KEY_rate_download, TR_KEY_rate_download_camel_APICOMPAT },
{ TR_KEY_rate_to_client, TR_KEY_rate_to_client_camel_APICOMPAT },
{ TR_KEY_rate_to_peer, TR_KEY_rate_to_peer_camel_APICOMPAT },
{ TR_KEY_rate_upload, TR_KEY_rate_upload_camel_APICOMPAT },
{ TR_KEY_recently_active, TR_KEY_recently_active_kebab_APICOMPAT },
{ TR_KEY_recheck_progress, TR_KEY_recheck_progress_camel_APICOMPAT },
{ TR_KEY_rename_partial_files, TR_KEY_rename_partial_files_kebab_APICOMPAT },
{ TR_KEY_rpc_host_whitelist, TR_KEY_rpc_host_whitelist_kebab },
{ TR_KEY_rpc_host_whitelist_enabled, TR_KEY_rpc_host_whitelist_enabled_kebab },
{ TR_KEY_rpc_version, TR_KEY_rpc_version_kebab },
{ TR_KEY_rpc_version_minimum, TR_KEY_rpc_version_minimum_kebab },
{ TR_KEY_rpc_version_semver, TR_KEY_rpc_version_semver_kebab },
{ TR_KEY_scrape_state, TR_KEY_scrape_state_camel },
{ TR_KEY_script_torrent_added_enabled, TR_KEY_script_torrent_added_enabled_kebab },
{ TR_KEY_script_torrent_added_filename, TR_KEY_script_torrent_added_filename_kebab },
{ TR_KEY_script_torrent_done_enabled, TR_KEY_script_torrent_done_enabled_kebab },
{ TR_KEY_script_torrent_done_filename, TR_KEY_script_torrent_done_filename_kebab },
{ TR_KEY_script_torrent_done_seeding_enabled, TR_KEY_script_torrent_done_seeding_enabled_kebab },
{ TR_KEY_script_torrent_done_seeding_filename, TR_KEY_script_torrent_done_seeding_filename_kebab },
{ TR_KEY_seconds_active, TR_KEY_seconds_active_camel }, // TODO(ckerr) legacy duplicate
{ TR_KEY_seconds_downloading, TR_KEY_seconds_downloading_camel },
{ TR_KEY_seconds_seeding, TR_KEY_seconds_seeding_camel },
{ TR_KEY_seed_idle_limit, TR_KEY_seed_idle_limit_camel },
{ TR_KEY_seed_idle_mode, TR_KEY_seed_idle_mode_camel },
{ TR_KEY_seed_queue_enabled, TR_KEY_seed_queue_enabled_kebab },
{ TR_KEY_seed_queue_size, TR_KEY_seed_queue_size_kebab },
{ TR_KEY_seed_ratio_limit, TR_KEY_seed_ratio_limit_camel },
{ TR_KEY_seed_ratio_limited, TR_KEY_seed_ratio_limited_camel },
{ TR_KEY_seed_ratio_mode, TR_KEY_seed_ratio_mode_camel },
{ TR_KEY_seeder_count, TR_KEY_seeder_count_camel },
{ TR_KEY_session_count, TR_KEY_session_count_camel }, // TODO(ckerr) legacy duplicate
{ TR_KEY_session_id, TR_KEY_session_id_kebab },
{ TR_KEY_size_bytes, TR_KEY_size_bytes_kebab },
{ TR_KEY_size_units, TR_KEY_size_units_kebab },
{ TR_KEY_size_when_done, TR_KEY_size_when_done_camel },
{ TR_KEY_speed_bytes, TR_KEY_speed_bytes_kebab },
{ TR_KEY_speed_limit_down, TR_KEY_speed_limit_down_kebab },
{ TR_KEY_speed_limit_down_enabled, TR_KEY_speed_limit_down_enabled_kebab },
{ TR_KEY_speed_limit_up, TR_KEY_speed_limit_up_kebab },
{ TR_KEY_speed_limit_up_enabled, TR_KEY_speed_limit_up_enabled_kebab },
{ TR_KEY_speed_units, TR_KEY_speed_units_kebab },
{ TR_KEY_start_added_torrents, TR_KEY_start_added_torrents_kebab },
{ TR_KEY_start_date, TR_KEY_start_date_camel },
{ TR_KEY_tcp_enabled, TR_KEY_tcp_enabled_kebab },
{ TR_KEY_torrent_added, TR_KEY_torrent_added_kebab },
{ TR_KEY_torrent_count, TR_KEY_torrent_count_camel },
{ TR_KEY_torrent_duplicate, TR_KEY_torrent_duplicate_kebab },
{ TR_KEY_torrent_file, TR_KEY_torrent_file_camel },
{ TR_KEY_total_size, TR_KEY_total_size_camel },
{ TR_KEY_tracker_add, TR_KEY_tracker_add_camel },
{ TR_KEY_tracker_list, TR_KEY_tracker_list_camel },
{ TR_KEY_tracker_remove, TR_KEY_tracker_remove_camel },
{ TR_KEY_tracker_replace, TR_KEY_tracker_replace_camel },
{ TR_KEY_tracker_stats, TR_KEY_tracker_stats_camel },
{ TR_KEY_trash_original_torrent_files, TR_KEY_trash_original_torrent_files_kebab },
{ TR_KEY_upload_limit, TR_KEY_upload_limit_camel },
{ TR_KEY_upload_limited, TR_KEY_upload_limited_camel },
{ TR_KEY_upload_ratio, TR_KEY_upload_ratio_camel },
{ TR_KEY_upload_speed, TR_KEY_upload_speed_camel },
{ TR_KEY_uploaded_bytes, TR_KEY_uploaded_bytes_camel }, // TODO(ckerr) legacy duplicate
{ TR_KEY_uploaded_ever, TR_KEY_uploaded_ever_camel },
{ TR_KEY_utp_enabled, TR_KEY_utp_enabled_kebab },
{ TR_KEY_webseeds_sending_to_us, TR_KEY_webseeds_sending_to_us_camel },
{ TR_KEY_rpc_version, TR_KEY_rpc_version_kebab_APICOMPAT },
{ TR_KEY_rpc_version_minimum, TR_KEY_rpc_version_minimum_kebab_APICOMPAT },
{ TR_KEY_rpc_version_semver, TR_KEY_rpc_version_semver_kebab_APICOMPAT },
{ TR_KEY_scrape_state, TR_KEY_scrape_state_camel_APICOMPAT },
{ TR_KEY_script_torrent_added_enabled, TR_KEY_script_torrent_added_enabled_kebab_APICOMPAT },
{ TR_KEY_script_torrent_added_filename, TR_KEY_script_torrent_added_filename_kebab_APICOMPAT },
{ TR_KEY_script_torrent_done_enabled, TR_KEY_script_torrent_done_enabled_kebab_APICOMPAT },
{ TR_KEY_script_torrent_done_filename, TR_KEY_script_torrent_done_filename_kebab_APICOMPAT },
{ TR_KEY_script_torrent_done_seeding_enabled, TR_KEY_script_torrent_done_seeding_enabled_kebab_APICOMPAT },
{ TR_KEY_script_torrent_done_seeding_filename, TR_KEY_script_torrent_done_seeding_filename_kebab_APICOMPAT },
{ TR_KEY_seconds_active, TR_KEY_seconds_active_camel_APICOMPAT },
{ TR_KEY_seconds_downloading, TR_KEY_seconds_downloading_camel_APICOMPAT },
{ TR_KEY_seconds_seeding, TR_KEY_seconds_seeding_camel_APICOMPAT },
{ TR_KEY_seed_idle_limit, TR_KEY_seed_idle_limit_camel_APICOMPAT },
{ TR_KEY_seed_idle_mode, TR_KEY_seed_idle_mode_camel_APICOMPAT },
{ TR_KEY_seed_queue_enabled, TR_KEY_seed_queue_enabled_kebab_APICOMPAT },
{ TR_KEY_seed_queue_size, TR_KEY_seed_queue_size_kebab_APICOMPAT },
{ TR_KEY_seed_ratio_limit, TR_KEY_seed_ratio_limit_camel_APICOMPAT },
{ TR_KEY_seed_ratio_limited, TR_KEY_seed_ratio_limited_camel_APICOMPAT },
{ TR_KEY_seed_ratio_mode, TR_KEY_seed_ratio_mode_camel_APICOMPAT },
{ TR_KEY_seeder_count, TR_KEY_seeder_count_camel_APICOMPAT },
{ TR_KEY_session_count, TR_KEY_session_count_camel_APICOMPAT },
{ TR_KEY_session_id, TR_KEY_session_id_kebab_APICOMPAT },
{ TR_KEY_size_bytes, TR_KEY_size_bytes_kebab_APICOMPAT },
{ TR_KEY_size_units, TR_KEY_size_units_kebab_APICOMPAT },
{ TR_KEY_size_when_done, TR_KEY_size_when_done_camel_APICOMPAT },
{ TR_KEY_speed_bytes, TR_KEY_speed_bytes_kebab_APICOMPAT },
{ TR_KEY_speed_limit_down, TR_KEY_speed_limit_down_kebab_APICOMPAT },
{ TR_KEY_speed_limit_down_enabled, TR_KEY_speed_limit_down_enabled_kebab_APICOMPAT },
{ TR_KEY_speed_limit_up, TR_KEY_speed_limit_up_kebab_APICOMPAT },
{ TR_KEY_speed_limit_up_enabled, TR_KEY_speed_limit_up_enabled_kebab_APICOMPAT },
{ TR_KEY_speed_units, TR_KEY_speed_units_kebab_APICOMPAT },
{ TR_KEY_start_added_torrents, TR_KEY_start_added_torrents_kebab_APICOMPAT },
{ TR_KEY_start_date, TR_KEY_start_date_camel_APICOMPAT },
{ TR_KEY_tcp_enabled, TR_KEY_tcp_enabled_kebab_APICOMPAT },
{ TR_KEY_torrent_added, TR_KEY_torrent_added_kebab_APICOMPAT },
{ TR_KEY_torrent_count, TR_KEY_torrent_count_camel_APICOMPAT },
{ TR_KEY_torrent_duplicate, TR_KEY_torrent_duplicate_kebab_APICOMPAT },
{ TR_KEY_torrent_file, TR_KEY_torrent_file_camel_APICOMPAT },
{ TR_KEY_total_size, TR_KEY_total_size_camel_APICOMPAT },
{ TR_KEY_tracker_add, TR_KEY_tracker_add_camel_APICOMPAT },
{ TR_KEY_tracker_list, TR_KEY_tracker_list_camel_APICOMPAT },
{ TR_KEY_tracker_remove, TR_KEY_tracker_remove_camel_APICOMPAT },
{ TR_KEY_tracker_replace, TR_KEY_tracker_replace_camel_APICOMPAT },
{ TR_KEY_tracker_stats, TR_KEY_tracker_stats_camel_APICOMPAT },
{ TR_KEY_trash_original_torrent_files, TR_KEY_trash_original_torrent_files_kebab_APICOMPAT },
{ TR_KEY_upload_limit, TR_KEY_upload_limit_camel_APICOMPAT },
{ TR_KEY_upload_limited, TR_KEY_upload_limited_camel_APICOMPAT },
{ TR_KEY_upload_ratio, TR_KEY_upload_ratio_camel_APICOMPAT },
{ TR_KEY_upload_speed, TR_KEY_upload_speed_camel_APICOMPAT },
{ TR_KEY_uploaded_bytes, TR_KEY_uploaded_bytes_camel_APICOMPAT },
{ TR_KEY_uploaded_ever, TR_KEY_uploaded_ever_camel_APICOMPAT },
{ TR_KEY_utp_enabled, TR_KEY_utp_enabled_kebab_APICOMPAT },
{ TR_KEY_webseeds_sending_to_us, TR_KEY_webseeds_sending_to_us_camel_APICOMPAT },
{ TR_KEY_blocklist_update, TR_KEY_blocklist_update_kebab },
{ TR_KEY_free_space, TR_KEY_free_space_kebab },
{ TR_KEY_group_get, TR_KEY_group_get_kebab },
@@ -246,34 +247,34 @@ auto constexpr RpcKeys = std::array<ApiKey, 212U>{ {
auto constexpr SessionKeys = std::array<ApiKey, 157U>{ {
{ TR_KEY_activity_date, TR_KEY_activity_date_kebab_APICOMPAT },
{ TR_KEY_added_date, TR_KEY_added_date_kebab_APICOMPAT },
{ TR_KEY_alt_speed_down, TR_KEY_alt_speed_down_kebab },
{ TR_KEY_alt_speed_enabled, TR_KEY_alt_speed_enabled_kebab },
{ TR_KEY_alt_speed_time_begin, TR_KEY_alt_speed_time_begin_kebab },
{ TR_KEY_alt_speed_time_day, TR_KEY_alt_speed_time_day_kebab },
{ TR_KEY_alt_speed_time_enabled, TR_KEY_alt_speed_time_enabled_kebab },
{ TR_KEY_alt_speed_time_end, TR_KEY_alt_speed_time_end_kebab },
{ TR_KEY_alt_speed_up, TR_KEY_alt_speed_up_kebab },
{ TR_KEY_alt_speed_down, TR_KEY_alt_speed_down_kebab_APICOMPAT },
{ TR_KEY_alt_speed_enabled, TR_KEY_alt_speed_enabled_kebab_APICOMPAT },
{ TR_KEY_alt_speed_time_begin, TR_KEY_alt_speed_time_begin_kebab_APICOMPAT },
{ TR_KEY_alt_speed_time_day, TR_KEY_alt_speed_time_day_kebab_APICOMPAT },
{ TR_KEY_alt_speed_time_enabled, TR_KEY_alt_speed_time_enabled_kebab_APICOMPAT },
{ TR_KEY_alt_speed_time_end, TR_KEY_alt_speed_time_end_kebab_APICOMPAT },
{ TR_KEY_alt_speed_up, TR_KEY_alt_speed_up_kebab_APICOMPAT },
{ TR_KEY_announce_ip, TR_KEY_announce_ip_kebab },
{ TR_KEY_announce_ip_enabled, TR_KEY_announce_ip_enabled_kebab },
{ TR_KEY_anti_brute_force_enabled, TR_KEY_anti_brute_force_enabled_kebab },
{ TR_KEY_anti_brute_force_threshold, TR_KEY_anti_brute_force_threshold_kebab },
{ TR_KEY_anti_brute_force_enabled, TR_KEY_anti_brute_force_enabled_kebab_APICOMPAT },
{ TR_KEY_anti_brute_force_threshold, TR_KEY_anti_brute_force_threshold_kebab_APICOMPAT },
{ TR_KEY_bandwidth_priority, TR_KEY_bandwidth_priority_kebab_APICOMPAT },
{ TR_KEY_bind_address_ipv4, TR_KEY_bind_address_ipv4_kebab },
{ TR_KEY_bind_address_ipv6, TR_KEY_bind_address_ipv6_kebab },
{ TR_KEY_blocklist_date, TR_KEY_blocklist_date_kebab },
{ TR_KEY_blocklist_enabled, TR_KEY_blocklist_enabled_kebab },
{ TR_KEY_blocklist_enabled, TR_KEY_blocklist_enabled_kebab_APICOMPAT },
{ TR_KEY_blocklist_updates_enabled, TR_KEY_blocklist_updates_enabled_kebab },
{ TR_KEY_blocklist_url, TR_KEY_blocklist_url_kebab },
{ TR_KEY_cache_size_mb, TR_KEY_cache_size_mb_kebab },
{ TR_KEY_blocklist_url, TR_KEY_blocklist_url_kebab_APICOMPAT },
{ TR_KEY_cache_size_mb, TR_KEY_cache_size_mb_kebab_APICOMPAT },
{ TR_KEY_compact_view, TR_KEY_compact_view_kebab },
{ TR_KEY_default_trackers, TR_KEY_default_trackers_kebab },
{ TR_KEY_default_trackers, TR_KEY_default_trackers_kebab_APICOMPAT },
{ TR_KEY_details_window_height, TR_KEY_details_window_height_kebab },
{ TR_KEY_details_window_width, TR_KEY_details_window_width_kebab },
{ TR_KEY_dht_enabled, TR_KEY_dht_enabled_kebab },
{ TR_KEY_dht_enabled, TR_KEY_dht_enabled_kebab_APICOMPAT },
{ TR_KEY_done_date, TR_KEY_done_date_kebab_APICOMPAT },
{ TR_KEY_download_dir, TR_KEY_download_dir_kebab }, // TODO(ckerr) legacy duplicate
{ TR_KEY_download_queue_enabled, TR_KEY_download_queue_enabled_kebab },
{ TR_KEY_download_queue_size, TR_KEY_download_queue_size_kebab },
{ TR_KEY_download_dir, TR_KEY_download_dir_kebab_APICOMPAT },
{ TR_KEY_download_queue_enabled, TR_KEY_download_queue_enabled_kebab_APICOMPAT },
{ TR_KEY_download_queue_size, TR_KEY_download_queue_size_kebab_APICOMPAT },
{ TR_KEY_downloaded_bytes, TR_KEY_downloaded_bytes_kebab_APICOMPAT },
{ TR_KEY_downloading_time_seconds, TR_KEY_downloading_time_seconds_kebab_APICOMPAT },
{ TR_KEY_files_added, TR_KEY_files_added_kebab_APICOMPAT },
@@ -282,12 +283,12 @@ auto constexpr SessionKeys = std::array<ApiKey, 157U>{ {
{ TR_KEY_filter_trackers, TR_KEY_filter_trackers_kebab },
{ TR_KEY_idle_limit, TR_KEY_idle_limit_kebab_APICOMPAT },
{ TR_KEY_idle_mode, TR_KEY_idle_mode_kebab_APICOMPAT },
{ TR_KEY_idle_seeding_limit, TR_KEY_idle_seeding_limit_kebab },
{ TR_KEY_idle_seeding_limit_enabled, TR_KEY_idle_seeding_limit_enabled_kebab },
{ TR_KEY_incomplete_dir, TR_KEY_incomplete_dir_kebab },
{ TR_KEY_incomplete_dir_enabled, TR_KEY_incomplete_dir_enabled_kebab },
{ TR_KEY_idle_seeding_limit, TR_KEY_idle_seeding_limit_kebab_APICOMPAT },
{ TR_KEY_idle_seeding_limit_enabled, TR_KEY_idle_seeding_limit_enabled_kebab_APICOMPAT },
{ TR_KEY_incomplete_dir, TR_KEY_incomplete_dir_kebab_APICOMPAT },
{ TR_KEY_incomplete_dir_enabled, TR_KEY_incomplete_dir_enabled_kebab_APICOMPAT },
{ TR_KEY_inhibit_desktop_hibernation, TR_KEY_inhibit_desktop_hibernation_kebab },
{ TR_KEY_lpd_enabled, TR_KEY_lpd_enabled_kebab },
{ TR_KEY_lpd_enabled, TR_KEY_lpd_enabled_kebab_APICOMPAT },
{ TR_KEY_main_window_height, TR_KEY_main_window_height_kebab },
{ TR_KEY_main_window_is_maximized, TR_KEY_main_window_is_maximized_kebab },
{ TR_KEY_main_window_layout_order, TR_KEY_main_window_layout_order_kebab },
@@ -298,19 +299,19 @@ auto constexpr SessionKeys = std::array<ApiKey, 157U>{ {
{ TR_KEY_message_level, TR_KEY_message_level_kebab },
{ TR_KEY_open_dialog_dir, TR_KEY_open_dialog_dir_kebab },
{ TR_KEY_peer_congestion_algorithm, TR_KEY_peer_congestion_algorithm_kebab },
{ TR_KEY_peer_limit_global, TR_KEY_peer_limit_global_kebab },
{ TR_KEY_peer_limit_per_torrent, TR_KEY_peer_limit_per_torrent_kebab },
{ TR_KEY_peer_port, TR_KEY_peer_port_kebab },
{ TR_KEY_peer_limit_global, TR_KEY_peer_limit_global_kebab_APICOMPAT },
{ TR_KEY_peer_limit_per_torrent, TR_KEY_peer_limit_per_torrent_kebab_APICOMPAT },
{ TR_KEY_peer_port, TR_KEY_peer_port_kebab_APICOMPAT },
{ TR_KEY_peer_port_random_high, TR_KEY_peer_port_random_high_kebab },
{ TR_KEY_peer_port_random_low, TR_KEY_peer_port_random_low_kebab },
{ TR_KEY_peer_port_random_on_start, TR_KEY_peer_port_random_on_start_kebab },
{ TR_KEY_peer_port_random_on_start, TR_KEY_peer_port_random_on_start_kebab_APICOMPAT },
{ TR_KEY_peer_socket_tos, TR_KEY_peer_socket_tos_kebab },
{ TR_KEY_peers2_6, TR_KEY_peers2_6_kebab_APICOMPAT },
{ TR_KEY_pex_enabled, TR_KEY_pex_enabled_kebab },
{ TR_KEY_port_forwarding_enabled, TR_KEY_port_forwarding_enabled_kebab },
{ TR_KEY_pex_enabled, TR_KEY_pex_enabled_kebab_APICOMPAT },
{ TR_KEY_port_forwarding_enabled, TR_KEY_port_forwarding_enabled_kebab_APICOMPAT },
{ TR_KEY_prompt_before_exit, TR_KEY_prompt_before_exit_kebab },
{ TR_KEY_queue_stalled_enabled, TR_KEY_queue_stalled_enabled_kebab },
{ TR_KEY_queue_stalled_minutes, TR_KEY_queue_stalled_minutes_kebab },
{ TR_KEY_queue_stalled_enabled, TR_KEY_queue_stalled_enabled_kebab_APICOMPAT },
{ TR_KEY_queue_stalled_minutes, TR_KEY_queue_stalled_minutes_kebab_APICOMPAT },
{ TR_KEY_ratio_limit, TR_KEY_ratio_limit_kebab },
{ TR_KEY_ratio_limit_enabled, TR_KEY_ratio_limit_enabled_kebab },
{ TR_KEY_ratio_mode, TR_KEY_ratio_mode_kebab_APICOMPAT },
@@ -322,7 +323,7 @@ auto constexpr SessionKeys = std::array<ApiKey, 157U>{ {
{ TR_KEY_remote_session_port, TR_KEY_remote_session_port_kebab },
{ TR_KEY_remote_session_requires_authentication, TR_KEY_remote_session_requres_authentication_kebab },
{ TR_KEY_remote_session_username, TR_KEY_remote_session_username_kebab },
{ TR_KEY_rename_partial_files, TR_KEY_rename_partial_files_kebab },
{ TR_KEY_rename_partial_files, TR_KEY_rename_partial_files_kebab_APICOMPAT },
{ TR_KEY_rpc_authentication_required, TR_KEY_rpc_authentication_required_kebab },
{ TR_KEY_rpc_bind_address, TR_KEY_rpc_bind_address_kebab },
{ TR_KEY_rpc_enabled, TR_KEY_rpc_enabled_kebab },
@@ -336,15 +337,15 @@ auto constexpr SessionKeys = std::array<ApiKey, 157U>{ {
{ TR_KEY_rpc_whitelist, TR_KEY_rpc_whitelist_kebab },
{ TR_KEY_rpc_whitelist_enabled, TR_KEY_rpc_whitelist_enabled_kebab },
{ TR_KEY_scrape_paused_torrents_enabled, TR_KEY_scrape_paused_torrents_enabled_kebab },
{ TR_KEY_script_torrent_added_enabled, TR_KEY_script_torrent_added_enabled_kebab },
{ TR_KEY_script_torrent_added_filename, TR_KEY_script_torrent_added_filename_kebab },
{ TR_KEY_script_torrent_done_enabled, TR_KEY_script_torrent_done_enabled_kebab },
{ TR_KEY_script_torrent_done_filename, TR_KEY_script_torrent_done_filename_kebab },
{ TR_KEY_script_torrent_done_seeding_enabled, TR_KEY_script_torrent_done_seeding_enabled_kebab },
{ TR_KEY_script_torrent_done_seeding_filename, TR_KEY_script_torrent_done_seeding_filename_kebab },
{ TR_KEY_script_torrent_added_enabled, TR_KEY_script_torrent_added_enabled_kebab_APICOMPAT },
{ TR_KEY_script_torrent_added_filename, TR_KEY_script_torrent_added_filename_kebab_APICOMPAT },
{ TR_KEY_script_torrent_done_enabled, TR_KEY_script_torrent_done_enabled_kebab_APICOMPAT },
{ TR_KEY_script_torrent_done_filename, TR_KEY_script_torrent_done_filename_kebab_APICOMPAT },
{ TR_KEY_script_torrent_done_seeding_enabled, TR_KEY_script_torrent_done_seeding_enabled_kebab_APICOMPAT },
{ TR_KEY_script_torrent_done_seeding_filename, TR_KEY_script_torrent_done_seeding_filename_kebab_APICOMPAT },
{ TR_KEY_seconds_active, TR_KEY_seconds_active_kebab_APICOMPAT },
{ TR_KEY_seed_queue_enabled, TR_KEY_seed_queue_enabled_kebab },
{ TR_KEY_seed_queue_size, TR_KEY_seed_queue_size_kebab },
{ TR_KEY_seed_queue_enabled, TR_KEY_seed_queue_enabled_kebab_APICOMPAT },
{ TR_KEY_seed_queue_size, TR_KEY_seed_queue_size_kebab_APICOMPAT },
{ TR_KEY_seeding_time_seconds, TR_KEY_seeding_time_seconds_kebab_APICOMPAT },
{ TR_KEY_session_count, TR_KEY_session_count_kebab_APICOMPAT },
{ TR_KEY_show_active, TR_KEY_show_active_kebab_APICOMPAT },
@@ -377,14 +378,14 @@ auto constexpr SessionKeys = std::array<ApiKey, 157U>{ {
{ TR_KEY_sort_mode, TR_KEY_sort_mode_kebab },
{ TR_KEY_sort_reversed, TR_KEY_sort_reversed_kebab },
{ TR_KEY_speed_Bps, TR_KEY_speed_Bps_kebab_APICOMPAT },
{ TR_KEY_speed_limit_down, TR_KEY_speed_limit_down_kebab },
{ TR_KEY_speed_limit_down_enabled, TR_KEY_speed_limit_down_enabled_kebab },
{ TR_KEY_speed_limit_up, TR_KEY_speed_limit_up_kebab },
{ TR_KEY_speed_limit_up_enabled, TR_KEY_speed_limit_up_enabled_kebab },
{ TR_KEY_start_added_torrents, TR_KEY_start_added_torrents_kebab },
{ TR_KEY_speed_limit_down, TR_KEY_speed_limit_down_kebab_APICOMPAT },
{ TR_KEY_speed_limit_down_enabled, TR_KEY_speed_limit_down_enabled_kebab_APICOMPAT },
{ TR_KEY_speed_limit_up, TR_KEY_speed_limit_up_kebab_APICOMPAT },
{ TR_KEY_speed_limit_up_enabled, TR_KEY_speed_limit_up_enabled_kebab_APICOMPAT },
{ TR_KEY_start_added_torrents, TR_KEY_start_added_torrents_kebab_APICOMPAT },
{ TR_KEY_start_minimized, TR_KEY_start_minimized_kebab },
{ TR_KEY_statusbar_stats, TR_KEY_statusbar_stats_kebab },
{ TR_KEY_tcp_enabled, TR_KEY_tcp_enabled_kebab },
{ TR_KEY_tcp_enabled, TR_KEY_tcp_enabled_kebab_APICOMPAT },
{ TR_KEY_time_checked, TR_KEY_time_checked_kebab },
{ TR_KEY_torrent_added_notification_enabled, TR_KEY_torrent_added_notification_enabled_kebab },
{ TR_KEY_torrent_added_verify_mode, TR_KEY_torrent_added_verify_mode_kebab },
@@ -392,12 +393,12 @@ auto constexpr SessionKeys = std::array<ApiKey, 157U>{ {
{ TR_KEY_torrent_complete_sound_command, TR_KEY_torrent_complete_sound_command_kebab },
{ TR_KEY_torrent_complete_sound_enabled, TR_KEY_torrent_complete_sound_enabled_kebab },
{ TR_KEY_trash_can_enabled, TR_KEY_trash_can_enabled_kebab },
{ TR_KEY_trash_original_torrent_files, TR_KEY_trash_original_torrent_files_kebab },
{ TR_KEY_trash_original_torrent_files, TR_KEY_trash_original_torrent_files_kebab_APICOMPAT },
{ TR_KEY_upload_slots_per_torrent, TR_KEY_upload_slots_per_torrent_kebab },
{ TR_KEY_uploaded_bytes, TR_KEY_uploaded_bytes_kebab_APICOMPAT },
{ TR_KEY_use_global_speed_limit, TR_KEY_use_global_speed_limit_kebab_APICOMPAT },
{ TR_KEY_use_speed_limit, TR_KEY_use_speed_limit_kebab_APICOMPAT },
{ TR_KEY_utp_enabled, TR_KEY_utp_enabled_kebab },
{ TR_KEY_utp_enabled, TR_KEY_utp_enabled_kebab_APICOMPAT },
{ TR_KEY_watch_dir, TR_KEY_watch_dir_kebab },
{ TR_KEY_watch_dir_enabled, TR_KEY_watch_dir_enabled_kebab },
{ TR_KEY_watch_dir_force_generic, TR_KEY_watch_dir_force_generic_kebab },
@@ -494,7 +495,7 @@ struct State
if (auto const* const args = top.find_if<tr_variant::Map>(state.was_jsonrpc ? TR_KEY_result : TR_KEY_arguments))
{
state.is_free_space_response = args->contains(TR_KEY_path) &&
args->contains(state.was_jsonrpc ? TR_KEY_size_bytes : TR_KEY_size_bytes_kebab);
args->contains(state.was_jsonrpc ? TR_KEY_size_bytes : TR_KEY_size_bytes_kebab_APICOMPAT);
}
}
@@ -509,7 +510,9 @@ struct State
// download-dir in Tr4 session-get
// downloadDir in Tr4 torrent-get
// download_dir in Tr5
if (state.is_rpc && (src == TR_KEY_download_dir_camel || src == TR_KEY_download_dir_kebab || src == TR_KEY_download_dir))
if (state.is_rpc &&
(src == TR_KEY_download_dir_camel_APICOMPAT || src == TR_KEY_download_dir_kebab_APICOMPAT ||
src == TR_KEY_download_dir))
{
if (state.style == Style::Tr5)
{
@@ -518,19 +521,20 @@ struct State
if (state.is_torrent)
{
return TR_KEY_download_dir_camel;
return TR_KEY_download_dir_camel_APICOMPAT;
}
return TR_KEY_download_dir_kebab;
return TR_KEY_download_dir_kebab_APICOMPAT;
}
// Crazy case:
// totalSize in Tr4 torrent-get
// total_size in Tr4 free-space
// total_size in Tr5
if (state.is_rpc && state.is_free_space_response && (src == TR_KEY_total_size || src == TR_KEY_total_size_camel))
if (state.is_rpc && state.is_free_space_response && (src == TR_KEY_total_size || src == TR_KEY_total_size_camel_APICOMPAT))
{
return state.style == Style::Tr5 || state.is_free_space_response ? TR_KEY_total_size : TR_KEY_total_size_camel;
return state.style == Style::Tr5 || state.is_free_space_response ? TR_KEY_total_size :
TR_KEY_total_size_camel_APICOMPAT;
}
// Crazy cases done.
@@ -682,6 +686,10 @@ void convert_jsonrpc(tr_variant::Map& top, State const& state)
if (is_jsonrpc)
{
top.try_emplace(TR_KEY_jsonrpc, tr_variant::unmanaged_string(JsonRpc::Version));
if (auto const tag = top.value_if<int64_t>(TR_KEY_tag); state.was_legacy && !tag)
{
top.erase(TR_KEY_tag);
}
top.replace_key(TR_KEY_tag, TR_KEY_id);
}
else
@@ -719,7 +727,7 @@ void convert_jsonrpc(tr_variant::Map& top, State const& state)
if (auto* data = error.find_if<tr_variant::Map>(TR_KEY_data))
{
if (auto const errmsg = data->value_if<std::string_view>(TR_KEY_error_string_camel))
if (auto const errmsg = data->value_if<std::string_view>(TR_KEY_error_string_camel_APICOMPAT))
{
top.try_emplace(TR_KEY_result, *errmsg);
}

View File

@@ -33,26 +33,26 @@ using tr_quark = size_t;
enum // NOLINT(performance-enum-size)
{
TR_KEY_NONE, /* represented as an empty string */
TR_KEY_active_torrent_count_camel, /* rpc (deprecated) */
TR_KEY_active_torrent_count_camel_APICOMPAT,
TR_KEY_active_torrent_count, /* rpc */
TR_KEY_activity_date_kebab_APICOMPAT,
TR_KEY_activity_date_camel, /* rpc (deprecated) */
TR_KEY_activity_date_camel_APICOMPAT,
TR_KEY_activity_date, /* rpc, resume file */
TR_KEY_added, /* pex */
TR_KEY_added_date_kebab_APICOMPAT, /* resume file (legacy) */
TR_KEY_added_date_kebab_APICOMPAT,
TR_KEY_added_f, /* pex */
TR_KEY_added6, /* pex */
TR_KEY_added6_f, /* pex */
TR_KEY_added_date_camel, /* rpc (deprecated) */
TR_KEY_added_date_camel_APICOMPAT,
TR_KEY_added_date, /* rpc, resume file */
TR_KEY_address, /* rpc */
TR_KEY_alt_speed_down_kebab, /* rpc, settings (deprecated) */
TR_KEY_alt_speed_enabled_kebab, /* rpc, settings (deprecated) */
TR_KEY_alt_speed_time_begin_kebab, /* rpc, settings (deprecated) */
TR_KEY_alt_speed_time_day_kebab, /* rpc, settings (deprecated) */
TR_KEY_alt_speed_time_enabled_kebab, /* rpc, settings (deprecated) */
TR_KEY_alt_speed_time_end_kebab, /* rpc, settings (deprecated) */
TR_KEY_alt_speed_up_kebab, /* rpc, settings (deprecated) */
TR_KEY_alt_speed_down_kebab_APICOMPAT,
TR_KEY_alt_speed_enabled_kebab_APICOMPAT,
TR_KEY_alt_speed_time_begin_kebab_APICOMPAT,
TR_KEY_alt_speed_time_day_kebab_APICOMPAT,
TR_KEY_alt_speed_time_enabled_kebab_APICOMPAT,
TR_KEY_alt_speed_time_end_kebab_APICOMPAT,
TR_KEY_alt_speed_up_kebab_APICOMPAT,
TR_KEY_alt_speed_down, /* rpc, settings */
TR_KEY_alt_speed_enabled, /* rpc, settings */
TR_KEY_alt_speed_time_begin, /* rpc, settings */
@@ -64,18 +64,18 @@ enum // NOLINT(performance-enum-size)
TR_KEY_announce_ip_kebab, /* settings (legacy) */
TR_KEY_announce_ip_enabled_kebab, /* settings (legacy) */
TR_KEY_announce_list, /* metainfo */
TR_KEY_announce_state_camel, /* rpc (deprecated) */
TR_KEY_announce_state_camel_APICOMPAT,
TR_KEY_announce_ip, /* settings */
TR_KEY_announce_ip_enabled, /* settings */
TR_KEY_announce_state, /* rpc */
TR_KEY_anti_brute_force_enabled_kebab, /* rpc, settings (deprecated) */
TR_KEY_anti_brute_force_threshold_kebab, /* rpc, settings (deprecated) */
TR_KEY_anti_brute_force_enabled_kebab_APICOMPAT,
TR_KEY_anti_brute_force_threshold_kebab_APICOMPAT,
TR_KEY_anti_brute_force_enabled, /* rpc, settings */
TR_KEY_anti_brute_force_threshold, /* rpc, settings */
TR_KEY_arguments, /* rpc */
TR_KEY_availability, // rpc
TR_KEY_bandwidth_priority_kebab_APICOMPAT,
TR_KEY_bandwidth_priority_camel,
TR_KEY_bandwidth_priority_camel_APICOMPAT,
TR_KEY_bandwidth_priority,
TR_KEY_begin_piece,
TR_KEY_bind_address_ipv4_kebab,
@@ -84,11 +84,11 @@ enum // NOLINT(performance-enum-size)
TR_KEY_bind_address_ipv6,
TR_KEY_bitfield,
TR_KEY_blocklist_date_kebab,
TR_KEY_blocklist_enabled_kebab,
TR_KEY_blocklist_size_kebab,
TR_KEY_blocklist_enabled_kebab_APICOMPAT,
TR_KEY_blocklist_size_kebab_APICOMPAT,
TR_KEY_blocklist_update_kebab,
TR_KEY_blocklist_updates_enabled_kebab,
TR_KEY_blocklist_url_kebab,
TR_KEY_blocklist_url_kebab_APICOMPAT,
TR_KEY_blocklist_date,
TR_KEY_blocklist_enabled,
TR_KEY_blocklist_size,
@@ -96,15 +96,15 @@ enum // NOLINT(performance-enum-size)
TR_KEY_blocklist_updates_enabled,
TR_KEY_blocklist_url,
TR_KEY_blocks,
TR_KEY_bytes_completed_camel,
TR_KEY_bytes_completed_camel_APICOMPAT,
TR_KEY_bytes_completed,
TR_KEY_bytes_to_client,
TR_KEY_bytes_to_peer,
TR_KEY_cache_size_mb_kebab,
TR_KEY_cache_size_mb_kebab_APICOMPAT,
TR_KEY_cache_size_mb,
TR_KEY_client_is_choked_camel,
TR_KEY_client_is_interested_camel,
TR_KEY_client_name_camel,
TR_KEY_client_is_choked_camel_APICOMPAT,
TR_KEY_client_is_interested_camel_APICOMPAT,
TR_KEY_client_name_camel_APICOMPAT,
TR_KEY_client_is_choked,
TR_KEY_client_is_interested,
TR_KEY_client_name,
@@ -113,48 +113,48 @@ enum // NOLINT(performance-enum-size)
TR_KEY_compact_view_kebab,
TR_KEY_compact_view,
TR_KEY_complete,
TR_KEY_config_dir_kebab,
TR_KEY_config_dir_kebab_APICOMPAT,
TR_KEY_config_dir,
TR_KEY_cookies,
TR_KEY_corrupt,
TR_KEY_corrupt_ever_camel,
TR_KEY_corrupt_ever_camel_APICOMPAT,
TR_KEY_corrupt_ever,
TR_KEY_created_by,
TR_KEY_creation_date,
TR_KEY_creator,
TR_KEY_cumulative_stats_kebab,
TR_KEY_cumulative_stats_kebab_APICOMPAT,
TR_KEY_cumulative_stats,
TR_KEY_current_stats_kebab,
TR_KEY_current_stats_kebab_APICOMPAT,
TR_KEY_current_stats,
TR_KEY_data,
TR_KEY_date_created_camel,
TR_KEY_date_created_camel_APICOMPAT,
TR_KEY_date_created,
TR_KEY_default_trackers_kebab,
TR_KEY_default_trackers_kebab_APICOMPAT,
TR_KEY_default_trackers,
TR_KEY_delete_local_data_kebab,
TR_KEY_delete_local_data_kebab_APICOMPAT,
TR_KEY_delete_local_data,
TR_KEY_desired_available_camel,
TR_KEY_desired_available_camel_APICOMPAT,
TR_KEY_desired_available,
TR_KEY_destination,
TR_KEY_details_window_height_kebab,
TR_KEY_details_window_width_kebab,
TR_KEY_details_window_height,
TR_KEY_details_window_width,
TR_KEY_dht_enabled_kebab,
TR_KEY_dht_enabled_kebab_APICOMPAT,
TR_KEY_dht_enabled,
TR_KEY_dnd,
TR_KEY_done_date_kebab_APICOMPAT,
TR_KEY_done_date_camel,
TR_KEY_done_date_camel_APICOMPAT,
TR_KEY_done_date,
TR_KEY_download_dir_kebab,
TR_KEY_download_dir_free_space_kebab,
TR_KEY_download_queue_enabled_kebab,
TR_KEY_download_queue_size_kebab,
TR_KEY_download_count_camel,
TR_KEY_download_dir_camel,
TR_KEY_download_limit_camel,
TR_KEY_download_limited_camel,
TR_KEY_download_speed_camel,
TR_KEY_download_dir_kebab_APICOMPAT,
TR_KEY_download_dir_free_space_kebab_APICOMPAT,
TR_KEY_download_queue_enabled_kebab_APICOMPAT,
TR_KEY_download_queue_size_kebab_APICOMPAT,
TR_KEY_download_count_camel_APICOMPAT,
TR_KEY_download_dir_camel_APICOMPAT,
TR_KEY_download_limit_camel_APICOMPAT,
TR_KEY_download_limited_camel_APICOMPAT,
TR_KEY_download_speed_camel_APICOMPAT,
TR_KEY_download_count,
TR_KEY_download_dir,
TR_KEY_download_dir_free_space,
@@ -165,8 +165,8 @@ enum // NOLINT(performance-enum-size)
TR_KEY_download_speed,
TR_KEY_downloaded,
TR_KEY_downloaded_bytes_kebab_APICOMPAT,
TR_KEY_downloaded_bytes_camel,
TR_KEY_downloaded_ever_camel,
TR_KEY_downloaded_bytes_camel_APICOMPAT,
TR_KEY_downloaded_ever_camel_APICOMPAT,
TR_KEY_downloaded_bytes,
TR_KEY_downloaded_ever,
TR_KEY_downloader_count,
@@ -175,28 +175,28 @@ enum // NOLINT(performance-enum-size)
TR_KEY_dropped,
TR_KEY_dropped6,
TR_KEY_e,
TR_KEY_edit_date_camel,
TR_KEY_edit_date_camel_APICOMPAT,
TR_KEY_edit_date,
TR_KEY_encoding,
TR_KEY_encryption,
TR_KEY_end_piece,
TR_KEY_error,
TR_KEY_error_string_camel,
TR_KEY_error_string_camel_APICOMPAT,
TR_KEY_error_string,
TR_KEY_eta,
TR_KEY_eta_idle_camel,
TR_KEY_eta_idle_camel_APICOMPAT,
TR_KEY_eta_idle,
TR_KEY_fields,
TR_KEY_file_count_kebab,
TR_KEY_file_stats_camel,
TR_KEY_file_count_kebab_APICOMPAT,
TR_KEY_file_stats_camel_APICOMPAT,
TR_KEY_file_count,
TR_KEY_file_stats,
TR_KEY_filename,
TR_KEY_files,
TR_KEY_files_added_kebab_APICOMPAT,
TR_KEY_files_unwanted_kebab,
TR_KEY_files_wanted_kebab,
TR_KEY_files_added_camel,
TR_KEY_files_unwanted_kebab_APICOMPAT,
TR_KEY_files_wanted_kebab_APICOMPAT,
TR_KEY_files_added_camel_APICOMPAT,
TR_KEY_files_added,
TR_KEY_files_unwanted,
TR_KEY_files_wanted,
@@ -206,19 +206,19 @@ enum // NOLINT(performance-enum-size)
TR_KEY_filter_mode,
TR_KEY_filter_text,
TR_KEY_filter_trackers,
TR_KEY_flag_str_camel,
TR_KEY_flag_str_camel_APICOMPAT,
TR_KEY_flag_str,
TR_KEY_flags,
TR_KEY_format,
TR_KEY_free_space_kebab,
TR_KEY_free_space,
TR_KEY_from_cache_camel,
TR_KEY_from_dht_camel,
TR_KEY_from_incoming_camel,
TR_KEY_from_lpd_camel,
TR_KEY_from_ltep_camel,
TR_KEY_from_pex_camel,
TR_KEY_from_tracker_camel,
TR_KEY_from_cache_camel_APICOMPAT,
TR_KEY_from_dht_camel_APICOMPAT,
TR_KEY_from_incoming_camel_APICOMPAT,
TR_KEY_from_lpd_camel_APICOMPAT,
TR_KEY_from_ltep_camel_APICOMPAT,
TR_KEY_from_pex_camel_APICOMPAT,
TR_KEY_from_tracker_camel_APICOMPAT,
TR_KEY_from_cache,
TR_KEY_from_dht,
TR_KEY_from_incoming,
@@ -231,33 +231,33 @@ enum // NOLINT(performance-enum-size)
TR_KEY_group_set_kebab,
TR_KEY_group_get,
TR_KEY_group_set,
TR_KEY_has_announced_camel,
TR_KEY_has_scraped_camel,
TR_KEY_has_announced_camel_APICOMPAT,
TR_KEY_has_scraped_camel_APICOMPAT,
TR_KEY_has_announced,
TR_KEY_has_scraped,
TR_KEY_hash_string_camel,
TR_KEY_hash_string_camel_APICOMPAT,
TR_KEY_hash_string,
TR_KEY_have_unchecked_camel,
TR_KEY_have_valid_camel,
TR_KEY_have_unchecked_camel_APICOMPAT,
TR_KEY_have_valid_camel_APICOMPAT,
TR_KEY_have_unchecked,
TR_KEY_have_valid,
TR_KEY_honors_session_limits_camel,
TR_KEY_honors_session_limits_camel_APICOMPAT,
TR_KEY_honors_session_limits,
TR_KEY_host,
TR_KEY_id,
TR_KEY_id_timestamp,
TR_KEY_idle_limit_kebab_APICOMPAT,
TR_KEY_idle_mode_kebab_APICOMPAT,
TR_KEY_idle_seeding_limit_kebab,
TR_KEY_idle_seeding_limit_enabled_kebab,
TR_KEY_idle_seeding_limit_kebab_APICOMPAT,
TR_KEY_idle_seeding_limit_enabled_kebab_APICOMPAT,
TR_KEY_idle_limit,
TR_KEY_idle_mode,
TR_KEY_idle_seeding_limit,
TR_KEY_idle_seeding_limit_enabled,
TR_KEY_ids,
TR_KEY_incomplete,
TR_KEY_incomplete_dir_kebab,
TR_KEY_incomplete_dir_enabled_kebab,
TR_KEY_incomplete_dir_kebab_APICOMPAT,
TR_KEY_incomplete_dir_enabled_kebab_APICOMPAT,
TR_KEY_incomplete_dir,
TR_KEY_incomplete_dir_enabled,
TR_KEY_info,
@@ -266,15 +266,15 @@ enum // NOLINT(performance-enum-size)
TR_KEY_ip_protocol,
TR_KEY_ipv4,
TR_KEY_ipv6,
TR_KEY_is_backup_camel,
TR_KEY_is_downloading_from_camel,
TR_KEY_is_encrypted_camel,
TR_KEY_is_finished_camel,
TR_KEY_is_incoming_camel,
TR_KEY_is_private_camel,
TR_KEY_is_stalled_camel,
TR_KEY_is_utp_camel,
TR_KEY_is_uploading_to_camel,
TR_KEY_is_backup_camel_APICOMPAT,
TR_KEY_is_downloading_from_camel_APICOMPAT,
TR_KEY_is_encrypted_camel_APICOMPAT,
TR_KEY_is_finished_camel_APICOMPAT,
TR_KEY_is_incoming_camel_APICOMPAT,
TR_KEY_is_private_camel_APICOMPAT,
TR_KEY_is_stalled_camel_APICOMPAT,
TR_KEY_is_utp_camel_APICOMPAT,
TR_KEY_is_uploading_to_camel_APICOMPAT,
TR_KEY_is_backup,
TR_KEY_is_downloading_from,
TR_KEY_is_encrypted,
@@ -286,17 +286,17 @@ enum // NOLINT(performance-enum-size)
TR_KEY_is_utp,
TR_KEY_jsonrpc,
TR_KEY_labels,
TR_KEY_last_announce_peer_count_camel,
TR_KEY_last_announce_result_camel,
TR_KEY_last_announce_start_time_camel,
TR_KEY_last_announce_succeeded_camel,
TR_KEY_last_announce_time_camel,
TR_KEY_last_announce_timed_out_camel,
TR_KEY_last_scrape_result_camel,
TR_KEY_last_scrape_start_time_camel,
TR_KEY_last_scrape_succeeded_camel,
TR_KEY_last_scrape_time_camel,
TR_KEY_last_scrape_timed_out_camel,
TR_KEY_last_announce_peer_count_camel_APICOMPAT,
TR_KEY_last_announce_result_camel_APICOMPAT,
TR_KEY_last_announce_start_time_camel_APICOMPAT,
TR_KEY_last_announce_succeeded_camel_APICOMPAT,
TR_KEY_last_announce_time_camel_APICOMPAT,
TR_KEY_last_announce_timed_out_camel_APICOMPAT,
TR_KEY_last_scrape_result_camel_APICOMPAT,
TR_KEY_last_scrape_start_time_camel_APICOMPAT,
TR_KEY_last_scrape_succeeded_camel_APICOMPAT,
TR_KEY_last_scrape_time_camel_APICOMPAT,
TR_KEY_last_scrape_timed_out_camel_APICOMPAT,
TR_KEY_last_announce_peer_count,
TR_KEY_last_announce_result,
TR_KEY_last_announce_start_time,
@@ -308,16 +308,16 @@ enum // NOLINT(performance-enum-size)
TR_KEY_last_scrape_succeeded,
TR_KEY_last_scrape_time,
TR_KEY_last_scrape_timed_out,
TR_KEY_leecher_count_camel,
TR_KEY_leecher_count_camel_APICOMPAT,
TR_KEY_leecher_count,
TR_KEY_left_until_done_camel,
TR_KEY_left_until_done_camel_APICOMPAT,
TR_KEY_left_until_done,
TR_KEY_length,
TR_KEY_location,
TR_KEY_lpd_enabled_kebab,
TR_KEY_lpd_enabled_kebab_APICOMPAT,
TR_KEY_lpd_enabled,
TR_KEY_m,
TR_KEY_magnet_link_camel,
TR_KEY_magnet_link_camel_APICOMPAT,
TR_KEY_magnet_link,
TR_KEY_main_window_height_kebab,
TR_KEY_main_window_is_maximized_kebab,
@@ -331,20 +331,20 @@ enum // NOLINT(performance-enum-size)
TR_KEY_main_window_width,
TR_KEY_main_window_x,
TR_KEY_main_window_y,
TR_KEY_manual_announce_time_camel,
TR_KEY_manual_announce_time_camel_APICOMPAT,
TR_KEY_manual_announce_time,
TR_KEY_max_peers_kebab_APICOMPAT,
TR_KEY_max_connected_peers_camel,
TR_KEY_max_connected_peers_camel_APICOMPAT,
TR_KEY_max_connected_peers,
TR_KEY_max_peers,
TR_KEY_memory_bytes_kebab,
TR_KEY_memory_units_kebab,
TR_KEY_memory_bytes_kebab_APICOMPAT,
TR_KEY_memory_units_kebab_APICOMPAT,
TR_KEY_memory_bytes,
TR_KEY_memory_units,
TR_KEY_message,
TR_KEY_message_level_kebab,
TR_KEY_message_level,
TR_KEY_metadata_percent_complete_camel,
TR_KEY_metadata_percent_complete_camel_APICOMPAT,
TR_KEY_metadata_percent_complete,
TR_KEY_metadata_size,
TR_KEY_metainfo,
@@ -353,8 +353,8 @@ enum // NOLINT(performance-enum-size)
TR_KEY_msg_type,
TR_KEY_mtimes,
TR_KEY_name,
TR_KEY_next_announce_time_camel,
TR_KEY_next_scrape_time_camel,
TR_KEY_next_announce_time_camel_APICOMPAT,
TR_KEY_next_scrape_time_camel_APICOMPAT,
TR_KEY_next_announce_time,
TR_KEY_next_scrape_time,
TR_KEY_nodes,
@@ -365,19 +365,19 @@ enum // NOLINT(performance-enum-size)
TR_KEY_params,
TR_KEY_path,
TR_KEY_paused,
TR_KEY_paused_torrent_count_camel,
TR_KEY_paused_torrent_count_camel_APICOMPAT,
TR_KEY_paused_torrent_count,
TR_KEY_peer_congestion_algorithm_kebab,
TR_KEY_peer_limit_kebab,
TR_KEY_peer_limit_global_kebab,
TR_KEY_peer_limit_per_torrent_kebab,
TR_KEY_peer_port_kebab,
TR_KEY_peer_limit_kebab_APICOMPAT,
TR_KEY_peer_limit_global_kebab_APICOMPAT,
TR_KEY_peer_limit_per_torrent_kebab_APICOMPAT,
TR_KEY_peer_port_kebab_APICOMPAT,
TR_KEY_peer_port_random_high_kebab,
TR_KEY_peer_port_random_low_kebab,
TR_KEY_peer_port_random_on_start_kebab,
TR_KEY_peer_port_random_on_start_kebab_APICOMPAT,
TR_KEY_peer_socket_tos_kebab,
TR_KEY_peer_is_choked_camel,
TR_KEY_peer_is_interested_camel,
TR_KEY_peer_is_choked_camel_APICOMPAT,
TR_KEY_peer_is_interested_camel_APICOMPAT,
TR_KEY_peer_congestion_algorithm,
TR_KEY_peer_id,
TR_KEY_peer_is_choked,
@@ -394,44 +394,44 @@ enum // NOLINT(performance-enum-size)
TR_KEY_peers2,
TR_KEY_peers2_6_kebab_APICOMPAT,
TR_KEY_peers2_6,
TR_KEY_peers_connected_camel,
TR_KEY_peers_from_camel,
TR_KEY_peers_getting_from_us_camel,
TR_KEY_peers_sending_to_us_camel,
TR_KEY_peers_connected_camel_APICOMPAT,
TR_KEY_peers_from_camel_APICOMPAT,
TR_KEY_peers_getting_from_us_camel_APICOMPAT,
TR_KEY_peers_sending_to_us_camel_APICOMPAT,
TR_KEY_peers_connected,
TR_KEY_peers_from,
TR_KEY_peers_getting_from_us,
TR_KEY_peers_sending_to_us,
TR_KEY_percent_complete_camel,
TR_KEY_percent_done_camel,
TR_KEY_percent_complete_camel_APICOMPAT,
TR_KEY_percent_done_camel_APICOMPAT,
TR_KEY_percent_complete,
TR_KEY_percent_done,
TR_KEY_pex_enabled_kebab,
TR_KEY_pex_enabled_kebab_APICOMPAT,
TR_KEY_pex_enabled,
TR_KEY_pidfile,
TR_KEY_piece,
TR_KEY_piece_length,
TR_KEY_piece_count_camel,
TR_KEY_piece_size_camel,
TR_KEY_piece_count_camel_APICOMPAT,
TR_KEY_piece_size_camel_APICOMPAT,
TR_KEY_piece_count,
TR_KEY_piece_size,
TR_KEY_pieces,
TR_KEY_port,
TR_KEY_port_forwarding_enabled_kebab,
TR_KEY_port_is_open_kebab,
TR_KEY_port_forwarding_enabled_kebab_APICOMPAT,
TR_KEY_port_is_open_kebab_APICOMPAT,
TR_KEY_port_test_kebab,
TR_KEY_port_forwarding_enabled,
TR_KEY_port_is_open,
TR_KEY_port_test,
TR_KEY_preallocation,
TR_KEY_preferred_transports,
TR_KEY_primary_mime_type_kebab,
TR_KEY_primary_mime_type_kebab_APICOMPAT,
TR_KEY_primary_mime_type,
TR_KEY_priorities,
TR_KEY_priority,
TR_KEY_priority_high_kebab,
TR_KEY_priority_low_kebab,
TR_KEY_priority_normal_kebab,
TR_KEY_priority_high_kebab_APICOMPAT,
TR_KEY_priority_low_kebab_APICOMPAT,
TR_KEY_priority_normal_kebab_APICOMPAT,
TR_KEY_priority_high,
TR_KEY_priority_low,
TR_KEY_priority_normal,
@@ -444,9 +444,9 @@ enum // NOLINT(performance-enum-size)
TR_KEY_queue_move_down_kebab,
TR_KEY_queue_move_top_kebab,
TR_KEY_queue_move_up_kebab,
TR_KEY_queue_stalled_enabled_kebab,
TR_KEY_queue_stalled_minutes_kebab,
TR_KEY_queue_position_camel,
TR_KEY_queue_stalled_enabled_kebab_APICOMPAT,
TR_KEY_queue_stalled_minutes_kebab_APICOMPAT,
TR_KEY_queue_position_camel_APICOMPAT,
TR_KEY_queue_move_bottom,
TR_KEY_queue_move_down,
TR_KEY_queue_move_top,
@@ -454,10 +454,10 @@ enum // NOLINT(performance-enum-size)
TR_KEY_queue_position,
TR_KEY_queue_stalled_enabled,
TR_KEY_queue_stalled_minutes,
TR_KEY_rate_download_camel,
TR_KEY_rate_to_client_camel,
TR_KEY_rate_to_peer_camel,
TR_KEY_rate_upload_camel,
TR_KEY_rate_download_camel_APICOMPAT,
TR_KEY_rate_to_client_camel_APICOMPAT,
TR_KEY_rate_to_peer_camel_APICOMPAT,
TR_KEY_rate_upload_camel_APICOMPAT,
TR_KEY_rate_download,
TR_KEY_rate_to_client,
TR_KEY_rate_to_peer,
@@ -470,9 +470,9 @@ enum // NOLINT(performance-enum-size)
TR_KEY_ratio_mode,
TR_KEY_read_clipboard_kebab,
TR_KEY_read_clipboard,
TR_KEY_recently_active_kebab,
TR_KEY_recently_active_kebab_APICOMPAT,
TR_KEY_recently_active,
TR_KEY_recheck_progress_camel,
TR_KEY_recheck_progress_camel_APICOMPAT,
TR_KEY_recheck_progress,
TR_KEY_remote_session_enabled_kebab,
TR_KEY_remote_session_host_kebab,
@@ -490,7 +490,7 @@ enum // NOLINT(performance-enum-size)
TR_KEY_remote_session_rpc_url_path,
TR_KEY_remote_session_username,
TR_KEY_removed,
TR_KEY_rename_partial_files_kebab,
TR_KEY_rename_partial_files_kebab_APICOMPAT,
TR_KEY_rename_partial_files,
TR_KEY_reqq,
TR_KEY_result,
@@ -504,9 +504,9 @@ enum // NOLINT(performance-enum-size)
TR_KEY_rpc_socket_mode_kebab,
TR_KEY_rpc_url_kebab,
TR_KEY_rpc_username_kebab,
TR_KEY_rpc_version_kebab,
TR_KEY_rpc_version_minimum_kebab,
TR_KEY_rpc_version_semver_kebab,
TR_KEY_rpc_version_kebab_APICOMPAT,
TR_KEY_rpc_version_minimum_kebab_APICOMPAT,
TR_KEY_rpc_version_semver_kebab_APICOMPAT,
TR_KEY_rpc_whitelist_kebab,
TR_KEY_rpc_whitelist_enabled_kebab,
TR_KEY_rpc_authentication_required,
@@ -526,15 +526,15 @@ enum // NOLINT(performance-enum-size)
TR_KEY_rpc_whitelist_enabled,
TR_KEY_scrape,
TR_KEY_scrape_paused_torrents_enabled_kebab,
TR_KEY_scrape_state_camel,
TR_KEY_scrape_state_camel_APICOMPAT,
TR_KEY_scrape_paused_torrents_enabled,
TR_KEY_scrape_state,
TR_KEY_script_torrent_added_enabled_kebab,
TR_KEY_script_torrent_added_filename_kebab,
TR_KEY_script_torrent_done_enabled_kebab,
TR_KEY_script_torrent_done_filename_kebab,
TR_KEY_script_torrent_done_seeding_enabled_kebab,
TR_KEY_script_torrent_done_seeding_filename_kebab,
TR_KEY_script_torrent_added_enabled_kebab_APICOMPAT,
TR_KEY_script_torrent_added_filename_kebab_APICOMPAT,
TR_KEY_script_torrent_done_enabled_kebab_APICOMPAT,
TR_KEY_script_torrent_done_filename_kebab_APICOMPAT,
TR_KEY_script_torrent_done_seeding_enabled_kebab_APICOMPAT,
TR_KEY_script_torrent_done_seeding_filename_kebab_APICOMPAT,
TR_KEY_script_torrent_added_enabled,
TR_KEY_script_torrent_added_filename,
TR_KEY_script_torrent_done_enabled,
@@ -542,19 +542,19 @@ enum // NOLINT(performance-enum-size)
TR_KEY_script_torrent_done_seeding_enabled,
TR_KEY_script_torrent_done_seeding_filename,
TR_KEY_seconds_active_kebab_APICOMPAT,
TR_KEY_seconds_active_camel,
TR_KEY_seconds_downloading_camel,
TR_KEY_seconds_seeding_camel,
TR_KEY_seconds_active_camel_APICOMPAT,
TR_KEY_seconds_downloading_camel_APICOMPAT,
TR_KEY_seconds_seeding_camel_APICOMPAT,
TR_KEY_seconds_active,
TR_KEY_seconds_downloading,
TR_KEY_seconds_seeding,
TR_KEY_seed_queue_enabled_kebab,
TR_KEY_seed_queue_size_kebab,
TR_KEY_seed_idle_limit_camel,
TR_KEY_seed_idle_mode_camel,
TR_KEY_seed_ratio_limit_camel,
TR_KEY_seed_ratio_limited_camel,
TR_KEY_seed_ratio_mode_camel,
TR_KEY_seed_queue_enabled_kebab_APICOMPAT,
TR_KEY_seed_queue_size_kebab_APICOMPAT,
TR_KEY_seed_idle_limit_camel_APICOMPAT,
TR_KEY_seed_idle_mode_camel_APICOMPAT,
TR_KEY_seed_ratio_limit_camel_APICOMPAT,
TR_KEY_seed_ratio_limited_camel_APICOMPAT,
TR_KEY_seed_ratio_mode_camel_APICOMPAT,
TR_KEY_seed_idle_limit,
TR_KEY_seed_idle_mode,
TR_KEY_seed_queue_enabled,
@@ -562,7 +562,7 @@ enum // NOLINT(performance-enum-size)
TR_KEY_seed_ratio_limit,
TR_KEY_seed_ratio_limited,
TR_KEY_seed_ratio_mode,
TR_KEY_seeder_count_camel,
TR_KEY_seeder_count_camel_APICOMPAT,
TR_KEY_seeder_count,
TR_KEY_seeding_time_seconds_kebab_APICOMPAT,
TR_KEY_seeding_time_seconds,
@@ -571,10 +571,10 @@ enum // NOLINT(performance-enum-size)
TR_KEY_session_close_kebab,
TR_KEY_session_count_kebab_APICOMPAT,
TR_KEY_session_get_kebab,
TR_KEY_session_id_kebab,
TR_KEY_session_id_kebab_APICOMPAT,
TR_KEY_session_set_kebab,
TR_KEY_session_stats_kebab,
TR_KEY_session_count_camel,
TR_KEY_session_count_camel_APICOMPAT,
TR_KEY_session_close,
TR_KEY_session_count,
TR_KEY_session_get,
@@ -614,9 +614,9 @@ enum // NOLINT(performance-enum-size)
TR_KEY_show_tracker_scrapes,
TR_KEY_show_verifying,
TR_KEY_sitename,
TR_KEY_size_bytes_kebab,
TR_KEY_size_units_kebab,
TR_KEY_size_when_done_camel,
TR_KEY_size_bytes_kebab_APICOMPAT,
TR_KEY_size_units_kebab_APICOMPAT,
TR_KEY_size_when_done_camel_APICOMPAT,
TR_KEY_size_bytes,
TR_KEY_size_units,
TR_KEY_size_when_done,
@@ -650,12 +650,12 @@ enum // NOLINT(performance-enum-size)
TR_KEY_source,
TR_KEY_speed,
TR_KEY_speed_Bps_kebab_APICOMPAT,
TR_KEY_speed_bytes_kebab,
TR_KEY_speed_limit_down_kebab,
TR_KEY_speed_limit_down_enabled_kebab,
TR_KEY_speed_limit_up_kebab,
TR_KEY_speed_limit_up_enabled_kebab,
TR_KEY_speed_units_kebab,
TR_KEY_speed_bytes_kebab_APICOMPAT,
TR_KEY_speed_limit_down_kebab_APICOMPAT,
TR_KEY_speed_limit_down_enabled_kebab_APICOMPAT,
TR_KEY_speed_limit_up_kebab_APICOMPAT,
TR_KEY_speed_limit_up_enabled_kebab_APICOMPAT,
TR_KEY_speed_units_kebab_APICOMPAT,
TR_KEY_speed_Bps,
TR_KEY_speed_bytes,
TR_KEY_speed_limit_down,
@@ -663,9 +663,9 @@ enum // NOLINT(performance-enum-size)
TR_KEY_speed_limit_up,
TR_KEY_speed_limit_up_enabled,
TR_KEY_speed_units,
TR_KEY_start_added_torrents_kebab,
TR_KEY_start_added_torrents_kebab_APICOMPAT,
TR_KEY_start_minimized_kebab,
TR_KEY_start_date_camel,
TR_KEY_start_date_camel_APICOMPAT,
TR_KEY_start_added_torrents,
TR_KEY_start_date,
TR_KEY_start_minimized,
@@ -674,19 +674,19 @@ enum // NOLINT(performance-enum-size)
TR_KEY_statusbar_stats_kebab,
TR_KEY_statusbar_stats,
TR_KEY_tag,
TR_KEY_tcp_enabled_kebab,
TR_KEY_tcp_enabled_kebab_APICOMPAT,
TR_KEY_tcp_enabled,
TR_KEY_tier,
TR_KEY_time_checked_kebab,
TR_KEY_time_checked,
TR_KEY_torrent_add_kebab,
TR_KEY_torrent_added_kebab,
TR_KEY_torrent_added_kebab_APICOMPAT,
TR_KEY_torrent_added_notification_enabled_kebab,
TR_KEY_torrent_added_verify_mode_kebab,
TR_KEY_torrent_complete_notification_enabled_kebab,
TR_KEY_torrent_complete_sound_command_kebab,
TR_KEY_torrent_complete_sound_enabled_kebab,
TR_KEY_torrent_duplicate_kebab,
TR_KEY_torrent_duplicate_kebab_APICOMPAT,
TR_KEY_torrent_get_kebab,
TR_KEY_torrent_reannounce_kebab,
TR_KEY_torrent_remove_kebab,
@@ -697,8 +697,8 @@ enum // NOLINT(performance-enum-size)
TR_KEY_torrent_start_now_kebab,
TR_KEY_torrent_stop_kebab,
TR_KEY_torrent_verify_kebab,
TR_KEY_torrent_count_camel,
TR_KEY_torrent_file_camel,
TR_KEY_torrent_count_camel_APICOMPAT,
TR_KEY_torrent_file_camel_APICOMPAT,
TR_KEY_torrent_add,
TR_KEY_torrent_added,
TR_KEY_torrent_added_notification_enabled,
@@ -721,13 +721,13 @@ enum // NOLINT(performance-enum-size)
TR_KEY_torrent_stop,
TR_KEY_torrent_verify,
TR_KEY_torrents,
TR_KEY_total_size_camel,
TR_KEY_total_size_camel_APICOMPAT,
TR_KEY_total_size,
TR_KEY_tracker_add_camel,
TR_KEY_tracker_list_camel,
TR_KEY_tracker_remove_camel,
TR_KEY_tracker_replace_camel,
TR_KEY_tracker_stats_camel,
TR_KEY_tracker_add_camel_APICOMPAT,
TR_KEY_tracker_list_camel_APICOMPAT,
TR_KEY_tracker_remove_camel_APICOMPAT,
TR_KEY_tracker_replace_camel_APICOMPAT,
TR_KEY_tracker_stats_camel_APICOMPAT,
TR_KEY_tracker_add,
TR_KEY_tracker_list,
TR_KEY_tracker_remove,
@@ -735,16 +735,16 @@ enum // NOLINT(performance-enum-size)
TR_KEY_tracker_stats,
TR_KEY_trackers,
TR_KEY_trash_can_enabled_kebab,
TR_KEY_trash_original_torrent_files_kebab,
TR_KEY_trash_original_torrent_files_kebab_APICOMPAT,
TR_KEY_trash_can_enabled,
TR_KEY_trash_original_torrent_files,
TR_KEY_umask,
TR_KEY_units,
TR_KEY_upload_slots_per_torrent_kebab,
TR_KEY_upload_limit_camel,
TR_KEY_upload_limited_camel,
TR_KEY_upload_ratio_camel,
TR_KEY_upload_speed_camel,
TR_KEY_upload_limit_camel_APICOMPAT,
TR_KEY_upload_limited_camel_APICOMPAT,
TR_KEY_upload_ratio_camel_APICOMPAT,
TR_KEY_upload_speed_camel_APICOMPAT,
TR_KEY_upload_limit,
TR_KEY_upload_limited,
TR_KEY_upload_only,
@@ -753,8 +753,8 @@ enum // NOLINT(performance-enum-size)
TR_KEY_upload_speed,
TR_KEY_uploaded,
TR_KEY_uploaded_bytes_kebab_APICOMPAT,
TR_KEY_uploaded_bytes_camel,
TR_KEY_uploaded_ever_camel,
TR_KEY_uploaded_bytes_camel_APICOMPAT,
TR_KEY_uploaded_ever_camel_APICOMPAT,
TR_KEY_uploaded_bytes,
TR_KEY_uploaded_ever,
TR_KEY_url_list,
@@ -765,7 +765,7 @@ enum // NOLINT(performance-enum-size)
TR_KEY_ut_holepunch,
TR_KEY_ut_metadata,
TR_KEY_ut_pex,
TR_KEY_utp_enabled_kebab,
TR_KEY_utp_enabled_kebab_APICOMPAT,
TR_KEY_utp_enabled,
TR_KEY_v,
TR_KEY_version,
@@ -777,7 +777,7 @@ enum // NOLINT(performance-enum-size)
TR_KEY_watch_dir_enabled,
TR_KEY_watch_dir_force_generic,
TR_KEY_webseeds,
TR_KEY_webseeds_sending_to_us_camel,
TR_KEY_webseeds_sending_to_us_camel_APICOMPAT,
TR_KEY_webseeds_sending_to_us,
TR_KEY_yourip,
TR_N_KEYS

File diff suppressed because it is too large Load Diff

View File

@@ -50,6 +50,6 @@ enum Code : int16_t
using tr_rpc_response_func = std::function<void(tr_session* session, tr_variant&& response)>;
void tr_rpc_request_exec(tr_session* session, tr_variant const& request, tr_rpc_response_func&& callback = {});
void tr_rpc_request_exec(tr_session* session, tr_variant& request, tr_rpc_response_func&& callback = {});
void tr_rpc_request_exec(tr_session* session, std::string_view request, tr_rpc_response_func&& callback = {});

View File

@@ -1298,13 +1298,13 @@ private:
public:
/// constexpr fields
static constexpr std::array<std::tuple<tr_quark, tr_quark, TrScript>, 3> Scripts{
{ { TR_KEY_script_torrent_added_enabled_kebab, TR_KEY_script_torrent_added_filename_kebab, TR_SCRIPT_ON_TORRENT_ADDED },
{ TR_KEY_script_torrent_done_enabled_kebab, TR_KEY_script_torrent_done_filename_kebab, TR_SCRIPT_ON_TORRENT_DONE },
{ TR_KEY_script_torrent_done_seeding_enabled_kebab,
TR_KEY_script_torrent_done_seeding_filename_kebab,
TR_SCRIPT_ON_TORRENT_DONE_SEEDING } }
};
static constexpr std::array<std::tuple<tr_quark, tr_quark, TrScript>, 3> Scripts{ {
{ TR_KEY_script_torrent_added_enabled, TR_KEY_script_torrent_added_filename, TR_SCRIPT_ON_TORRENT_ADDED },
{ TR_KEY_script_torrent_done_enabled, TR_KEY_script_torrent_done_filename, TR_SCRIPT_ON_TORRENT_DONE },
{ TR_KEY_script_torrent_done_seeding_enabled,
TR_KEY_script_torrent_done_seeding_filename,
TR_SCRIPT_ON_TORRENT_DONE_SEEDING },
} };
private:
/// const fields

View File

@@ -147,7 +147,7 @@ void RpcClient::sendNetworkRequest(QByteArray const& body, QFutureInterface<RpcR
}
}
void RpcClient::sendLocalRequest(tr_variant const& req, QFutureInterface<RpcResponse> const& promise, int64_t const id)
void RpcClient::sendLocalRequest(tr_variant& req, QFutureInterface<RpcResponse> const& promise, int64_t const id)
{
if (verbose_)
{

View File

@@ -89,7 +89,7 @@ private:
QNetworkAccessManager* networkAccessManager();
void sendNetworkRequest(QByteArray const& body, QFutureInterface<RpcResponse> const& promise);
void sendLocalRequest(tr_variant const& req, QFutureInterface<RpcResponse> const& promise, int64_t id);
void sendLocalRequest(tr_variant& req, QFutureInterface<RpcResponse> const& promise, int64_t id);
[[nodiscard]] int64_t parseResponseId(tr_variant& response) const;
[[nodiscard]] RpcResponse parseResponseData(tr_variant& response) const;

View File

@@ -645,6 +645,16 @@ constexpr std::string_view UnrecognisedInfoLegacyResponse = R"json({
"tag": 10
})json";
constexpr std::string_view LegacyNonIntTagRequest = R"json({
"method": "session-get",
"tag": "0"
})json";
constexpr std::string_view LegacyNonIntTagRequestResult = R"json({
"jsonrpc": "2.0",
"method": "session_get"
})json";
// clang-format off
constexpr std::string_view LegacyResumeBenc =
"d"
@@ -953,7 +963,7 @@ TEST_F(ApiCompatTest, canConvertRpc)
using TestCase = std::tuple<std::string_view, std::string_view, Style, std::string_view>;
// clang-format off
static auto constexpr TestCases = std::array<TestCase, 40U>{ {
static auto constexpr TestCases = std::array<TestCase, 42U>{ {
{ "free_space tr5 -> tr5", BadFreeSpaceRequest, Style::Tr5, BadFreeSpaceRequest },
{ "free_space tr5 -> tr4", BadFreeSpaceRequest, Style::Tr4, BadFreeSpaceRequestLegacy },
{ "free_space tr4 -> tr5", BadFreeSpaceRequestLegacy, Style::Tr5, BadFreeSpaceRequest },
@@ -994,6 +1004,8 @@ TEST_F(ApiCompatTest, canConvertRpc)
{ "unrecognised info tr5 -> tr4", UnrecognisedInfoResponse, Style::Tr4, UnrecognisedInfoLegacyResponse},
{ "unrecognised info tr4 -> tr5", UnrecognisedInfoLegacyResponse, Style::Tr5, UnrecognisedInfoResponse},
{ "unrecognised info tr4 -> tr4", UnrecognisedInfoLegacyResponse, Style::Tr4, UnrecognisedInfoLegacyResponse},
{ "non-int tag tr4 -> tr5", LegacyNonIntTagRequest, Style::Tr5, LegacyNonIntTagRequestResult },
{ "non-int tag tr4 -> tr4", LegacyNonIntTagRequest, Style::Tr4, LegacyNonIntTagRequest },
// TODO(ckerr): torrent-get with 'table'
} };

View File

@@ -36,7 +36,7 @@ namespace
{
auto serde = tr_variant_serde::json().inplace();
auto const request = serde.parse(jsonreq);
auto request = serde.parse(jsonreq);
if (!request)
{
return {};
@@ -45,7 +45,7 @@ namespace
auto response = tr_variant{};
tr_rpc_request_exec(
session,
std::move(*request),
*request,
[&response](tr_session* /*session*/, tr_variant&& resp) { response = std::move(resp); });
return serde.to_string(response);
@@ -87,7 +87,7 @@ TEST_F(RpcTest, NotArrayOrObject)
requests.emplace_back(nullptr);
requests.emplace_back(true);
for (auto const& req : requests)
for (auto& req : requests)
{
auto response = tr_variant{};
tr_rpc_request_exec(
@@ -123,11 +123,12 @@ TEST_F(RpcTest, JsonRpcWrongVersion)
request_map.try_emplace(TR_KEY_jsonrpc, "1.0");
request_map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_session_stats));
request_map.try_emplace(TR_KEY_id, 12345);
auto request = tr_variant{ std::move(request_map) };
auto response = tr_variant{};
tr_rpc_request_exec(
session_,
std::move(request_map),
request,
[&response](tr_session* /*session*/, tr_variant&& resp) { response = std::move(resp); });
auto const* const response_map = response.get_if<tr_variant::Map>();
@@ -163,13 +164,14 @@ TEST_F(RpcTest, idSync)
{
auto request_map = tr_variant::Map{ 3U };
request_map.try_emplace(TR_KEY_jsonrpc, JsonRpc::Version);
request_map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_session_stats_kebab));
request_map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_session_stats));
request_map[TR_KEY_id].merge(request_id); // copy
auto request = tr_variant{ std::move(request_map) };
auto response = tr_variant{};
tr_rpc_request_exec(
session_,
std::move(request_map),
request,
[&response](tr_session* /*session*/, tr_variant&& resp) { response = std::move(resp); });
auto const* const response_map = response.get_if<tr_variant::Map>();
@@ -212,11 +214,12 @@ TEST_F(RpcTest, idWrongType)
request_map.try_emplace(TR_KEY_jsonrpc, JsonRpc::Version);
request_map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_session_stats));
request_map[TR_KEY_id].merge(request_id); // copy
auto request = tr_variant{ std::move(request_map) };
auto response = tr_variant{};
tr_rpc_request_exec(
session_,
std::move(request_map),
request,
[&response](tr_session* /*session*/, tr_variant&& resp) { response = std::move(resp); });
auto const* const response_map = response.get_if<tr_variant::Map>();
@@ -246,11 +249,12 @@ TEST_F(RpcTest, tagSyncLegacy)
auto request_map = tr_variant::Map{ 2U };
request_map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_session_stats));
request_map.try_emplace(TR_KEY_tag, 12345);
auto request = tr_variant{ std::move(request_map) };
auto response = tr_variant{};
tr_rpc_request_exec(
session_,
std::move(request_map),
request,
[&response](tr_session* /*session*/, tr_variant&& resp) { response = std::move(resp); });
auto const* const response_map = response.get_if<tr_variant::Map>();
@@ -278,7 +282,7 @@ TEST_F(RpcTest, idAsync)
auto request_map = tr_variant::Map{ 3U };
request_map.try_emplace(TR_KEY_jsonrpc, JsonRpc::Version);
request_map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_torrent_rename_path_kebab));
request_map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_torrent_rename_path));
request_map[TR_KEY_id].merge(request_id); // copy
auto params_map = tr_variant::Map{ 2U };
@@ -286,11 +290,12 @@ TEST_F(RpcTest, idAsync)
params_map.try_emplace(TR_KEY_name, "512_test");
request_map.try_emplace(TR_KEY_params, std::move(params_map));
auto request = tr_variant{ std::move(request_map) };
auto promise = std::promise<tr_variant>{};
auto future = promise.get_future();
tr_rpc_request_exec(
session_,
std::move(request_map),
request,
[&promise](tr_session* /*session*/, tr_variant&& resp) { promise.set_value(std::move(resp)); });
auto const response = future.get();
@@ -338,11 +343,12 @@ TEST_F(RpcTest, tagAsyncLegacy)
arguments_map.try_emplace(TR_KEY_name, "512_test");
request_map.try_emplace(TR_KEY_arguments, std::move(arguments_map));
auto request = tr_variant{ std::move(request_map) };
auto promise = std::promise<tr_variant>{};
auto future = promise.get_future();
tr_rpc_request_exec(
session_,
std::move(request_map),
request,
[&promise](tr_session* /*session*/, tr_variant&& resp) { promise.set_value(std::move(resp)); });
auto const response = future.get();
@@ -364,11 +370,12 @@ TEST_F(RpcTest, NotificationSync)
auto request_map = tr_variant::Map{ 2U };
request_map.try_emplace(TR_KEY_jsonrpc, JsonRpc::Version);
request_map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_session_stats));
auto request = tr_variant{ std::move(request_map) };
auto response = tr_variant{};
tr_rpc_request_exec(
session_,
std::move(request_map),
request,
[&response](tr_session* /*session*/, tr_variant&& resp) { response = std::move(resp); });
EXPECT_FALSE(response.has_value());
@@ -388,11 +395,12 @@ TEST_F(RpcTest, NotificationAsync)
params_map.try_emplace(TR_KEY_name, "512_test");
request_map.try_emplace(TR_KEY_params, std::move(params_map));
auto request = tr_variant{ std::move(request_map) };
auto promise = std::promise<tr_variant>{};
auto future = promise.get_future();
tr_rpc_request_exec(
session_,
std::move(request_map),
request,
[&promise](tr_session* /*session*/, tr_variant&& resp) { promise.set_value(std::move(resp)); });
auto const response = future.get();
@@ -408,11 +416,12 @@ TEST_F(RpcTest, tagNoHandler)
request_map.try_emplace(TR_KEY_jsonrpc, JsonRpc::Version);
request_map.try_emplace(TR_KEY_method, "sdgdhsgg");
request_map.try_emplace(TR_KEY_id, 12345);
auto request = tr_variant{ std::move(request_map) };
auto response = tr_variant{};
tr_rpc_request_exec(
session_,
std::move(request_map),
request,
[&response](tr_session* /*session*/, tr_variant&& resp) { response = std::move(resp); });
auto const* const response_map = response.get_if<tr_variant::Map>();
@@ -440,11 +449,12 @@ TEST_F(RpcTest, tagNoHandlerLegacy)
auto request_map = tr_variant::Map{ 2U };
request_map.try_emplace(TR_KEY_method, "sdgdhsgg");
request_map.try_emplace(TR_KEY_tag, 12345);
auto request = tr_variant{ std::move(request_map) };
auto response = tr_variant{};
tr_rpc_request_exec(
session_,
std::move(request_map),
request,
[&response](tr_session* /*session*/, tr_variant&& resp) { response = std::move(resp); });
auto const* const response_map = response.get_if<tr_variant::Map>();
@@ -462,49 +472,50 @@ TEST_F(RpcTest, batch)
auto request_vec = tr_variant::Vector{};
request_vec.reserve(8U);
auto request = tr_variant::Map{ 3U };
request.try_emplace(TR_KEY_jsonrpc, JsonRpc::Version);
request.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_session_stats_kebab));
request.try_emplace(TR_KEY_id, 12345);
request_vec.emplace_back(std::move(request));
auto request_map = tr_variant::Map{ 3U };
request_map.try_emplace(TR_KEY_jsonrpc, JsonRpc::Version);
request_map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_session_stats));
request_map.try_emplace(TR_KEY_id, 12345);
request_vec.emplace_back(std::move(request_map));
request = tr_variant::Map{ 2U };
request.try_emplace(TR_KEY_jsonrpc, JsonRpc::Version);
request.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_session_set_kebab));
request_vec.emplace_back(std::move(request));
request_map = tr_variant::Map{ 2U };
request_map.try_emplace(TR_KEY_jsonrpc, JsonRpc::Version);
request_map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_session_set));
request_vec.emplace_back(std::move(request_map));
request = tr_variant::Map{ 3U };
request.try_emplace(TR_KEY_jsonrpc, JsonRpc::Version);
request.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_session_stats_kebab));
request.try_emplace(TR_KEY_id, "12345"sv);
request_vec.emplace_back(std::move(request));
request_map = tr_variant::Map{ 3U };
request_map.try_emplace(TR_KEY_jsonrpc, JsonRpc::Version);
request_map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_session_stats));
request_map.try_emplace(TR_KEY_id, "12345"sv);
request_vec.emplace_back(std::move(request_map));
request = tr_variant::Map{ 1U };
request.try_emplace(tr_quark_new("foo"sv), "boo"sv);
request_vec.emplace_back(std::move(request));
request_map = tr_variant::Map{ 1U };
request_map.try_emplace(tr_quark_new("foo"sv), "boo"sv);
request_vec.emplace_back(std::move(request_map));
request_vec.emplace_back(1);
request = tr_variant::Map{ 3U };
request.try_emplace(TR_KEY_jsonrpc, JsonRpc::Version);
request.try_emplace(TR_KEY_method, "dnfsojnsdkjf");
request.try_emplace(TR_KEY_id, 12345);
request_vec.emplace_back(std::move(request));
request_map = tr_variant::Map{ 3U };
request_map.try_emplace(TR_KEY_jsonrpc, JsonRpc::Version);
request_map.try_emplace(TR_KEY_method, "dnfsojnsdkjf");
request_map.try_emplace(TR_KEY_id, 12345);
request_vec.emplace_back(std::move(request_map));
request = tr_variant::Map{ 1U };
request.try_emplace(TR_KEY_jsonrpc, JsonRpc::Version);
request.try_emplace(TR_KEY_method, "dnfsojnsdkjf");
request_vec.emplace_back(std::move(request));
request_map = tr_variant::Map{ 1U };
request_map.try_emplace(TR_KEY_jsonrpc, JsonRpc::Version);
request_map.try_emplace(TR_KEY_method, "dnfsojnsdkjf");
request_vec.emplace_back(std::move(request_map));
request = tr_variant::Map{ 2U };
request.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_session_stats_kebab));
request.try_emplace(TR_KEY_tag, 12345);
request_vec.emplace_back(std::move(request));
request_map = tr_variant::Map{ 2U };
request_map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_session_stats));
request_map.try_emplace(TR_KEY_tag, 12345);
request_vec.emplace_back(std::move(request_map));
auto request = tr_variant{ std::move(request_vec) };
auto response = tr_variant{};
tr_rpc_request_exec(
session_,
std::move(request_vec),
request,
[&response](tr_session* /*session*/, tr_variant&& resp) { response = std::move(resp); });
auto* const response_vec_ptr = response.get_if<tr_variant::Vector>();
@@ -618,10 +629,12 @@ TEST_F(RpcTest, sessionGet)
request_map.try_emplace(TR_KEY_jsonrpc, JsonRpc::Version);
request_map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_session_get));
request_map.try_emplace(TR_KEY_id, 12345);
auto request = tr_variant{ std::move(request_map) };
auto response = tr_variant{};
tr_rpc_request_exec(
session_,
std::move(request_map),
request,
[&response](tr_session* /*session*/, tr_variant&& resp) { response = std::move(resp); });
auto* response_map = response.get_if<tr_variant::Map>();
@@ -631,13 +644,6 @@ TEST_F(RpcTest, sessionGet)
// what we expected
static auto constexpr ExpectedKeysUnsorted = std::array{
TR_KEY_alt_speed_down_kebab,
TR_KEY_alt_speed_enabled_kebab,
TR_KEY_alt_speed_time_begin_kebab,
TR_KEY_alt_speed_time_day_kebab,
TR_KEY_alt_speed_time_enabled_kebab,
TR_KEY_alt_speed_time_end_kebab,
TR_KEY_alt_speed_up_kebab,
TR_KEY_alt_speed_down,
TR_KEY_alt_speed_enabled,
TR_KEY_alt_speed_time_begin,
@@ -645,108 +651,59 @@ TEST_F(RpcTest, sessionGet)
TR_KEY_alt_speed_time_enabled,
TR_KEY_alt_speed_time_end,
TR_KEY_alt_speed_up,
TR_KEY_anti_brute_force_enabled_kebab,
TR_KEY_anti_brute_force_threshold_kebab,
TR_KEY_anti_brute_force_enabled,
TR_KEY_anti_brute_force_threshold,
TR_KEY_blocklist_enabled_kebab,
TR_KEY_blocklist_size_kebab,
TR_KEY_blocklist_url_kebab,
TR_KEY_blocklist_enabled,
TR_KEY_blocklist_size,
TR_KEY_blocklist_url,
TR_KEY_cache_size_mb_kebab,
TR_KEY_cache_size_mb,
TR_KEY_config_dir_kebab,
TR_KEY_config_dir,
TR_KEY_default_trackers_kebab,
TR_KEY_default_trackers,
TR_KEY_dht_enabled_kebab,
TR_KEY_dht_enabled,
TR_KEY_download_dir_kebab,
TR_KEY_download_dir_free_space_kebab,
TR_KEY_download_queue_enabled_kebab,
TR_KEY_download_queue_size_kebab,
TR_KEY_download_dir,
TR_KEY_download_dir_free_space,
TR_KEY_download_queue_enabled,
TR_KEY_download_queue_size,
TR_KEY_encryption,
TR_KEY_idle_seeding_limit_kebab,
TR_KEY_idle_seeding_limit_enabled_kebab,
TR_KEY_idle_seeding_limit,
TR_KEY_idle_seeding_limit_enabled,
TR_KEY_incomplete_dir_kebab,
TR_KEY_incomplete_dir_enabled_kebab,
TR_KEY_incomplete_dir,
TR_KEY_incomplete_dir_enabled,
TR_KEY_lpd_enabled_kebab,
TR_KEY_lpd_enabled,
TR_KEY_peer_limit_global_kebab,
TR_KEY_peer_limit_per_torrent_kebab,
TR_KEY_peer_port_kebab,
TR_KEY_peer_port_random_on_start_kebab,
TR_KEY_peer_limit_global,
TR_KEY_peer_limit_per_torrent,
TR_KEY_peer_port,
TR_KEY_peer_port_random_on_start,
TR_KEY_pex_enabled_kebab,
TR_KEY_pex_enabled,
TR_KEY_port_forwarding_enabled_kebab,
TR_KEY_port_forwarding_enabled,
TR_KEY_preferred_transports,
TR_KEY_queue_stalled_enabled_kebab,
TR_KEY_queue_stalled_minutes_kebab,
TR_KEY_queue_stalled_enabled,
TR_KEY_queue_stalled_minutes,
TR_KEY_rename_partial_files_kebab,
TR_KEY_rename_partial_files,
TR_KEY_reqq,
TR_KEY_rpc_version_kebab,
TR_KEY_rpc_version_minimum_kebab,
TR_KEY_rpc_version_semver_kebab,
TR_KEY_rpc_version,
TR_KEY_rpc_version_minimum,
TR_KEY_rpc_version_semver,
TR_KEY_script_torrent_added_enabled_kebab,
TR_KEY_script_torrent_added_filename_kebab,
TR_KEY_script_torrent_done_enabled_kebab,
TR_KEY_script_torrent_done_filename_kebab,
TR_KEY_script_torrent_done_seeding_enabled_kebab,
TR_KEY_script_torrent_done_seeding_filename_kebab,
TR_KEY_script_torrent_added_enabled,
TR_KEY_script_torrent_added_filename,
TR_KEY_script_torrent_done_enabled,
TR_KEY_script_torrent_done_filename,
TR_KEY_script_torrent_done_seeding_enabled,
TR_KEY_script_torrent_done_seeding_filename,
TR_KEY_seed_queue_enabled_kebab,
TR_KEY_seed_queue_size_kebab,
TR_KEY_seed_ratio_limit_camel,
TR_KEY_seed_ratio_limited_camel,
TR_KEY_seed_queue_enabled,
TR_KEY_seed_queue_size,
TR_KEY_seed_ratio_limit,
TR_KEY_seed_ratio_limited,
TR_KEY_sequential_download,
TR_KEY_session_id_kebab,
TR_KEY_session_id,
TR_KEY_speed_limit_down_kebab,
TR_KEY_speed_limit_down_enabled_kebab,
TR_KEY_speed_limit_up_kebab,
TR_KEY_speed_limit_up_enabled_kebab,
TR_KEY_speed_limit_down,
TR_KEY_speed_limit_down_enabled,
TR_KEY_speed_limit_up,
TR_KEY_speed_limit_up_enabled,
TR_KEY_start_added_torrents_kebab,
TR_KEY_start_added_torrents,
TR_KEY_tcp_enabled_kebab,
TR_KEY_tcp_enabled,
TR_KEY_trash_original_torrent_files_kebab,
TR_KEY_trash_original_torrent_files,
TR_KEY_units,
TR_KEY_utp_enabled_kebab,
TR_KEY_utp_enabled,
TR_KEY_version,
};
@@ -787,22 +744,23 @@ TEST_F(RpcTest, torrentGet)
auto* tor = zeroTorrentInit(ZeroTorrentState::NoFiles);
EXPECT_NE(nullptr, tor);
auto request = tr_variant::Map{ 3U };
auto request_map = tr_variant::Map{ 3U };
request.try_emplace(TR_KEY_jsonrpc, JsonRpc::Version);
request.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_torrent_get));
request.try_emplace(TR_KEY_id, 12345);
request_map.try_emplace(TR_KEY_jsonrpc, JsonRpc::Version);
request_map.try_emplace(TR_KEY_method, tr_variant::unmanaged_string(TR_KEY_torrent_get));
request_map.try_emplace(TR_KEY_id, 12345);
auto params = tr_variant::Map{ 1U };
auto fields = tr_variant::Vector{};
fields.emplace_back(tr_quark_get_string_view(TR_KEY_id));
params.try_emplace(TR_KEY_fields, std::move(fields));
request.try_emplace(TR_KEY_params, std::move(params));
request_map.try_emplace(TR_KEY_params, std::move(params));
auto request = tr_variant{ std::move(request_map) };
auto response = tr_variant{};
tr_rpc_request_exec(
session_,
std::move(request),
request,
[&response](tr_session* /*session*/, tr_variant&& resp) { response = std::move(resp); });
auto* response_map = response.get_if<tr_variant::Map>();
@@ -829,20 +787,21 @@ TEST_F(RpcTest, torrentGetLegacy)
auto* tor = zeroTorrentInit(ZeroTorrentState::NoFiles);
EXPECT_NE(nullptr, tor);
auto request = tr_variant::Map{ 1U };
auto request_map = tr_variant::Map{ 1U };
request.try_emplace(TR_KEY_method, tr_quark_get_string_view(TR_KEY_torrent_get_kebab));
request_map.try_emplace(TR_KEY_method, tr_quark_get_string_view(TR_KEY_torrent_get_kebab));
auto args_in = tr_variant::Map{ 1U };
auto fields = tr_variant::Vector{};
fields.emplace_back(tr_quark_get_string_view(TR_KEY_id));
args_in.try_emplace(TR_KEY_fields, std::move(fields));
request.try_emplace(TR_KEY_arguments, std::move(args_in));
request_map.try_emplace(TR_KEY_arguments, std::move(args_in));
auto request = tr_variant{ std::move(request_map) };
auto response = tr_variant{};
tr_rpc_request_exec(
session_,
std::move(request),
request,
[&response](tr_session* /*session*/, tr_variant&& resp) { response = std::move(resp); });
auto* response_map = response.get_if<tr_variant::Map>();
@@ -937,7 +896,6 @@ constexpr std::string_view WellFormedResponse = R"json({
"jsonrpc": "2.0",
"result": {
"path": ")json" RPC_NON_EXISTENT_PATH R"json(",
"size-bytes": -1,
"size_bytes": -1,
"total_size": -1
}
@@ -963,7 +921,6 @@ constexpr std::string_view WellFormedLegacyResponse = R"json({
"arguments": {
"path": ")json" RPC_NON_EXISTENT_PATH R"json(",
"size-bytes": -1,
"size_bytes": -1,
"total_size": -1
},
"result": "success",