diff --git a/CHANGES.md b/CHANGES.md index 3c7949c..c52f5ab 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -11,6 +11,13 @@ ## develop +- [UPDATE] report ファイルアップロード後のウェブフックに `recording_metadata` を追加する + - アップロードした report ファイルの `recording_metadata` または `metadata` の内容をウェブフックの `recording_metadata` に含めて送信する + - セッション録画の場合は `recording_metadata` の値を使用する + - レガシー録画の場合は `metadata` の値を使用する + - ウェブフックに含める際のキーはセッション録画でもレガシー録画でも共通で `recording_metadata` に設定する + - report ファイルに `recording_metadata` または `metadata` のキーが存在しない場合にはウェブフックにも `recording_metadata` を含めない + - @tnamao - [UPDATE] CI の staticcheck を 2024.1.1 にアップデート - @voluntas - [UPDATE] go 1.23.2 にアップデート diff --git a/uploader.go b/uploader.go index 994a704..58d0ef8 100644 --- a/uploader.go +++ b/uploader.go @@ -17,10 +17,13 @@ import ( ) type RecordingReport struct { - RecordingID string `json:"recording_id"` - ChannelID string `json:"channel_id"` - FilePath string `json:"file_path"` - Filename string `json:"filename"` + RecordingID string `json:"recording_id"` + ChannelID string `json:"channel_id"` + SessionID string `json:"session_id"` + FilePath string `json:"file_path"` + Filename string `json:"filename"` + Metadata json.RawMessage `json:"metadata"` + RecordingMetadata json.RawMessage `json:"recording_metadata"` } type UploaderManager struct { @@ -467,6 +470,15 @@ func (u Uploader) handleReport(reportJSONFilePath string) bool { Filename: filename, FileURL: fileURL, } + + // セッション録画とレガシー録画では、録画の metadata のキーが異なるための分岐 + // SessionID が空でなければセッション録画とみなす + if rr.SessionID != "" { + w.RecordingMetadata = rr.RecordingMetadata + } else { + w.RecordingMetadata = rr.Metadata + } + buf, err := json.Marshal(w) if err != nil { zlog.Error(). diff --git a/webhook.go b/webhook.go index d7108da..51aa2fb 100644 --- a/webhook.go +++ b/webhook.go @@ -4,6 +4,7 @@ import ( "bytes" "crypto/tls" "crypto/x509" + "encoding/json" "fmt" "net/http" "net/url" @@ -12,13 +13,14 @@ import ( ) type WebhookReportUploaded struct { - ID string `json:"id"` - Type string `json:"type"` - Timestamp time.Time `json:"timestamp"` - RecordingID string `json:"recording_id"` - ChannelID string `json:"channel_id"` - Filename string `json:"filename"` - FileURL string `json:"file_url"` + ID string `json:"id"` + Type string `json:"type"` + Timestamp time.Time `json:"timestamp"` + RecordingID string `json:"recording_id"` + ChannelID string `json:"channel_id"` + Filename string `json:"filename"` + FileURL string `json:"file_url"` + RecordingMetadata json.RawMessage `json:"recording_metadata,omitempty"` } type WebhookArchiveUploaded struct {