diff --git a/Api/Classes/Credentials.swift b/Api/Classes/Credentials.swift new file mode 100644 index 0000000000000000000000000000000000000000..e7ba4d47b15957da06e316f3cb8287ec5aee6a3f --- /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 210cd065fa6dedbff7acbac4b70b77daccadae2d..635d6b2af8bcfb645d1fd973f8dfb5cc8a840da3 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