From 9f6608b9527f1e656e9e1a9939a181b2053b6c06 Mon Sep 17 00:00:00 2001 From: cardoso Date: Mon, 17 Jul 2017 20:52:16 -0300 Subject: [PATCH] Add AuthorizationHeader initializers for Basic and Bearer --- Sources/Authentication/Header/Basic.swift | 16 ++++++++++------ Sources/Authentication/Header/Bearer.swift | 6 +++++- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/Sources/Authentication/Header/Basic.swift b/Sources/Authentication/Header/Basic.swift index 82e05a4..be6506e 100644 --- a/Sources/Authentication/Header/Basic.swift +++ b/Sources/Authentication/Header/Basic.swift @@ -1,21 +1,25 @@ -import Core - extension AuthorizationHeader { public var basic: Password? { guard let range = string.range(of: "Basic ") else { return nil } - + let token = string.substring(from: range.upperBound) - + let decodedToken = token.makeBytes().base64Decoded.makeString() guard let separatorRange = decodedToken.range(of: ":") else { return nil } - + let username = decodedToken.substring(to: separatorRange.lowerBound) let password = decodedToken.substring(from: separatorRange.upperBound) - + return Password(username: username, password: password) } + + public init(basic: Password) { + let credentials = "\(basic.username):\(basic.password)" + let encoded = credentials.makeBytes().base64Encoded.makeString() + self.init(string: "Basic \(encoded)") + } } diff --git a/Sources/Authentication/Header/Bearer.swift b/Sources/Authentication/Header/Bearer.swift index b1364e7..03bc171 100644 --- a/Sources/Authentication/Header/Bearer.swift +++ b/Sources/Authentication/Header/Bearer.swift @@ -3,8 +3,12 @@ extension AuthorizationHeader { guard let range = string.range(of: "Bearer ") else { return nil } - + let token = string.substring(from: range.upperBound) return Token(string: token) } + + public init(bearer: Token) { + self.init(string: "Bearer \(bearer.string)") + } }