@@ -25,7 +25,8 @@ extension REST {
2525 }
2626 }
2727
28- public struct BridgeRelay : Codable , Equatable , Sendable {
28+ public struct BridgeRelay : Codable , Equatable , Sendable , AnyRelay {
29+
2930 public let hostname : String
3031 public let active : Bool
3132 public let owned : Bool
@@ -35,6 +36,12 @@ extension REST {
3536 public let weight : UInt64
3637 public let includeInCountry : Bool
3738 public var daita : Bool ?
39+ public var isIPOverridden : Bool = false
40+
41+ enum CodingKeys : String , CodingKey {
42+ case hostname, active, owned, location, provider,
43+ ipv4AddrIn, weight, includeInCountry, daita
44+ }
3845
3946 public func override( ipv4AddrIn: IPv4Address ? ) -> Self {
4047 BridgeRelay (
@@ -45,12 +52,13 @@ extension REST {
4552 provider: provider,
4653 ipv4AddrIn: ipv4AddrIn ?? self . ipv4AddrIn,
4754 weight: weight,
48- includeInCountry: includeInCountry
55+ includeInCountry: includeInCountry,
56+ isIPOverridden: true
4957 )
5058 }
5159 }
5260
53- public struct ServerRelay : Codable , Equatable , Sendable {
61+ public struct ServerRelay : Codable , Equatable , Sendable , AnyRelay {
5462 public struct Features : Codable , Equatable , Sendable {
5563 public struct DAITA : Codable , Equatable , Sendable {
5664 // this structure intentionally left blank
@@ -79,6 +87,13 @@ extension REST {
7987 public let daita : Bool ?
8088 public let shadowsocksExtraAddrIn : [ String ] ?
8189 public let features : Features ?
90+ public var isIPOverridden : Bool = false
91+
92+ enum CodingKeys : String , CodingKey {
93+ case hostname, active, owned, location, provider, weight,
94+ ipv4AddrIn, ipv6AddrIn, publicKey, includeInCountry,
95+ daita, shadowsocksExtraAddrIn, features
96+ }
8297
8398 public var supportsQuic : Bool {
8499 !( features? . quic? . addrIn. isEmpty ?? true )
@@ -98,7 +113,8 @@ extension REST {
98113 includeInCountry: includeInCountry,
99114 daita: daita,
100115 shadowsocksExtraAddrIn: shadowsocksExtraAddrIn,
101- features: features
116+ features: features,
117+ isIPOverridden: true
102118 )
103119 }
104120
@@ -116,7 +132,8 @@ extension REST {
116132 includeInCountry: includeInCountry,
117133 daita: daita,
118134 shadowsocksExtraAddrIn: shadowsocksExtraAddrIn,
119- features: features
135+ features: features,
136+ isIPOverridden: true
120137 )
121138 }
122139
0 commit comments