diff --git a/CHANGES.md b/CHANGES.md index 67e5ab1..bc51b71 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -11,6 +11,9 @@ ## develop +- [UPDATE] 設定に `exclude_webhook_recording_metadata` を追加し、report ファイルアップロード後のウェブフックに `recording_metadata` を含めるかどうか設定できるようにする + - デフォルトは `false` で `recording_metadata` を送信するウェブフックに含める + - `true` を設定するとレポートファイルに `recording_metadata` または `metadata` が含まれていてもウェブフックには含めない - [FIX] ウェブフック送信時の Response.Body のクローズ漏れを修正する - @tnamao - [FIX] 5GB を超えるファイルのアップロード時に帯域制限がかかるように修正する diff --git a/config.go b/config.go index a16a3d9..5896cbf 100644 --- a/config.go +++ b/config.go @@ -56,6 +56,8 @@ type Config struct { WebhookTypeSplitArchiveEndUploaded string `ini:"webhook_type_split_archive_end_uploaded"` WebhookTypeReportUploaded string `ini:"webhook_type_report_uploaded"` + ExcludeWebhookRecordingMetadata bool `ini:"exclude_webhook_recording_metadata"` + WebhookBasicAuthUsername string `ini:"webhook_basic_auth_username"` WebhookBasicAuthPassword string `ini:"webhook_basic_auth_password"` @@ -77,3 +79,7 @@ func newConfig(configFilePath string) (*Config, error) { } return config, nil } + +func (c Config) IncludeWebhookRecordingMetadata() bool { + return !c.ExcludeWebhookRecordingMetadata +} diff --git a/config_example.ini b/config_example.ini index 0934b9a..ffd4c0e 100644 --- a/config_example.ini +++ b/config_example.ini @@ -62,3 +62,7 @@ webhook_type_report_uploaded = "recording-report.uploaded" # webhook で mTLS を利用する場合に指定します # webhook_tls_fullchain_path = /path/to/fullchain.pem # webhook_tls_privkey_path = /path/to/privkey.pem + +# report_uploaded ウェブフックに recording_metadata を含めない設定 +# recording_metadata を含めない場合は true を指定する +# exclude_webhook_recording_metadata = true diff --git a/uploader.go b/uploader.go index 58d0ef8..c919d49 100644 --- a/uploader.go +++ b/uploader.go @@ -471,12 +471,16 @@ func (u Uploader) handleReport(reportJSONFilePath string) bool { FileURL: fileURL, } - // セッション録画とレガシー録画では、録画の metadata のキーが異なるための分岐 - // SessionID が空でなければセッション録画とみなす - if rr.SessionID != "" { - w.RecordingMetadata = rr.RecordingMetadata - } else { - w.RecordingMetadata = rr.Metadata + // recording_metadata の除外設定が *無効* の時は recording_metadata をウェブフックに含める + // 関数は !config.ExcludeWebhookRecordingMetadata の値を返しています + if u.config.IncludeWebhookRecordingMetadata() { + // セッション録画とレガシー録画では、録画の metadata のキーが異なるための分岐 + // SessionID が空でなければセッション録画とみなす + if rr.SessionID != "" { + w.RecordingMetadata = rr.RecordingMetadata + } else { + w.RecordingMetadata = rr.Metadata + } } buf, err := json.Marshal(w)