@@ -3,93 +3,93 @@ use reqwest;
3
3
use reqwest:: Client ;
4
4
use std:: error:: Error ;
5
5
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
+ } ;
7
10
use crate :: vss_error:: VssError ;
8
11
9
12
mod vss_error;
10
13
11
14
pub mod vss {
12
- include ! ( concat!( env!( "OUT_DIR" ) , "/org.vss.rs" ) ) ;
15
+ include ! ( concat!( env!( "OUT_DIR" ) , "/org.vss.rs" ) ) ;
13
16
}
14
17
15
18
pub struct VssAccessor {
16
- base_url : String ,
17
- client : Client ,
19
+ base_url : String ,
20
+ client : Client ,
18
21
}
19
22
20
23
impl 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
+ }
95
95
}
0 commit comments