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:ObjectSynced:*";
47 case ObjectSyncedCreate
:
48 return "s3:ObjectSynced:Create";
49 case ObjectSyncedDelete
:
50 return "s3:ObjectSynced:Delete";
51 case ObjectSyncedDeletionMarkerCreated
:
52 return "s3:ObjectSynced:DeletionMarkerCreated";
54 return "s3:UnknownEvent";
56 return "s3:UnknownEvent";
59 std::string
to_event_string(EventType t
) {
60 return to_string(t
).substr(3);
63 EventType
from_string(const std::string
& s
) {
64 if (s
== "s3:ObjectCreated:*")
66 if (s
== "s3:ObjectCreated:Put")
67 return ObjectCreatedPut
;
68 if (s
== "s3:ObjectCreated:Post")
69 return ObjectCreatedPost
;
70 if (s
== "s3:ObjectCreated:Copy")
71 return ObjectCreatedCopy
;
72 if (s
== "s3:ObjectCreated:CompleteMultipartUpload")
73 return ObjectCreatedCompleteMultipartUpload
;
74 if (s
== "s3:ObjectRemoved:*")
76 if (s
== "s3:ObjectRemoved:Delete")
77 return ObjectRemovedDelete
;
78 if (s
== "s3:ObjectRemoved:DeleteMarkerCreated")
79 return ObjectRemovedDeleteMarkerCreated
;
80 if (s
== "s3:ObjectLifecycle:*")
81 return ObjectLifecycle
;
82 if (s
== "s3:ObjectLifecycle:Expiration:*")
83 return ObjectExpiration
;
84 if (s
== "s3:ObjectLifecycle:Expiration:Current")
85 return ObjectExpirationCurrent
;
86 if (s
== "s3:ObjectLifecycle:Expiration:Noncurrent")
87 return ObjectExpirationNoncurrent
;
88 if (s
== "s3:ObjectLifecycle:Expiration:DeleteMarker")
89 return ObjectExpirationDeleteMarker
;
90 if (s
== "s3:ObjectLifecycle:Expiration:AbortMultipartUpload")
91 return ObjectExpirationAbortMPU
;
92 if (s
== "s3:ObjectLifecycle:Transition:*")
93 return ObjectTransition
;
94 if (s
== "s3:ObjectLifecycle:Transition:Current")
95 return ObjectTransitionCurrent
;
96 if (s
== "s3:ObjectLifecycle:Transition:Noncurrent")
97 return ObjectTransitionNoncurrent
;
98 if (s
== "s3:ObjectSynced:*")
100 if (s
== "s3:ObjectSynced:Create")
101 return ObjectSyncedCreate
;
102 if (s
== "s3:ObjectSynced:Delete")
103 return ObjectSyncedDelete
;
104 if (s
== "s3:ObjectSynced:DeletionMarkerCreated")
105 return ObjectSyncedDeletionMarkerCreated
;
109 bool operator==(EventType lhs
, EventType rhs
) {
113 void from_string_list(const std::string
& string_list
, EventTypeList
& event_list
) {
115 ceph::for_each_substr(string_list
, ",", [&event_list
] (auto token
) {
116 event_list
.push_back(rgw::notify::from_string(std::string(token
.begin(), token
.end())));