]>
Commit | Line | Data |
---|---|---|
eafe8130 TL |
1 | // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- |
2 | // vim: ts=8 sw=2 smarttab | |
3 | ||
4 | #include "rgw_notify_event_type.h" | |
5 | #include "include/str_list.h" | |
6 | ||
7 | namespace rgw::notify { | |
8 | ||
9 | std::string to_string(EventType t) { | |
10 | switch (t) { | |
20effc67 TL |
11 | case ObjectCreated: |
12 | return "s3:ObjectCreated:*"; | |
13 | case ObjectCreatedPut: | |
14 | return "s3:ObjectCreated:Put"; | |
15 | case ObjectCreatedPost: | |
16 | return "s3:ObjectCreated:Post"; | |
17 | case ObjectCreatedCopy: | |
18 | return "s3:ObjectCreated:Copy"; | |
19 | case ObjectCreatedCompleteMultipartUpload: | |
20 | return "s3:ObjectCreated:CompleteMultipartUpload"; | |
21 | case ObjectRemoved: | |
22 | return "s3:ObjectRemoved:*"; | |
23 | case ObjectRemovedDelete: | |
24 | return "s3:ObjectRemoved:Delete"; | |
25 | case ObjectRemovedDeleteMarkerCreated: | |
26 | return "s3:ObjectRemoved:DeleteMarkerCreated"; | |
27 | case ObjectLifecycle: | |
28 | return "s3:ObjectLifecycle:*"; | |
29 | case ObjectExpiration: | |
30 | return "s3:ObjectLifecycle:Expiration:*"; | |
31 | case ObjectExpirationCurrent: | |
32 | return "s3:ObjectLifecycle:Expiration:Current"; | |
33 | case ObjectExpirationNoncurrent: | |
34 | return "s3:ObjectLifecycle:Expiration:Noncurrent"; | |
35 | case ObjectExpirationDeleteMarker: | |
36 | return "s3:ObjectLifecycle:Expiration:DeleteMarker"; | |
37 | case ObjectExpirationAbortMPU: | |
38 | return "s3:ObjectLifecycle:Expiration:AbortMPU"; | |
39 | case ObjectTransition: | |
40 | return "s3:ObjectLifecycle:Transition:*"; | |
41 | case ObjectTransitionCurrent: | |
42 | return "s3:ObjectLifecycle:Transition:Current"; | |
43 | case ObjectTransitionNoncurrent: | |
44 | return "s3:ObjectLifecycle:Transition:Noncurrent"; | |
45 | case UnknownEvent: | |
46 | return "s3:UnknownEvent"; | |
eafe8130 TL |
47 | } |
48 | return "s3:UnknownEvent"; | |
49 | } | |
50 | ||
51 | std::string to_ceph_string(EventType t) { | |
52 | switch (t) { | |
20effc67 TL |
53 | case ObjectCreated: |
54 | case ObjectCreatedPut: | |
55 | case ObjectCreatedPost: | |
56 | case ObjectCreatedCopy: | |
57 | case ObjectCreatedCompleteMultipartUpload: | |
58 | return "OBJECT_CREATE"; | |
59 | case ObjectRemovedDelete: | |
60 | return "OBJECT_DELETE"; | |
61 | case ObjectRemovedDeleteMarkerCreated: | |
62 | return "DELETE_MARKER_CREATE"; | |
63 | case ObjectLifecycle: | |
64 | return "OBJECT_LIFECYCLE"; | |
65 | case ObjectExpiration: | |
66 | case ObjectExpirationCurrent: | |
67 | case ObjectExpirationNoncurrent: | |
68 | case ObjectExpirationDeleteMarker: | |
69 | case ObjectExpirationAbortMPU: | |
70 | return "OBJECT_EXPIRATION"; | |
71 | case ObjectTransition: | |
72 | case ObjectTransitionCurrent: | |
73 | case ObjectTransitionNoncurrent: | |
74 | return "OBJECT_TRANSITION"; | |
75 | case ObjectRemoved: | |
76 | case UnknownEvent: | |
77 | return "UNKNOWN_EVENT"; | |
eafe8130 TL |
78 | } |
79 | return "UNKNOWN_EVENT"; | |
80 | } | |
81 | ||
a4b75251 TL |
82 | std::string to_event_string(EventType t) { |
83 | return to_string(t).substr(3); | |
84 | } | |
85 | ||
eafe8130 TL |
86 | EventType from_string(const std::string& s) { |
87 | if (s == "s3:ObjectCreated:*" || s == "OBJECT_CREATE") | |
88 | return ObjectCreated; | |
89 | if (s == "s3:ObjectCreated:Put") | |
90 | return ObjectCreatedPut; | |
91 | if (s == "s3:ObjectCreated:Post") | |
92 | return ObjectCreatedPost; | |
93 | if (s == "s3:ObjectCreated:Copy") | |
94 | return ObjectCreatedCopy; | |
95 | if (s == "s3:ObjectCreated:CompleteMultipartUpload") | |
96 | return ObjectCreatedCompleteMultipartUpload; | |
97 | if (s == "s3:ObjectRemoved:*") | |
98 | return ObjectRemoved; | |
99 | if (s == "s3:ObjectRemoved:Delete" || s == "OBJECT_DELETE") | |
100 | return ObjectRemovedDelete; | |
101 | if (s == "s3:ObjectRemoved:DeleteMarkerCreated" || s == "DELETE_MARKER_CREATE") | |
102 | return ObjectRemovedDeleteMarkerCreated; | |
20effc67 TL |
103 | if (s == "s3:ObjectLifecycle:*") |
104 | return ObjectLifecycle; | |
105 | if (s == "s3:ObjectLifecycle:Expiration:*" || s == "OBJECT_EXPIRATION") | |
106 | return ObjectExpiration; | |
107 | if (s == "s3:ObjectLifecycle:Expiration:Current") | |
108 | return ObjectExpirationCurrent; | |
109 | if (s == "s3:ObjectLifecycle:Expiration:Noncurrent") | |
110 | return ObjectExpirationNoncurrent; | |
111 | if (s == "s3:ObjectLifecycle:Expiration:DeleteMarker") | |
112 | return ObjectExpirationDeleteMarker; | |
113 | if (s == "s3:ObjectLifecycle:Expiration:AbortMultipartUpload") | |
114 | return ObjectExpirationAbortMPU; | |
115 | if (s == "s3:ObjectLifecycle:Transition:*" || s == "OBJECT_TRANSITION") | |
116 | return ObjectTransition; | |
117 | if (s == "s3:ObjectLifecycle:Transition:Current") | |
118 | return ObjectTransitionCurrent; | |
119 | if (s == "s3:ObjectLifecycle:Transition:Noncurrent") | |
120 | return ObjectTransitionNoncurrent; | |
eafe8130 TL |
121 | return UnknownEvent; |
122 | } | |
123 | ||
124 | bool operator==(EventType lhs, EventType rhs) { | |
125 | return lhs & rhs; | |
126 | } | |
127 | ||
128 | void from_string_list(const std::string& string_list, EventTypeList& event_list) { | |
129 | event_list.clear(); | |
130 | ceph::for_each_substr(string_list, ",", [&event_list] (auto token) { | |
131 | event_list.push_back(rgw::notify::from_string(std::string(token.begin(), token.end()))); | |
132 | }); | |
133 | } | |
134 | } |