You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
session-ios/SessionUtilitiesKit/Utilities/JSONEncoder+Utilities.swift

27 lines
687 B
Swift

// Copyright © 2023 Rangeproof Pty Ltd. All rights reserved.
import Foundation
public extension JSONEncoder {
convenience init(using dependencies: Dependencies = Dependencies()) {
self.init()
self.userInfo = [ Dependencies.userInfoKey: dependencies ]
}
func with(outputFormatting: JSONEncoder.OutputFormatting) -> JSONEncoder {
let result: JSONEncoder = self
result.outputFormatting = outputFormatting
return result
}
}
public extension Encoder {
var dependencies: Dependencies {
(
(self.userInfo[Dependencies.userInfoKey] as? Dependencies) ??
Dependencies()
)
}
}