34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
# File 'lib/log_struct/integrations/active_storage.rb', line 34
def self.process_active_storage_event(event, config)
return unless config.enabled
return unless config.integrations.enable_activestorage
event_name = event.name.sub(/\.active_storage$/, "")
service_name = event.payload[:service]
duration_ms = event.duration
event_type = case event_name
when "service_upload"
Event::Upload
when "service_download"
Event::Download
when "service_delete"
Event::Delete
when "service_delete_prefixed"
Event::Delete
when "service_exist"
Event::Exist
when "service_url"
Event::Url
when "service_download_chunk"
Event::Download
when "service_stream"
Event::Stream
when "service_update_metadata"
Event::Metadata
else
Event::Unknown
end
event_name.sub(/^service_/, "").to_sym
log_data = case event_type
when Event::Upload
Log::ActiveStorage::Upload.new(
storage: service_name.to_sym,
file_id: event.payload[:key]&.to_s,
checksum: event.payload[:checksum]&.to_s,
duration_ms: duration_ms,
metadata: event.payload[:metadata],
filename: event.payload[:filename],
mime_type: event.payload[:content_type],
size: event.payload[:byte_size]
)
when Event::Download
Log::ActiveStorage::Download.new(
storage: service_name.to_sym,
file_id: event.payload[:key]&.to_s,
filename: event.payload[:filename],
range: event.payload[:range],
duration_ms: duration_ms
)
when Event::Delete
Log::ActiveStorage::Delete.new(
storage: service_name.to_sym,
file_id: event.payload[:key]&.to_s
)
when Event::Metadata
Log::ActiveStorage::Metadata.new(
storage: service_name.to_sym,
file_id: event.payload[:key]&.to_s,
metadata: event.payload[:metadata]
)
when Event::Exist
Log::ActiveStorage::Exist.new(
storage: service_name.to_sym,
file_id: event.payload[:key]&.to_s,
exist: event.payload[:exist]
)
when Event::Stream
Log::ActiveStorage::Stream.new(
storage: service_name.to_sym,
file_id: event.payload[:key]&.to_s,
prefix: event.payload[:prefix]
)
when Event::Url
Log::ActiveStorage::Url.new(
storage: service_name.to_sym,
file_id: event.payload[:key]&.to_s,
url: event.payload[:url]
)
else
Log::ActiveStorage::Metadata.new(
storage: service_name.to_sym,
file_id: event.payload[:key]&.to_s,
metadata: event.payload[:metadata]
)
end
LogStruct.info(log_data)
end
|