]>
Commit | Line | Data |
---|---|---|
11fdf7f2 TL |
1 | import { HttpClient, HttpParams } from '@angular/common/http'; |
2 | import { Injectable } from '@angular/core'; | |
3 | ||
4 | import * as _ from 'lodash'; | |
f91f0fd5 | 5 | import { of as observableOf } from 'rxjs'; |
6d8e3169 | 6 | import { catchError, mapTo } from 'rxjs/operators'; |
11fdf7f2 TL |
7 | |
8 | import { cdEncode } from '../decorators/cd-encode'; | |
9 | import { ApiModule } from './api.module'; | |
10 | ||
11 | @cdEncode | |
12 | @Injectable({ | |
13 | providedIn: ApiModule | |
14 | }) | |
15 | export class RgwBucketService { | |
16 | private url = 'api/rgw/bucket'; | |
17 | ||
18 | constructor(private http: HttpClient) {} | |
19 | ||
20 | /** | |
21 | * Get the list of buckets. | |
22 | * @return {Observable<Object[]>} | |
23 | */ | |
24 | list() { | |
f91f0fd5 TL |
25 | let params = new HttpParams(); |
26 | params = params.append('stats', 'true'); | |
27 | return this.http.get(this.url, { params: params }); | |
11fdf7f2 TL |
28 | } |
29 | ||
11fdf7f2 TL |
30 | get(bucket: string) { |
31 | return this.http.get(`${this.url}/${bucket}`); | |
32 | } | |
33 | ||
9f95a23c TL |
34 | create( |
35 | bucket: string, | |
36 | uid: string, | |
37 | zonegroup: string, | |
38 | placementTarget: string, | |
39 | lockEnabled: boolean, | |
40 | lock_mode: 'GOVERNANCE' | 'COMPLIANCE', | |
41 | lock_retention_period_days: string, | |
42 | lock_retention_period_years: string | |
43 | ) { | |
44 | return this.http.post(this.url, null, { | |
45 | params: new HttpParams({ | |
46 | fromObject: { | |
47 | bucket, | |
48 | uid, | |
49 | zonegroup, | |
50 | placement_target: placementTarget, | |
51 | lock_enabled: String(lockEnabled), | |
52 | lock_mode, | |
53 | lock_retention_period_days, | |
54 | lock_retention_period_years | |
55 | } | |
56 | }) | |
57 | }); | |
11fdf7f2 TL |
58 | } |
59 | ||
9f95a23c TL |
60 | update( |
61 | bucket: string, | |
62 | bucketId: string, | |
63 | uid: string, | |
64 | versioningState: string, | |
65 | mfaDelete: string, | |
66 | mfaTokenSerial: string, | |
67 | mfaTokenPin: string, | |
68 | lockMode: 'GOVERNANCE' | 'COMPLIANCE', | |
69 | lockRetentionPeriodDays: string, | |
70 | lockRetentionPeriodYears: string | |
71 | ) { | |
11fdf7f2 TL |
72 | let params = new HttpParams(); |
73 | params = params.append('bucket_id', bucketId); | |
74 | params = params.append('uid', uid); | |
9f95a23c TL |
75 | params = params.append('versioning_state', versioningState); |
76 | params = params.append('mfa_delete', mfaDelete); | |
77 | params = params.append('mfa_token_serial', mfaTokenSerial); | |
78 | params = params.append('mfa_token_pin', mfaTokenPin); | |
79 | params = params.append('lock_mode', lockMode); | |
80 | params = params.append('lock_retention_period_days', lockRetentionPeriodDays); | |
81 | params = params.append('lock_retention_period_years', lockRetentionPeriodYears); | |
11fdf7f2 TL |
82 | return this.http.put(`${this.url}/${bucket}`, null, { params: params }); |
83 | } | |
84 | ||
85 | delete(bucket: string, purgeObjects = true) { | |
86 | let params = new HttpParams(); | |
87 | params = params.append('purge_objects', purgeObjects ? 'true' : 'false'); | |
88 | return this.http.delete(`${this.url}/${bucket}`, { params: params }); | |
89 | } | |
90 | ||
91 | /** | |
92 | * Check if the specified bucket exists. | |
9f95a23c | 93 | * @param {string} bucket The bucket name to check. |
11fdf7f2 TL |
94 | * @return {Observable<boolean>} |
95 | */ | |
96 | exists(bucket: string) { | |
6d8e3169 FG |
97 | return this.get(bucket).pipe( |
98 | mapTo(true), | |
99 | catchError((error: Event) => { | |
100 | if (_.isFunction(error.preventDefault)) { | |
101 | error.preventDefault(); | |
102 | } | |
103 | return observableOf(false); | |
11fdf7f2 TL |
104 | }) |
105 | ); | |
106 | } | |
107 | } |