Added support for using oauth token for Kafka
[nonrtric/plt/ranpm.git] / datafilecollector / src / main / java / org / oran / datafile / datastore / DataStore.java
1 /*-
2  * ========================LICENSE_START=================================
3  * O-RAN-SC
4  * %%
5  * Copyright (C) 2021 Nordix Foundation
6  * %%
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ========================LICENSE_END===================================
19  */
20
21 package org.oran.datafile.datastore;
22
23 import java.nio.file.Path;
24
25 import org.oran.datafile.configuration.AppConfig;
26
27 import reactor.core.publisher.Flux;
28 import reactor.core.publisher.Mono;
29
30 public interface DataStore {
31     public enum Bucket {
32         FILES, LOCKS
33     }
34
35     public Flux<String> listObjects(Bucket bucket, String prefix);
36
37     public Mono<byte[]> readObject(Bucket bucket, String name);
38
39     public Mono<Boolean> createLock(String name);
40
41     public Mono<Boolean> deleteLock(String name);
42
43     public Mono<Boolean> deleteObject(Bucket bucket, String name);
44
45     public Mono<String> copyFileTo(Path from, String to);
46
47     public Mono<String> create(DataStore.Bucket bucket);
48
49     public Mono<String> deleteBucket(Bucket bucket);
50
51     public Mono<Boolean> fileExists(Bucket bucket, String key);
52
53     public static DataStore create(AppConfig config) {
54         return config.isS3Enabled() ? new S3ObjectStore(config) : new FileStore(config);
55     }
56
57 }