Skip to content

Commit

Permalink
Merge branch 'develop' of github.com:shiguredo/sora-archive-uploader …
Browse files Browse the repository at this point in the history
…into feature/large-file-bandwidth-limitation
  • Loading branch information
tnamao committed Oct 30, 2024
2 parents c022abb + f5141a4 commit f56d978
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 11 deletions.
6 changes: 6 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,12 @@
- [FIX] 5GB を超えるファイルのアップロード時に帯域制限がかかるように修正する
- 帯域制限設定を行なってもマルチパートアップロードを有効にし、マルチパートアップロードの並列アップロード数を 1 つずつにすることで帯域制限を行う
- この修正以前は、帯域制限設定を行うとマルチパートアップロードが無効となり 5GB を超えるファイルのアップロードができなかった
- [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
Expand Down
20 changes: 16 additions & 4 deletions uploader.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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().
Expand Down
16 changes: 9 additions & 7 deletions webhook.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"bytes"
"crypto/tls"
"crypto/x509"
"encoding/json"
"fmt"
"net/http"
"net/url"
Expand All @@ -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 {
Expand Down

0 comments on commit f56d978

Please sign in to comment.