@@ -3,93 +3,93 @@ use reqwest;
33use reqwest:: Client ;
44use std:: error:: Error ;
55
6- use crate :: vss:: { GetObjectRequest , GetObjectResponse , KeyValue , ListKeyVersionsRequest , ListKeyVersionsResponse , PutObjectRequest , PutObjectResponse } ;
6+ use crate :: vss:: {
7+ GetObjectRequest , GetObjectResponse , KeyValue , ListKeyVersionsRequest , ListKeyVersionsResponse , PutObjectRequest ,
8+ PutObjectResponse ,
9+ } ;
710use crate :: vss_error:: VssError ;
811
912mod vss_error;
1013
1114pub mod vss {
12- include ! ( concat!( env!( "OUT_DIR" ) , "/org.vss.rs" ) ) ;
15+ include ! ( concat!( env!( "OUT_DIR" ) , "/org.vss.rs" ) ) ;
1316}
1417
1518pub struct VssAccessor {
16- base_url : String ,
17- client : Client ,
19+ base_url : String ,
20+ client : Client ,
1821}
1922
2023impl VssAccessor {
21- pub fn new ( base_url : & str ) -> Result < Self , Box < dyn Error > > {
22- let client = Client :: new ( ) ;
23- Ok ( Self { base_url : String :: from ( base_url) , client } )
24- }
25-
26- pub async fn get ( & self , store : & str , key : & str ) -> Result < GetObjectResponse , VssError > {
27- let url = format ! ( "{}/getObject" , self . base_url) ;
28-
29- let request = GetObjectRequest { store_id : store. into ( ) , key : key. to_string ( ) } ;
30-
31- let response_raw = self . client . post ( url)
32- . body ( request. encode_to_vec ( ) )
33- . send ( ) . await ?;
34- let status = response_raw. status ( ) ;
35- let payload = & response_raw. bytes ( ) . await ?;
36-
37- if status. is_success ( ) {
38- let response = GetObjectResponse :: decode ( & payload[ ..] ) ?;
39- Ok ( response)
40- } else {
41- Err ( VssError :: new ( status, & payload) )
42- }
43- }
44-
45- pub async fn put ( & self , store : & str , global_version : Option < i64 > , key : & str , version : i64 , value : & [ u8 ] )
46- -> Result < PutObjectResponse , VssError > {
47- let kv = KeyValue { key : String :: from ( key) , version, value : value. to_vec ( ) } ;
48- return self . put_tx ( store, global_version, vec ! [ kv] ) . await ;
49- }
50-
51- pub async fn put_tx ( & self , store : & str , global_version : Option < i64 > , transaction_items : Vec < KeyValue > )
52- -> Result < PutObjectResponse , VssError > {
53- let url = format ! ( "{}/putObjects" , self . base_url) ;
54-
55- let request = PutObjectRequest { store_id : store. into ( ) , global_version, transaction_items } ;
56-
57- let response_raw = self . client . post ( url)
58- . body ( request. encode_to_vec ( ) )
59- . send ( ) . await ?;
60- let status = response_raw. status ( ) ;
61- let payload = & response_raw. bytes ( ) . await ?;
62-
63- if status. is_success ( ) {
64- let response = PutObjectResponse :: decode ( & payload[ ..] ) ?;
65- Ok ( response)
66- } else {
67- Err ( VssError :: new ( status, & payload) )
68- }
69- }
70-
71- pub async fn list_key_versions ( & self , store : & str , key_prefix : & str , page_size : Option < i32 > , page_token : Option < String > )
72- -> Result < ListKeyVersionsResponse , VssError > {
73- let url = format ! ( "{}/listKeyVersions" , self . base_url) ;
74-
75- let request = ListKeyVersionsRequest {
76- store_id : store. to_string ( ) ,
77- key_prefix : Some ( key_prefix. to_string ( ) ) ,
78- page_size,
79- page_token,
80- } ;
81-
82- let response_raw = self . client . post ( url)
83- . body ( request. encode_to_vec ( ) )
84- . send ( ) . await ?;
85- let status = response_raw. status ( ) ;
86- let payload = & response_raw. bytes ( ) . await ?;
87-
88- if status. is_success ( ) {
89- let response = ListKeyVersionsResponse :: decode ( & payload[ ..] ) ?;
90- Ok ( response)
91- } else {
92- Err ( VssError :: new ( status, & payload) )
93- }
94- }
24+ pub fn new ( base_url : & str ) -> Result < Self , Box < dyn Error > > {
25+ let client = Client :: new ( ) ;
26+ Ok ( Self { base_url : String :: from ( base_url) , client } )
27+ }
28+
29+ pub async fn get ( & self , store : & str , key : & str ) -> Result < GetObjectResponse , VssError > {
30+ let url = format ! ( "{}/getObject" , self . base_url) ;
31+
32+ let request = GetObjectRequest { store_id : store. into ( ) , key : key. to_string ( ) } ;
33+
34+ let response_raw = self . client . post ( url) . body ( request. encode_to_vec ( ) ) . send ( ) . await ?;
35+ let status = response_raw. status ( ) ;
36+ let payload = & response_raw. bytes ( ) . await ?;
37+
38+ if status. is_success ( ) {
39+ let response = GetObjectResponse :: decode ( & payload[ ..] ) ?;
40+ Ok ( response)
41+ } else {
42+ Err ( VssError :: new ( status, & payload) )
43+ }
44+ }
45+
46+ pub async fn put (
47+ & self , store : & str , global_version : Option < i64 > , key : & str , version : i64 , value : & [ u8 ] ,
48+ ) -> Result < PutObjectResponse , VssError > {
49+ let kv = KeyValue { key : String :: from ( key) , version, value : value. to_vec ( ) } ;
50+ return self . put_tx ( store, global_version, vec ! [ kv] ) . await ;
51+ }
52+
53+ pub async fn put_tx (
54+ & self , store : & str , global_version : Option < i64 > , transaction_items : Vec < KeyValue > ,
55+ ) -> Result < PutObjectResponse , VssError > {
56+ let url = format ! ( "{}/putObjects" , self . base_url) ;
57+
58+ let request = PutObjectRequest { store_id : store. into ( ) , global_version, transaction_items } ;
59+
60+ let response_raw = self . client . post ( url) . body ( request. encode_to_vec ( ) ) . send ( ) . await ?;
61+ let status = response_raw. status ( ) ;
62+ let payload = & response_raw. bytes ( ) . await ?;
63+
64+ if status. is_success ( ) {
65+ let response = PutObjectResponse :: decode ( & payload[ ..] ) ?;
66+ Ok ( response)
67+ } else {
68+ Err ( VssError :: new ( status, & payload) )
69+ }
70+ }
71+
72+ pub async fn list_key_versions (
73+ & self , store : & str , key_prefix : & str , page_size : Option < i32 > , page_token : Option < String > ,
74+ ) -> Result < ListKeyVersionsResponse , VssError > {
75+ let url = format ! ( "{}/listKeyVersions" , self . base_url) ;
76+
77+ let request = ListKeyVersionsRequest {
78+ store_id : store. to_string ( ) ,
79+ key_prefix : Some ( key_prefix. to_string ( ) ) ,
80+ page_size,
81+ page_token,
82+ } ;
83+
84+ let response_raw = self . client . post ( url) . body ( request. encode_to_vec ( ) ) . send ( ) . await ?;
85+ let status = response_raw. status ( ) ;
86+ let payload = & response_raw. bytes ( ) . await ?;
87+
88+ if status. is_success ( ) {
89+ let response = ListKeyVersionsResponse :: decode ( & payload[ ..] ) ?;
90+ Ok ( response)
91+ } else {
92+ Err ( VssError :: new ( status, & payload) )
93+ }
94+ }
9595}
0 commit comments