From 244f955a5c152c8eec4a68855e1f3ab6f5881812 Mon Sep 17 00:00:00 2001 From: "Mauro E. Bender" Date: Thu, 25 Aug 2016 23:33:10 -0300 Subject: [PATCH] WIP #10 - Add credentials --- Api/Classes/Credentials.swift | 47 +++++++++++++++++++++++++++++++++++ Api/Classes/Utils.swift | 8 ++++++ 2 files changed, 55 insertions(+) create mode 100644 Api/Classes/Credentials.swift diff --git a/Api/Classes/Credentials.swift b/Api/Classes/Credentials.swift new file mode 100644 index 0000000..e7ba4d4 --- /dev/null +++ b/Api/Classes/Credentials.swift @@ -0,0 +1,47 @@ +// +// Credentials.swift +// Pods +// +// Created by Mauro Bender on 25/8/16. +// +// + +struct Credentials { + let grantType: String + let data: [ String: String ] + + func serialize() -> [ String: String ] { + var data = self.data + data += [ "grant_type": grantType ] + + return data + } +} + +extension Credentials { + init( username: String, password: String, extra: [ String: String ]? = nil ) { + self.grantType = "password" + + var data = [ "username": username, "password": password ] + if extra != nil { data += extra } + + self.data = data + } + + init( assertion: String, extra: [ String: String ]? = nil ) { + self.grantType = "assertion" + + var data = [ "assertion": assertion ] + if extra != nil { data += extra } + + self.data = data + } + + public static func password( username: String, password: String, extra: [ String: String ]? = nil ) -> Credentials { + return Credentials( username: username, password: password, extra: extra ) + } + + public static func facebook( token: String, extra: [ String: String ]? = nil ) -> Credentials { + return Credentials( assertion: token, extra: extra ) + } +} diff --git a/Api/Classes/Utils.swift b/Api/Classes/Utils.swift index 210cd06..635d6b2 100644 --- a/Api/Classes/Utils.swift +++ b/Api/Classes/Utils.swift @@ -12,4 +12,12 @@ func += (inout left: [K:V], right: [K:V]) { for (k, v) in right { left.updateValue(v, forKey: k) } +} + +func += (inout left: [K:V], right: [K:V]?) { + guard right != nil else { return } + + for (k, v) in right! { + left.updateValue(v, forKey: k) + } } \ No newline at end of file -- GitLab