@@ -470,7 +470,9 @@ pub async fn handle_task_command(
470470 let timeout_duration = Duration :: from_secs ( timeout) ;
471471
472472 loop {
473- let task = client. get_raw ( & format ! ( "/tasks/{}" , id) ) . await ?;
473+ let handler = redis_cloud:: CloudTasksHandler :: new ( client. clone ( ) ) ;
474+ let task = handler. get ( & id) . await ?;
475+ let task = serde_json:: to_value ( task) ?;
474476
475477 // Check if task has a status field and if it's completed
476478 if let Some ( status) = task. get ( "status" ) . and_then ( |s| s. as_str ( ) ) {
@@ -827,24 +829,27 @@ pub async fn handle_crdb_command(
827829
828830 match command {
829831 CrdbCommands :: List => {
830- let crdbs = client. get_raw ( "/crdbs" ) . await ?;
832+ let handler = redis_cloud:: CloudCrdbHandler :: new ( client. clone ( ) ) ;
833+ let crdbs = handler. list ( ) . await ?;
831834 print_output ( crdbs, output_format, query) ?;
832835 }
833836 CrdbCommands :: Show { crdb_id } => {
834- let crdb = client. get_raw ( & format ! ( "/crdbs/{}" , crdb_id) ) . await ?;
837+ let handler = redis_cloud:: CloudCrdbHandler :: new ( client. clone ( ) ) ;
838+ let crdb = handler. get ( crdb_id) . await ?;
835839 print_output ( crdb, output_format, query) ?;
836840 }
837841 CrdbCommands :: Create {
838842 name,
839843 memory_limit,
840844 regions,
841845 } => {
846+ let handler = redis_cloud:: CloudCrdbHandler :: new ( client. clone ( ) ) ;
842847 let create_data = serde_json:: json!( {
843848 "name" : name,
844849 "memoryLimitInGb" : memory_limit as f64 / 1024.0 ,
845850 "regions" : regions
846851 } ) ;
847- let crdb = client . post_raw ( "/crdbs" , create_data) . await ?;
852+ let crdb = handler . create ( create_data) . await ?;
848853 print_output ( crdb, output_format, query) ?;
849854 }
850855 CrdbCommands :: Update {
@@ -864,11 +869,9 @@ pub async fn handle_crdb_command(
864869 ) ,
865870 ) ;
866871 }
867- let crdb = client
868- . put_raw (
869- & format ! ( "/crdbs/{}" , crdb_id) ,
870- serde_json:: Value :: Object ( update_data) ,
871- )
872+ let handler = redis_cloud:: CloudCrdbHandler :: new ( client. clone ( ) ) ;
873+ let crdb = handler
874+ . update ( crdb_id, serde_json:: Value :: Object ( update_data) )
872875 . await ?;
873876 print_output ( crdb, output_format, query) ?;
874877 }
@@ -880,22 +883,21 @@ pub async fn handle_crdb_command(
880883 ) ;
881884 return Ok ( ( ) ) ;
882885 }
883- client. delete_raw ( & format ! ( "/crdbs/{}" , crdb_id) ) . await ?;
886+ let handler = redis_cloud:: CloudCrdbHandler :: new ( client. clone ( ) ) ;
887+ handler. delete ( crdb_id) . await ?;
884888 println ! ( "CRDB {} deleted successfully" , crdb_id) ;
885889 }
886890 CrdbCommands :: AddRegion { crdb_id, region } => {
887891 let add_data = serde_json:: json!( {
888892 "region" : region
889893 } ) ;
890- let result = client
891- . post_raw ( & format ! ( "/crdbs/{}/regions" , crdb_id) , add_data)
892- . await ?;
894+ let handler = redis_cloud:: CloudCrdbHandler :: new ( client. clone ( ) ) ;
895+ let result = handler. add_region ( crdb_id, add_data) . await ?;
893896 print_output ( result, output_format, query) ?;
894897 }
895898 CrdbCommands :: RemoveRegion { crdb_id, region_id } => {
896- client
897- . delete_raw ( & format ! ( "/crdbs/{}/regions/{}" , crdb_id, region_id) )
898- . await ?;
899+ let handler = redis_cloud:: CloudCrdbHandler :: new ( client. clone ( ) ) ;
900+ handler. remove_region ( crdb_id, region_id) . await ?;
899901 println ! ( "Region {} removed from CRDB {}" , region_id, crdb_id) ;
900902 }
901903 }
@@ -913,19 +915,22 @@ pub async fn handle_api_key_command(
913915
914916 match command {
915917 ApiKeyCommands :: List => {
916- let keys = client. get_raw ( "/api-keys" ) . await ?;
918+ let handler = redis_cloud:: CloudApiKeysHandler :: new ( client. clone ( ) ) ;
919+ let keys = handler. list ( ) . await ?;
917920 print_output ( keys, output_format, query) ?;
918921 }
919922 ApiKeyCommands :: Show { key_id } => {
920- let key = client. get_raw ( & format ! ( "/api-keys/{}" , key_id) ) . await ?;
923+ let handler = redis_cloud:: CloudApiKeysHandler :: new ( client. clone ( ) ) ;
924+ let key = handler. get ( key_id) . await ?;
921925 print_output ( key, output_format, query) ?;
922926 }
923927 ApiKeyCommands :: Create { name, role } => {
928+ let handler = redis_cloud:: CloudApiKeysHandler :: new ( client. clone ( ) ) ;
924929 let create_data = serde_json:: json!( {
925930 "name" : name,
926931 "role" : role
927932 } ) ;
928- let key = client . post_raw ( "/api-keys" , create_data) . await ?;
933+ let key = handler . create ( create_data) . await ?;
929934 print_output ( key, output_format, query) ?;
930935 }
931936 ApiKeyCommands :: Update { key_id, name, role } => {
@@ -936,11 +941,9 @@ pub async fn handle_api_key_command(
936941 if let Some ( role) = role {
937942 update_data. insert ( "role" . to_string ( ) , serde_json:: Value :: String ( role) ) ;
938943 }
939- let key = client
940- . put_raw (
941- & format ! ( "/api-keys/{}" , key_id) ,
942- serde_json:: Value :: Object ( update_data) ,
943- )
944+ let handler = redis_cloud:: CloudApiKeysHandler :: new ( client. clone ( ) ) ;
945+ let key = handler
946+ . update ( key_id, serde_json:: Value :: Object ( update_data) )
944947 . await ?;
945948 print_output ( key, output_format, query) ?;
946949 }
@@ -952,34 +955,23 @@ pub async fn handle_api_key_command(
952955 ) ;
953956 return Ok ( ( ) ) ;
954957 }
955- client. delete_raw ( & format ! ( "/api-keys/{}" , key_id) ) . await ?;
958+ let handler = redis_cloud:: CloudApiKeysHandler :: new ( client. clone ( ) ) ;
959+ handler. delete ( key_id) . await ?;
956960 println ! ( "API key {} deleted successfully" , key_id) ;
957961 }
958962 ApiKeyCommands :: Regenerate { key_id } => {
959- let result = client
960- . post_raw (
961- & format ! ( "/api-keys/{}/regenerate" , key_id) ,
962- serde_json:: json!( { } ) ,
963- )
964- . await ?;
963+ let handler = redis_cloud:: CloudApiKeysHandler :: new ( client. clone ( ) ) ;
964+ let result = handler. regenerate ( key_id) . await ?;
965965 print_output ( result, output_format, query) ?;
966966 }
967967 ApiKeyCommands :: Enable { key_id } => {
968- let result = client
969- . post_raw (
970- & format ! ( "/api-keys/{}/enable" , key_id) ,
971- serde_json:: json!( { } ) ,
972- )
973- . await ?;
968+ let handler = redis_cloud:: CloudApiKeysHandler :: new ( client. clone ( ) ) ;
969+ let result = handler. enable ( key_id) . await ?;
974970 print_output ( result, output_format, query) ?;
975971 }
976972 ApiKeyCommands :: Disable { key_id } => {
977- let result = client
978- . post_raw (
979- & format ! ( "/api-keys/{}/disable" , key_id) ,
980- serde_json:: json!( { } ) ,
981- )
982- . await ?;
973+ let handler = redis_cloud:: CloudApiKeysHandler :: new ( client. clone ( ) ) ;
974+ let result = handler. disable ( key_id) . await ?;
983975 print_output ( result, output_format, query) ?;
984976 }
985977 }
@@ -1190,11 +1182,13 @@ pub async fn handle_fixed_plan_command(
11901182
11911183 match command {
11921184 FixedPlanCommands :: List => {
1193- let plans = client. get_raw ( "/fixed-plans" ) . await ?;
1185+ let handler = redis_cloud:: CloudFixedHandler :: new ( client. clone ( ) ) ;
1186+ let plans = handler. plans ( ) . await ?;
11941187 print_output ( plans, output_format, query) ?;
11951188 }
11961189 FixedPlanCommands :: Show { plan_id } => {
1197- let plan = client. get_raw ( & format ! ( "/fixed-plans/{}" , plan_id) ) . await ?;
1190+ let handler = redis_cloud:: CloudFixedHandler :: new ( client. clone ( ) ) ;
1191+ let plan = handler. plan ( plan_id) . await ?;
11981192 print_output ( plan, output_format, query) ?;
11991193 }
12001194 FixedPlanCommands :: Plans { region } => {
0 commit comments