1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
4 #include "rgw_notify_event_type.h"
5 #include "include/str_list.h"
7 namespace rgw::notify
{
9 std::string
to_string(EventType t
) {
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";
22 return "s3:ObjectRemoved:*";
23 case ObjectRemovedDelete
:
24 return "s3:ObjectRemoved:Delete";
25 case ObjectRemovedDeleteMarkerCreated
:
26 return "s3:ObjectRemoved:DeleteMarkerCreated";
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";
46 return "s3:UnknownEvent";
48 return "s3:UnknownEvent";
51 std::string
to_ceph_string(EventType t
) {
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";
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";
77 return "UNKNOWN_EVENT";
79 return "UNKNOWN_EVENT";
82 std::string
to_event_string(EventType t
) {
83 return to_string(t
).substr(3);
86 EventType
from_string(const std::string
& s
) {
87 if (s
== "s3:ObjectCreated:*" || s
== "OBJECT_CREATE")
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:*")
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
;
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
;
124 bool operator==(EventType lhs
, EventType rhs
) {
128 void from_string_list(const std::string
& string_list
, EventTypeList
& event_list
) {
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())));