1
1
import 'dart:async' ;
2
2
import 'dart:convert' ;
3
3
4
- import 'package:nitric_sdk/src/api/api.dart' ;
5
4
import 'package:nitric_sdk/src/context/common.dart' ;
6
5
import 'package:nitric_sdk/src/grpc_helper.dart' ;
7
6
import 'package:nitric_sdk/src/nitric/proto/storage/v1/storage.pbgrpc.dart'
@@ -11,44 +10,22 @@ import 'package:fixnum/fixnum.dart';
11
10
import 'package:nitric_sdk/src/workers/common.dart' ;
12
11
13
12
class Bucket {
14
- late final $p.StorageClient ? _storageClient;
15
- late final $p.StorageListenerClient ? _storageListenerClient;
16
-
17
13
String name;
18
14
19
- Bucket (this .name,
20
- {$p.StorageListenerClient ? storageListenerClient,
21
- $p.StorageClient ? client}) {
22
- _storageClient = client;
23
- _storageListenerClient = storageListenerClient;
24
- }
15
+ Bucket (this .name);
25
16
26
17
/// Get a reference to a file by it's [key] .
27
18
File file (String key) {
28
19
return File (this , key);
29
20
}
30
21
31
- Future <Resp > _useClient <Resp >(
32
- UseClientCallback <$p.StorageClient , Resp > callback) async {
33
- final client = _storageClient ??
34
- $p.StorageClient (ClientChannelSingleton .instance.clientChannel);
35
-
36
- var resp = await callback (client);
37
-
38
- if (_storageClient == null ) {
39
- await ClientChannelSingleton .instance.release ();
40
- }
41
-
42
- return resp;
43
- }
44
-
45
22
/// Get a list of references to the files in the bucket. Optionally supply a [prefix] to filter by.
46
23
Future <List <File >> files ({String prefix = "" }) async {
47
24
final request =
48
25
$p.StorageListBlobsRequest (bucketName: name, prefix: prefix);
49
26
50
- var resp =
51
- await _useClient ( (client) async => await client.listBlobs (request));
27
+ var resp = await ClientChannelSingleton . useClient ($p. StorageClient . new ,
28
+ (client) async => await client.listBlobs (request));
52
29
53
30
return resp.blobs.map ((blob) => File (this , blob.key)).toList ();
54
31
}
@@ -72,8 +49,7 @@ class Bucket {
72
49
final composedHandler =
73
50
composeMiddleware ([...middlewares, handler], FileEventContext .fromCtx);
74
51
75
- var worker = FileEventWorker (registrationRequest, composedHandler, this ,
76
- client: _storageListenerClient);
52
+ var worker = FileEventWorker (registrationRequest, composedHandler, this );
77
53
78
54
await worker.start ();
79
55
}
@@ -95,7 +71,8 @@ class File {
95
71
key: key,
96
72
);
97
73
98
- await _bucket._useClient ((client) async => await client.delete (req));
74
+ await ClientChannelSingleton .useClient (
75
+ $p.StorageClient .new , (client) async => await client.delete (req));
99
76
}
100
77
101
78
/// Read the file from the bucket.
@@ -105,8 +82,8 @@ class File {
105
82
key: key,
106
83
);
107
84
108
- var resp =
109
- await _bucket. _useClient ( (client) async => await client.read (req));
85
+ var resp = await ClientChannelSingleton . useClient (
86
+ $p. StorageClient . new , (client) async => await client.read (req));
110
87
111
88
return utf8.decode (resp.body);
112
89
}
@@ -121,7 +98,8 @@ class File {
121
98
body: bytes,
122
99
);
123
100
124
- await _bucket._useClient ((client) async => await client.write (req));
101
+ await ClientChannelSingleton .useClient (
102
+ $p.StorageClient .new , (client) async => await client.write (req));
125
103
}
126
104
127
105
/// Check whether the file exists in the bucket.
@@ -131,8 +109,8 @@ class File {
131
109
key: key,
132
110
);
133
111
134
- var resp =
135
- await _bucket. _useClient ( (client) async => await client.exists (req));
112
+ var resp = await ClientChannelSingleton . useClient (
113
+ $p. StorageClient . new , (client) async => await client.exists (req));
136
114
137
115
return resp.exists;
138
116
}
@@ -164,8 +142,8 @@ class File {
164
142
expiry: exp,
165
143
);
166
144
167
- var resp = await _bucket
168
- . _useClient ( (client) async => await client.preSignUrl (req));
145
+ var resp = await ClientChannelSingleton . useClient (
146
+ $p. StorageClient . new , (client) async => await client.preSignUrl (req));
169
147
170
148
return resp.url;
171
149
}
0 commit comments