Created
December 5, 2018 02:16
-
-
Save JoeMatt/a1f8eccecfb50c2da5149d19b6ca1ba8 to your computer and use it in GitHub Desktop.
Revisions
-
JoeMatt created this gist
Dec 5, 2018 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,58 @@ protocol SOAPElement : Codable { static var namespace : String { get } static var uri : String { get } } protocol WSSEElement : SOAPElement {} /* <wsse:Security> <wsse:UsernameToken> <wsse:Password>SALIDO</wsse:Password> <wsse:Username>SALIDO</wsse:Username> </wsse:UsernameToken> </wsse:Security> */ struct WSSE_BASIC : WSSEElement { let username : String let password : String struct UsernameToken : Codable { let username : String let password : String } static let namespace :String = "wsse" static let uri: String = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" enum CodingKeys: String, CodingKey { case usernameToken = "wsse:UsernameToken" } enum UsernameTokenKeys: String, CodingKey { case username = "wsse:Username" case password = "wsse:Password" } } extension WSSE_BASIC: Decodable { init(from decoder: Decoder) throws { let values = try decoder.container(keyedBy: CodingKeys.self) let usernameToken = try values.nestedContainer(keyedBy: UsernameTokenKeys.self, forKey: .usernameToken) username = try usernameToken.decode(String.self, forKey: .username) password = try usernameToken.decode(String.self, forKey: .password) } } extension WSSE_BASIC: Encodable { func encode(to encoder: Encoder) throws { var container = encoder.container(keyedBy: CodingKeys.self) var usernameToken = container.nestedContainer(keyedBy: UsernameTokenKeys.self, forKey: .usernameToken) try usernameToken.encode(username, forKey: .username) try usernameToken.encode(password, forKey: .password) } }