Skip to content

Commit

Permalink
Merge pull request #184 from shiguredo/feature/add-forwarding-filter-…
Browse files Browse the repository at this point in the history
…version-metadata

転送フィルタにバージョンとメタデータを追加する
  • Loading branch information
miosakuma authored Jan 12, 2024
2 parents 4c99649 + 9fc6b54 commit e448675
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 9 deletions.
5 changes: 5 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,13 @@
- [ADD] VideoCodec に H265 を追加する
- @enm10k
- [UPDATE] 解像度に qHD (960x540) を追加する
- @enm10k
- [UPDATE] CocoaPods を v1.14.2 に更新する
- @enm10k
- [UPDATE] ForwardingFilter に version と metadata を追加する
- @enm10k @miosakuma
- [UPDATE] ForwardingFilter の action を未指定にできるようにする
- @miosakuma

## 2023.3.1

Expand Down
50 changes: 41 additions & 9 deletions Sora/Configuration.swift
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,7 @@ public struct Configuration {
/**
転送フィルターのルールのフィールドの設定です。
*/
public enum ForwardingFilterRuleField: String, Codable {
public enum ForwardingFilterRuleField: String, Encodable {
/// connection_id
case connectionId = "connection_id"

Expand All @@ -270,7 +270,7 @@ public enum ForwardingFilterRuleField: String, Codable {
/**
転送フィルターのルールの演算子の設定です。
*/
public enum ForwardingFilterRuleOperator: String, Codable {
public enum ForwardingFilterRuleOperator: String, Encodable {
/// is_in
case isIn = "is_in"

Expand All @@ -281,7 +281,7 @@ public enum ForwardingFilterRuleOperator: String, Codable {
/**
転送フィルターのルールの設定です。
*/
public struct ForwardingFilterRule: Codable {
public struct ForwardingFilterRule: Encodable {
/// field
public let field: ForwardingFilterRuleField

Expand Down Expand Up @@ -311,7 +311,7 @@ public struct ForwardingFilterRule: Codable {
/**
転送フィルターのアクションの設定です。
*/
public enum ForwardingFilterAction: String, Codable {
public enum ForwardingFilterAction: String, Encodable {
/// block
case block

Expand All @@ -322,21 +322,53 @@ public enum ForwardingFilterAction: String, Codable {
/**
転送フィルターに関する設定です。
*/
public struct ForwardingFilter: Codable {
public struct ForwardingFilter {
/// action
public let action: ForwardingFilterAction
public var action: ForwardingFilterAction?

/// rules
public let rules: [[ForwardingFilterRule]]
public var rules: [[ForwardingFilterRule]]

/// version
public var version: String?

/// metadata
public var metadata: Encodable?

/**
初期化します。

- parameter action: action
- parameter action: action (オプショナル)
- parameter rules: rules
- parameter version: version (オプショナル)
- parameter metadata: metadata (オプショナル)
*/
public init(action: ForwardingFilterAction, rules: [[ForwardingFilterRule]]) {
public init(action: ForwardingFilterAction? = nil, rules: [[ForwardingFilterRule]], version: String? = nil, metadata: Encodable? = nil) {
self.action = action
self.rules = rules
self.version = version
self.metadata = metadata
}
}

extension ForwardingFilter: Encodable {
enum CodingKeys: String, CodingKey {
case action
case rules
case version
case metadata
}

public func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
try container.encodeIfPresent(action, forKey: .action)
try container.encode(rules, forKey: .rules)
try container.encodeIfPresent(version, forKey: .version)

// この if をつけないと、常に "metadata": {} が含まれてしまう
if metadata != nil {
let metadataEnc = container.superEncoder(forKey: .metadata)
try metadata?.encode(to: metadataEnc)
}
}
}

0 comments on commit e448675

Please sign in to comment.