mirror of
https://bitbucket.org/vendoo/vendoo_v1.0.git
synced 2025-12-25 11:47:40 +00:00
Add Query string class
This commit is contained in:
parent
2ccfb5f451
commit
e65ddf71d3
13
Podfile
13
Podfile
@ -1,6 +1,13 @@
|
||||
# Uncomment this line to define a global platform for your project
|
||||
# platform :ios, '9.0'
|
||||
|
||||
|
||||
post_install do |installer|
|
||||
installer.pods_project.build_configuration_list.build_configurations.each do |configuration|
|
||||
configuration.build_settings['CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES'] = 'YES'
|
||||
end
|
||||
end
|
||||
|
||||
target 'Vendoo' do
|
||||
# Comment this line if you're not using Swift and don't want to use dynamic frameworks
|
||||
use_frameworks!
|
||||
@ -22,8 +29,8 @@ use_frameworks!
|
||||
pod 'TYMActivityIndicatorView'
|
||||
pod 'BSImagePicker', '~> 2.3'
|
||||
pod 'SWRevealViewController'
|
||||
|
||||
|
||||
# pod 'CommonCrypto'
|
||||
#'~> 1.1'
|
||||
|
||||
target 'VendooTests' do
|
||||
# inherit! :search_paths
|
||||
@ -35,5 +42,7 @@ use_frameworks!
|
||||
# inherit! :search_paths
|
||||
# Pods for testing
|
||||
end
|
||||
|
||||
|
||||
|
||||
end
|
||||
|
||||
52
Podfile.lock
52
Podfile.lock
@ -1,7 +1,7 @@
|
||||
PODS:
|
||||
- AeroGearHttp (0.6.0)
|
||||
- AeroGearOAuth2 (0.5.1):
|
||||
- AeroGearHttp
|
||||
- AeroGearHttp (0.7.0)
|
||||
- AeroGearOAuth2 (0.7.0):
|
||||
- AeroGearHttp (= 0.7.0)
|
||||
- AFNetworking (2.6.3):
|
||||
- AFNetworking/NSURLConnection (= 2.6.3)
|
||||
- AFNetworking/NSURLSession (= 2.6.3)
|
||||
@ -37,25 +37,25 @@ PODS:
|
||||
- BSImagePicker (2.3.0):
|
||||
- BSGridCollectionViewLayout (~> 1.1)
|
||||
- UIImageViewModeScaleAspect (~> 1.3)
|
||||
- FBSDKCoreKit (4.14.0):
|
||||
- FBSDKCoreKit (4.15.0):
|
||||
- Bolts (~> 1.7)
|
||||
- FBSDKLoginKit (4.14.0):
|
||||
- FBSDKLoginKit (4.15.0):
|
||||
- FBSDKCoreKit
|
||||
- FBSDKShareKit (4.14.0):
|
||||
- FBSDKShareKit (4.15.0):
|
||||
- FBSDKCoreKit
|
||||
- Firebase (3.4.0):
|
||||
- Firebase/Core (= 3.4.0)
|
||||
- Firebase/Analytics (3.4.0):
|
||||
- Firebase (3.5.2):
|
||||
- Firebase/Core (= 3.5.2)
|
||||
- Firebase/Analytics (3.5.2):
|
||||
- FirebaseAnalytics (~> 3.3)
|
||||
- Firebase/Core (3.4.0):
|
||||
- Firebase/Core (3.5.2):
|
||||
- Firebase/Analytics
|
||||
- Firebase/Database (3.4.0):
|
||||
- Firebase/Database (3.5.2):
|
||||
- Firebase/Analytics
|
||||
- FirebaseDatabase (= 3.0.2)
|
||||
- Firebase/Storage (3.4.0):
|
||||
- Firebase/Storage (3.5.2):
|
||||
- Firebase/Analytics
|
||||
- FirebaseStorage (= 1.0.2)
|
||||
- FirebaseAnalytics (3.3.0):
|
||||
- FirebaseStorage (= 1.0.3)
|
||||
- FirebaseAnalytics (3.3.1):
|
||||
- FirebaseInstanceID (~> 1.0)
|
||||
- GoogleInterchangeUtilities (~> 1.2)
|
||||
- GoogleSymbolUtilities (~> 1.1)
|
||||
@ -68,8 +68,8 @@ PODS:
|
||||
- FirebaseDatabase (3.0.2):
|
||||
- FirebaseAnalytics (~> 3.2)
|
||||
- FirebaseInstanceID (1.0.8)
|
||||
- FirebaseStorage (1.0.2):
|
||||
- FirebaseAnalytics (~> 3.2)
|
||||
- FirebaseStorage (1.0.3):
|
||||
- FirebaseAnalytics (~> 3.3)
|
||||
- GoogleNetworkingUtilities (~> 1.2)
|
||||
- GDataXML-HTML (1.3.0)
|
||||
- GoogleInterchangeUtilities (1.2.1):
|
||||
@ -121,23 +121,23 @@ DEPENDENCIES:
|
||||
- TYMActivityIndicatorView
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
AeroGearHttp: e958f301cc2d1c7fbfd4b61af187ea3490040a48
|
||||
AeroGearOAuth2: 6f29d3fac8b78a0ff6d51b04c4ba1a02baed2e52
|
||||
AeroGearHttp: 4660c8bf5b56cd00a3b75d7c5ecf94774469df5c
|
||||
AeroGearOAuth2: de4218f60a6228d6cdcf1761277fe8af1115600a
|
||||
AFNetworking: cb8d14a848e831097108418f5d49217339d4eb60
|
||||
Alamofire: 01a82e2f6c0f860ade35534c8dd88be61bdef40c
|
||||
Alamofire-SwiftyJSON: 5812bb37accc36897cc2f2dabb070d8ebcd7ac98
|
||||
Bolts: 8a7995239dbe724f9cba2248b766d48b7ebdd322
|
||||
BSGridCollectionViewLayout: d7304dcb35c6b3b4420c527e9f9b77ff322250f3
|
||||
BSImagePicker: 591b28ce4994c44cbc4ac896717c1db9f9fadd18
|
||||
FBSDKCoreKit: 6e020b5db0b5bd1e01f5fb0902131befd129a502
|
||||
FBSDKLoginKit: da563567a108050ef83739c8c8c001ee9e25fa13
|
||||
FBSDKShareKit: e8e5d4ccef69b41132fe33acda26db1e33143e33
|
||||
Firebase: 754562547af419cc2f4b15247fee419081924bc2
|
||||
FirebaseAnalytics: 228be2991cb28efb96cdafc4d62f64680e615c69
|
||||
FBSDKCoreKit: 6680cbd33a4243d80700f182d0af36b3fa7f3118
|
||||
FBSDKLoginKit: 96d9b70b5784490f02ab86119e542a1f182017a8
|
||||
FBSDKShareKit: 06ef20cb2f16828ca4b20055333313dd445de362
|
||||
Firebase: 94e63112efcad75226c0356a8f3032397b8547c9
|
||||
FirebaseAnalytics: d968d4d5f6aeb795cd64144337bcd233e530efc6
|
||||
FirebaseAuth: 26fd291c3b552fc9658420b867520d5ae080421c
|
||||
FirebaseDatabase: 59bea2e7dfd81b3b8b2f8e396caf1a52c2ced6f7
|
||||
FirebaseInstanceID: ba1e640935235e5fac39dfa816fe7660e72e1a8a
|
||||
FirebaseStorage: fa2a87dee81f682f553af6839daa37a750e65f6a
|
||||
FirebaseStorage: 3992817bf405f5c1a4f8349678d22724cd0ef509
|
||||
GDataXML-HTML: 7adc03668cab35c288f1dbb8929a179f0fece898
|
||||
GoogleInterchangeUtilities: def8415a862effc67d549d5b5b0b9c7a2f97d4de
|
||||
GoogleNetworkingUtilities: 3e83269048cfb498dc7ec83ab36813360965c74f
|
||||
@ -152,6 +152,6 @@ SPEC CHECKSUMS:
|
||||
TYMActivityIndicatorView: ad816387ebd5952c376af129218722733044148b
|
||||
UIImageViewModeScaleAspect: 11a790a0b9d248a13dc63e3a78991f1463b6d84e
|
||||
|
||||
PODFILE CHECKSUM: 3b36a7c734809ee54f4ecf0055d9910a9279d555
|
||||
PODFILE CHECKSUM: d5879f9153df4c398c04aed34c686baebf1eeafb
|
||||
|
||||
COCOAPODS: 1.0.0
|
||||
COCOAPODS: 1.0.1
|
||||
|
||||
11
Pods/AeroGearHttp/AeroGearHttp/Http.swift
generated
11
Pods/AeroGearHttp/AeroGearHttp/Http.swift
generated
@ -544,7 +544,13 @@ public class Http {
|
||||
if (destinationDirectory == nil) { // use 'default documents' directory if not set
|
||||
// use default documents directory
|
||||
let documentsDirectory = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0] as NSURL
|
||||
finalDestination = documentsDirectory.URLByAppendingPathComponent(filename!)
|
||||
#if swift(>=2.3)
|
||||
// this compiles on Xcode 8 / Swift 2.3 / iOS 10
|
||||
finalDestination = documentsDirectory.URLByAppendingPathComponent(filename!)!
|
||||
#else
|
||||
// this compiles on Xcode 7 / Swift 2.2 / iOS 9
|
||||
finalDestination = documentsDirectory.URLByAppendingPathComponent(filename!)
|
||||
#endif
|
||||
} else {
|
||||
// check that the directory exists
|
||||
let path = destinationDirectory?.stringByAppendingPathComponent(filename!)
|
||||
@ -577,7 +583,8 @@ public class Http {
|
||||
}
|
||||
|
||||
// MARK: Utility methods
|
||||
public func calculateURL(baseURL: String?, var url: String) -> NSURL? {
|
||||
public func calculateURL(baseURL: String?, url: String) -> NSURL? {
|
||||
var url = url
|
||||
if (baseURL == nil || url.hasPrefix("http")) {
|
||||
return NSURL(string: url)!
|
||||
}
|
||||
|
||||
@ -65,7 +65,13 @@ public class HttpRequestSerializer: RequestSerializer {
|
||||
var newUrl:String
|
||||
if (request.URL?.absoluteString != nil && parameters != nil) {
|
||||
let queryString = self.stringFromParameters(parameters!)
|
||||
newUrl = "\(request.URL!.absoluteString)\(paramSeparator)\(queryString)"
|
||||
#if swift(>=2.3)
|
||||
// this compiles on Xcode 8 / Swift 2.3 / iOS 10
|
||||
newUrl = "\(request.URL!.absoluteString!)\(paramSeparator)\(queryString)"
|
||||
#else
|
||||
// this compiles on Xcode 7 / Swift 2.2 / iOS 9
|
||||
newUrl = "\(request.URL!.absoluteString)\(paramSeparator)\(queryString)"
|
||||
#endif
|
||||
request.URL = NSURL(string: newUrl)!
|
||||
}
|
||||
|
||||
|
||||
6
Pods/AeroGearHttp/README.md
generated
6
Pods/AeroGearHttp/README.md
generated
@ -1,6 +1,6 @@
|
||||
# aerogear-ios-http [](https://travis-ci.org/aerogear/aerogear-ios-http)
|
||||
|
||||
> This module currently build with Xcode 7.2 and supports iOS8, iOS9.
|
||||
> This module currently build with Xcode 7.2 / Xcode 8 and supports iOS8, iOS9, iOS10.
|
||||
|
||||
Thin layer to take care of your http requests working with NSURLSession.
|
||||
Taking care of:
|
||||
@ -11,7 +11,7 @@ Taking care of:
|
||||
* Pluggable object serialization
|
||||
* background processing support
|
||||
|
||||
100% Swift 2.0.
|
||||
100% Swift 2.X.
|
||||
|
||||
| | Project Info |
|
||||
| --------------- | ------------- |
|
||||
@ -112,7 +112,7 @@ pod install
|
||||
To add the library in your project, you can either use [CocoaPods](http://cocoapods.org) or manual install in your project. See the respective sections below for instructions:
|
||||
|
||||
### Using [CocoaPods](http://cocoapods.org)
|
||||
Support for Swift frameworks is supported from [CocoaPods-0.36 release](http://blog.cocoapods.org/CocoaPods-0.36/) upwards. In your ```Podfile``` add:
|
||||
We recommend you use[CocoaPods-1.1.0.beta.1 release](https://github.com/CocoaPods/CocoaPods/releases/tag/1.1.0.beta.1). In your ```Podfile``` add:
|
||||
|
||||
```
|
||||
pod 'AeroGearHttp'
|
||||
|
||||
@ -65,12 +65,12 @@ public class GoogleConfig: Config {
|
||||
public init(clientId: String, scopes: [String], accountId: String? = nil, isOpenIDConnect: Bool = false) {
|
||||
let bundleString = NSBundle.mainBundle().bundleIdentifier ?? "google"
|
||||
super.init(base: "https://accounts.google.com",
|
||||
authzEndpoint: "o/oauth2/auth",
|
||||
authzEndpoint: "o/oauth2/v2/auth",
|
||||
redirectURL: "\(bundleString):/oauth2Callback",
|
||||
accessTokenEndpoint: "o/oauth2/token",
|
||||
clientId: clientId,
|
||||
refreshTokenEndpoint: "o/oauth2/token",
|
||||
revokeTokenEndpoint: "rest/revoke",
|
||||
revokeTokenEndpoint: "o/oauth2/revoke",
|
||||
isOpenIDConnect: isOpenIDConnect,
|
||||
userInfoEndpoint: isOpenIDConnect ? "https://www.googleapis.com/plus/v1/people/me/openIdConnect" : nil,
|
||||
scopes: scopes,
|
||||
@ -96,13 +96,13 @@ public class KeycloakConfig: Config {
|
||||
let bundleString = NSBundle.mainBundle().bundleIdentifier ?? "keycloak"
|
||||
let defaulRealmName = String(format: "%@-realm", clientId)
|
||||
let realm = realm ?? defaulRealmName
|
||||
super.init(base: String(format: "%@/auth", host),
|
||||
authzEndpoint: String(format: "realms/%@/tokens/login", realm),
|
||||
super.init(base: "\(host)/auth",
|
||||
authzEndpoint: "realms/\(realm)/protocol/openid-connect/auth",
|
||||
redirectURL: "\(bundleString)://oauth2Callback",
|
||||
accessTokenEndpoint: String(format: "realms/%@/tokens/access/codes", realm),
|
||||
accessTokenEndpoint: "realms/\(realm)/protocol/openid-connect/token",
|
||||
clientId: clientId,
|
||||
refreshTokenEndpoint: String(format: "realms/%@/tokens/refresh", realm),
|
||||
revokeTokenEndpoint: String(format: "realms/%@/tokens/logout", realm),
|
||||
refreshTokenEndpoint: "realms/\(realm)/protocol/openid-connect/token",
|
||||
revokeTokenEndpoint: "realms/\(realm)/protocol/openid-connect/logout",
|
||||
isOpenIDConnect: isOpenIDConnect)
|
||||
// Add openIdConnect scope
|
||||
if self.isOpenIDConnect {
|
||||
@ -117,11 +117,11 @@ An account manager used to instantiate, store and retrieve OAuth2 modules.
|
||||
public class AccountManager {
|
||||
/// List of OAuth2 modules available for a given app. Each module is linked to an OAuht2Session which securely store the tokens.
|
||||
var modules: [String: OAuth2Module]
|
||||
|
||||
|
||||
init() {
|
||||
self.modules = [String: OAuth2Module]()
|
||||
}
|
||||
|
||||
|
||||
/// access a shared instance of an account manager
|
||||
public class var sharedInstance: AccountManager {
|
||||
struct Singleton {
|
||||
@ -129,52 +129,52 @@ public class AccountManager {
|
||||
}
|
||||
return Singleton.instance
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Instantiate an OAuth2 Module using the configuration object passed in and adds it to the account manager. It uses the OAuth2Session account_id as the name that this module will be stored in.
|
||||
|
||||
|
||||
:param: config the configuration object to use to setup an OAuth2 module.
|
||||
:param: moduleClass the type of the OAuth2 module to instantiate.
|
||||
|
||||
|
||||
:returns: the OAuth2 module
|
||||
*/
|
||||
public class func addAccount(config: Config, moduleClass: OAuth2Module.Type) -> OAuth2Module {
|
||||
var myModule:OAuth2Module
|
||||
var myModule: OAuth2Module
|
||||
myModule = moduleClass.init(config: config)
|
||||
// TODO check accountId is unique in modules list
|
||||
sharedInstance.modules[myModule.oauth2Session.accountId] = myModule
|
||||
return myModule
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Removes an OAuth2 module
|
||||
|
||||
|
||||
:param: name the name that the OAuth2 module was bound to.
|
||||
:param: config the configuration object to use to setup an OAuth2 module.
|
||||
:param: moduleClass the type of the OAuth2 module to instantiate.
|
||||
|
||||
|
||||
:returns: the OAuth2module or nil if not found
|
||||
*/
|
||||
public class func removeAccount(name: String, config: Config, moduleClass: OAuth2Module.Type) -> OAuth2Module? {
|
||||
return sharedInstance.modules.removeValueForKey(name)
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Retrieves an OAuth2 module by a name
|
||||
|
||||
|
||||
:param: name the name that the OAuth2 module was bound to.
|
||||
|
||||
|
||||
:returns: the OAuth2module or nil if not found.
|
||||
*/
|
||||
public class func getAccountByName(name: String) -> OAuth2Module? {
|
||||
return sharedInstance.modules[name]
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Retrieves a list of OAuth2 modules bound to specific clientId.
|
||||
|
||||
|
||||
:param: clientId the client it that the oauth2 module was bound to.
|
||||
|
||||
|
||||
:returns: the OAuth2module or nil if not found.
|
||||
*/
|
||||
public class func getAccountsByClienId(clientId: String) -> [OAuth2Module] {
|
||||
@ -182,12 +182,12 @@ public class AccountManager {
|
||||
return modules.filter {$0.config.clientId == clientId }
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
Retrieves an OAuth2 module by using a configuration object.
|
||||
|
||||
|
||||
:param: config the Config object that this oauth2 module was used to instantiate.
|
||||
|
||||
|
||||
:returns: the OAuth2module or nil if not found.
|
||||
*/
|
||||
public class func getAccountByConfig(config: Config) -> OAuth2Module? {
|
||||
@ -205,31 +205,31 @@ public class AccountManager {
|
||||
|
||||
/**
|
||||
Convenient method to retrieve a Facebook oauth2 module.
|
||||
|
||||
|
||||
:param: config a Facebook configuration object. See FacebookConfig.
|
||||
|
||||
|
||||
:returns: a Facebook OAuth2 module.
|
||||
*/
|
||||
public class func addFacebookAccount(config: FacebookConfig) -> FacebookOAuth2Module {
|
||||
return addAccount(config, moduleClass: FacebookOAuth2Module.self) as! FacebookOAuth2Module
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Convenient method to retrieve a Google oauth2 module ready to be used.
|
||||
|
||||
|
||||
:param: config a google configuration object. See GoogleConfig.
|
||||
|
||||
|
||||
:returns: a google OAuth2 module.
|
||||
*/
|
||||
public class func addGoogleAccount(config: GoogleConfig) -> OAuth2Module {
|
||||
return addAccount(config, moduleClass: OAuth2Module.self)
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Convenient method to retrieve a Keycloak oauth2 module ready to be used.
|
||||
|
||||
|
||||
:param: config a Keycloak configuration object. See KeycloakConfig.
|
||||
|
||||
|
||||
:returns: a Keycloak OAuth2 module.
|
||||
*/
|
||||
public class func addKeycloakAccount(config: KeycloakConfig) -> KeycloakOAuth2Module {
|
||||
|
||||
36
Pods/AeroGearOAuth2/AeroGearOAuth2/Config.swift
generated
36
Pods/AeroGearOAuth2/AeroGearOAuth2/Config.swift
generated
@ -25,7 +25,7 @@ public class Config {
|
||||
Applies the baseURL to the configuration.
|
||||
*/
|
||||
public let baseURL: String
|
||||
|
||||
|
||||
/**
|
||||
Applies the "callback URL" once request token issued.
|
||||
*/
|
||||
@ -35,7 +35,7 @@ public class Config {
|
||||
Applies the "authorization endpoint" to the request token.
|
||||
*/
|
||||
public var authzEndpoint: String
|
||||
|
||||
|
||||
/**
|
||||
Applies the "access token endpoint" to the exchange code for access token.
|
||||
*/
|
||||
@ -45,27 +45,27 @@ public class Config {
|
||||
Endpoint for request to invalidate both accessToken and refreshToken.
|
||||
*/
|
||||
public let revokeTokenEndpoint: String?
|
||||
|
||||
|
||||
/**
|
||||
Endpoint for request a refreshToken.
|
||||
*/
|
||||
public let refreshTokenEndpoint: String?
|
||||
|
||||
|
||||
/**
|
||||
Endpoint for OpenID Connect to get user information.
|
||||
*/
|
||||
public let userInfoEndpoint: String?
|
||||
|
||||
|
||||
/**
|
||||
Boolean to indicate whether OpenID Connect on authorization code grant flow is used.
|
||||
*/
|
||||
public var isOpenIDConnect: Bool
|
||||
|
||||
|
||||
/**
|
||||
Applies the various scopes of the authorization.
|
||||
*/
|
||||
public var scopes: [String]
|
||||
|
||||
|
||||
var scope: String {
|
||||
get {
|
||||
// Create a string to concatenate all scopes existing in the _scopes array.
|
||||
@ -80,30 +80,38 @@ public class Config {
|
||||
return scopeString
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Applies the "client id" obtained with the client registration process.
|
||||
*/
|
||||
public let clientId: String
|
||||
|
||||
|
||||
/**
|
||||
Applies the "client secret" obtained with the client registration process.
|
||||
*/
|
||||
public let clientSecret: String?
|
||||
|
||||
|
||||
/**
|
||||
Account id is used with AccountManager to store tokens. AccountId is defined by the end-user
|
||||
and can be any String. If AccountManager is not used, this field is optional.
|
||||
*/
|
||||
public var accountId: String?
|
||||
|
||||
|
||||
/**
|
||||
Boolean to indicate to either used a webview (if true) or an external browser (by default, false)
|
||||
for authorization code grant flow.
|
||||
*/
|
||||
public var isWebView: Bool = false
|
||||
|
||||
public init(base: String, authzEndpoint: String, redirectURL: String, accessTokenEndpoint: String, clientId: String, refreshTokenEndpoint: String? = nil, revokeTokenEndpoint: String? = nil, isOpenIDConnect:Bool = false, userInfoEndpoint: String? = nil, scopes: [String] = [], clientSecret: String? = nil, accountId: String? = nil, isWebView: Bool = false) {
|
||||
|
||||
/**
|
||||
A handler to allow the webview to be pushed onto the navigation controller
|
||||
*/
|
||||
public var webViewHandler: ((OAuth2WebViewController, completionHandler: (AnyObject?, NSError?) -> Void) -> ()) = {
|
||||
(webView, completionHandler) in
|
||||
UIApplication.sharedApplication().keyWindow?.rootViewController?.presentViewController(webView, animated: true, completion: nil)
|
||||
}
|
||||
|
||||
public init(base: String, authzEndpoint: String, redirectURL: String, accessTokenEndpoint: String, clientId: String, refreshTokenEndpoint: String? = nil, revokeTokenEndpoint: String? = nil, isOpenIDConnect: Bool = false, userInfoEndpoint: String? = nil, scopes: [String] = [], clientSecret: String? = nil, accountId: String? = nil, isWebView: Bool = false) {
|
||||
self.baseURL = base
|
||||
self.authzEndpoint = authzEndpoint
|
||||
self.redirectURL = redirectURL
|
||||
@ -118,4 +126,4 @@ public class Config {
|
||||
self.accountId = accountId
|
||||
self.isWebView = isWebView
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
19
Pods/AeroGearOAuth2/AeroGearOAuth2/DateUtils.swift
generated
19
Pods/AeroGearOAuth2/AeroGearOAuth2/DateUtils.swift
generated
@ -20,17 +20,16 @@ import Foundation
|
||||
/**
|
||||
Handy extensions to NSDate
|
||||
*/
|
||||
extension NSDate
|
||||
{
|
||||
|
||||
extension NSDate {
|
||||
|
||||
/**
|
||||
Initialize a date object using the given string.
|
||||
|
||||
|
||||
:param: dateString the string that will be used to instantiate the date object. The string is expected to be in the format 'yyyy-MM-dd hh:mm:ss a'.
|
||||
|
||||
|
||||
:returns: the NSDate object.
|
||||
*/
|
||||
public convenience init(dateString:String) {
|
||||
public convenience init(dateString: String) {
|
||||
let dateStringFormatter = NSDateFormatter()
|
||||
dateStringFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss a"
|
||||
let d = dateStringFormatter.dateFromString(dateString)
|
||||
@ -40,11 +39,11 @@ extension NSDate
|
||||
self.init()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
Returns a string of the date object using the format 'yyyy-MM-dd hh:mm:ss a'.
|
||||
|
||||
|
||||
:returns: a formatted string object.
|
||||
*/
|
||||
public func toString() -> String {
|
||||
@ -52,4 +51,4 @@ extension NSDate
|
||||
dateStringFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss a"
|
||||
return dateStringFormatter.stringFromDate(self)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -22,35 +22,35 @@ import AeroGearHttp
|
||||
An OAuth2Module subclass specific to 'Facebook' authorization
|
||||
*/
|
||||
public class FacebookOAuth2Module: OAuth2Module {
|
||||
|
||||
|
||||
public required init(config: Config, session: OAuth2Session?, requestSerializer: RequestSerializer, responseSerializer: ResponseSerializer) {
|
||||
super.init(config: config, session: session, requestSerializer: JsonRequestSerializer(), responseSerializer: StringResponseSerializer())
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Exchange an authorization code for an access token.
|
||||
|
||||
|
||||
:param: code the 'authorization' code to exchange for an access token.
|
||||
:param: completionHandler A block object to be executed when the request operation finishes.
|
||||
*/
|
||||
override public func exchangeAuthorizationCodeForAccessToken(code: String, completionHandler: (AnyObject?, NSError?) -> Void) {
|
||||
var paramDict: [String: String] = ["code": code, "client_id": config.clientId, "redirect_uri": config.redirectURL, "grant_type":"authorization_code"]
|
||||
|
||||
|
||||
if let unwrapped = config.clientSecret {
|
||||
paramDict["client_secret"] = unwrapped
|
||||
}
|
||||
|
||||
|
||||
http.request(.POST, path: config.accessTokenEndpoint, parameters: paramDict, completionHandler: { (response, error) in
|
||||
|
||||
|
||||
if (error != nil) {
|
||||
completionHandler(nil, error)
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
if let unwrappedResponse = response as? String {
|
||||
var accessToken: String? = nil
|
||||
var expiredIn: String? = nil
|
||||
|
||||
|
||||
let charSet: NSMutableCharacterSet = NSMutableCharacterSet()
|
||||
charSet.addCharactersInString("&=")
|
||||
let array = unwrappedResponse.componentsSeparatedByCharactersInSet(charSet)
|
||||
@ -69,38 +69,38 @@ public class FacebookOAuth2Module: OAuth2Module {
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Request to revoke access.
|
||||
|
||||
|
||||
:param: completionHandler A block object to be executed when the request operation finishes.
|
||||
*/
|
||||
override public func revokeAccess(completionHandler: (AnyObject?, NSError?) -> Void) {
|
||||
// return if not yet initialized
|
||||
if (self.oauth2Session.accessToken == nil) {
|
||||
return;
|
||||
return
|
||||
}
|
||||
let paramDict:[String:String] = ["access_token":self.oauth2Session.accessToken!]
|
||||
|
||||
let paramDict: [String:String] = ["access_token":self.oauth2Session.accessToken!]
|
||||
|
||||
http.request(.DELETE, path: config.revokeTokenEndpoint!, parameters: paramDict, completionHandler: { (response, error) in
|
||||
|
||||
|
||||
if (error != nil) {
|
||||
completionHandler(nil, error)
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
self.oauth2Session.clearTokens()
|
||||
completionHandler(response!, nil)
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Gateway to request authorization access
|
||||
|
||||
|
||||
:param: completionHandler A block object to be executed when the request operation finishes.
|
||||
*/
|
||||
override public func login(completionHandler: (AnyObject?, OpenIDClaim?, NSError?) -> Void) {
|
||||
self.requestAccess { (response:AnyObject?, error:NSError?) -> Void in
|
||||
self.requestAccess { (response: AnyObject?, error: NSError?) -> Void in
|
||||
if (error != nil) {
|
||||
completionHandler(nil, nil, error)
|
||||
return
|
||||
@ -110,7 +110,7 @@ public class FacebookOAuth2Module: OAuth2Module {
|
||||
paramDict = ["access_token": response! as! String]
|
||||
}
|
||||
if let userInfoEndpoint = self.config.userInfoEndpoint {
|
||||
|
||||
|
||||
self.http.request(.GET, path: userInfoEndpoint, parameters: paramDict, completionHandler: {(responseObject, error) in
|
||||
if (error != nil) {
|
||||
completionHandler(nil, nil, error)
|
||||
@ -132,4 +132,4 @@ public class FacebookOAuth2Module: OAuth2Module {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -21,32 +21,32 @@ import Foundation
|
||||
An OAuth2Module subclass specific to 'Keycloak' authorization
|
||||
*/
|
||||
public class KeycloakOAuth2Module: OAuth2Module {
|
||||
|
||||
|
||||
public override func revokeAccess(completionHandler: (AnyObject?, NSError?) -> Void) {
|
||||
// return if not yet initialized
|
||||
if (self.oauth2Session.accessToken == nil) {
|
||||
return;
|
||||
return
|
||||
}
|
||||
let paramDict:[String:String] = [ "client_id": config.clientId, "refresh_token": self.oauth2Session.refreshToken!]
|
||||
let paramDict: [String:String] = [ "client_id": config.clientId, "refresh_token": self.oauth2Session.refreshToken!]
|
||||
http.request(.POST, path: config.revokeTokenEndpoint!, parameters: paramDict, completionHandler: { (response, error) in
|
||||
if (error != nil) {
|
||||
completionHandler(nil, error)
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
self.oauth2Session.clearTokens()
|
||||
completionHandler(response, nil)
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Gateway to login with OpenIDConnect
|
||||
|
||||
|
||||
:param: completionHandler A block object to be executed when the request operation finishes.
|
||||
*/
|
||||
public override func login(completionHandler: (AnyObject?, OpenIDClaim?, NSError?) -> Void) {
|
||||
var openIDClaims: OpenIDClaim?
|
||||
|
||||
|
||||
self.requestAccess { (response: AnyObject?, error: NSError?) -> Void in
|
||||
if (error != nil) {
|
||||
completionHandler(nil, nil, error)
|
||||
@ -62,10 +62,10 @@ public class KeycloakOAuth2Module: OAuth2Module {
|
||||
completionHandler(accessToken, openIDClaims, nil)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Request to refresh an access token.
|
||||
|
||||
|
||||
:param: completionHandler A block object to be executed when the request operation finishes.
|
||||
*/
|
||||
public override func refreshAccessToken(completionHandler: (AnyObject?, NSError?) -> Void) {
|
||||
@ -74,13 +74,13 @@ public class KeycloakOAuth2Module: OAuth2Module {
|
||||
if (config.clientSecret != nil) {
|
||||
paramDict["client_secret"] = config.clientSecret!
|
||||
}
|
||||
|
||||
|
||||
http.request(.POST, path: config.refreshTokenEndpoint!, parameters: paramDict, completionHandler: { (response, error) in
|
||||
if (error != nil) {
|
||||
completionHandler(nil, error)
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
if let unwrappedResponse = response as? [String: AnyObject] {
|
||||
let accessToken: String = unwrappedResponse["access_token"] as! String
|
||||
let refreshToken: String = unwrappedResponse["refresh_token"] as! String
|
||||
@ -88,21 +88,21 @@ public class KeycloakOAuth2Module: OAuth2Module {
|
||||
let exp: String = expiration.stringValue
|
||||
let expirationRefresh = unwrappedResponse["refresh_expires_in"] as? NSNumber
|
||||
let expRefresh = expirationRefresh?.stringValue
|
||||
|
||||
|
||||
// in Keycloak refresh token get refreshed every time you use them
|
||||
self.oauth2Session.saveAccessToken(accessToken, refreshToken: refreshToken, accessTokenExpiration: exp, refreshTokenExpiration: expRefresh)
|
||||
completionHandler(accessToken, nil);
|
||||
completionHandler(accessToken, nil)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
func decode(token: String) -> [String: AnyObject]? {
|
||||
let string = token.componentsSeparatedByString(".")
|
||||
let toDecode = string[1] as String
|
||||
|
||||
|
||||
|
||||
|
||||
var stringtoDecode: String = toDecode.stringByReplacingOccurrencesOfString("-", withString: "+") // 62nd char of encoding
|
||||
stringtoDecode = stringtoDecode.stringByReplacingOccurrencesOfString("_", withString: "/") // 63rd char of encoding
|
||||
switch (stringtoDecode.utf16.count % 4) {
|
||||
@ -113,7 +113,7 @@ public class KeycloakOAuth2Module: OAuth2Module {
|
||||
}
|
||||
let dataToDecode = NSData(base64EncodedString: stringtoDecode, options: [])
|
||||
let base64DecodedString = NSString(data: dataToDecode!, encoding: NSUTF8StringEncoding)
|
||||
|
||||
|
||||
var values: [String: AnyObject]?
|
||||
if let string = base64DecodedString {
|
||||
if let data = string.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true) {
|
||||
@ -122,5 +122,5 @@ public class KeycloakOAuth2Module: OAuth2Module {
|
||||
}
|
||||
return values
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -50,7 +50,8 @@ public class OAuth2Module: AuthzModule {
|
||||
var applicationLaunchNotificationObserver: NSObjectProtocol?
|
||||
var applicationDidBecomeActiveNotificationObserver: NSObjectProtocol?
|
||||
var state: AuthorizationState
|
||||
var webView: OAuth2WebViewController?
|
||||
public var webView: OAuth2WebViewController?
|
||||
|
||||
/**
|
||||
Initialize an OAuth2 module.
|
||||
|
||||
@ -107,7 +108,7 @@ public class OAuth2Module: AuthzModule {
|
||||
// unregister
|
||||
self.stopObserving()
|
||||
// ..and update state
|
||||
self.state = .AuthorizationStateUnknown;
|
||||
self.state = .AuthorizationStateUnknown
|
||||
}
|
||||
})
|
||||
|
||||
@ -121,11 +122,17 @@ public class OAuth2Module: AuthzModule {
|
||||
completionHandler(nil, error)
|
||||
return
|
||||
}
|
||||
let url = NSURL(string:computedUrl.absoluteString + params)
|
||||
#if swift(>=2.3)
|
||||
// this compiles on Xcode 8 / Swift 2.3 / iOS 10
|
||||
let url = NSURL(string:computedUrl.absoluteString! + params)
|
||||
#else
|
||||
// this compiles on Xcode 7 / Swift 2.2 / iOS 9
|
||||
let url = NSURL(string:computedUrl.absoluteString + params)
|
||||
#endif
|
||||
if let url = url {
|
||||
if self.webView != nil {
|
||||
self.webView!.targetURL = url
|
||||
UIApplication.sharedApplication().keyWindow?.rootViewController?.presentViewController(self.webView!, animated: true, completion: nil)
|
||||
config.webViewHandler(self.webView!, completionHandler: completionHandler)
|
||||
} else {
|
||||
UIApplication.sharedApplication().openURL(url)
|
||||
}
|
||||
@ -154,8 +161,12 @@ public class OAuth2Module: AuthzModule {
|
||||
let accessToken: String = unwrappedResponse["access_token"] as! String
|
||||
let expiration = unwrappedResponse["expires_in"] as! NSNumber
|
||||
let exp: String = expiration.stringValue
|
||||
|
||||
self.oauth2Session.saveAccessToken(accessToken, refreshToken: unwrappedRefreshToken, accessTokenExpiration: exp, refreshTokenExpiration: nil)
|
||||
var refreshToken = unwrappedRefreshToken
|
||||
if let newRefreshToken = unwrappedResponse["refresh_token"] as? String {
|
||||
refreshToken = newRefreshToken
|
||||
}
|
||||
|
||||
self.oauth2Session.saveAccessToken(accessToken, refreshToken: refreshToken, accessTokenExpiration: exp, refreshTokenExpiration: nil)
|
||||
|
||||
completionHandler(unwrappedResponse["access_token"], nil);
|
||||
}
|
||||
@ -171,17 +182,17 @@ public class OAuth2Module: AuthzModule {
|
||||
*/
|
||||
public func exchangeAuthorizationCodeForAccessToken(code: String, completionHandler: (AnyObject?, NSError?) -> Void) {
|
||||
var paramDict: [String: String] = ["code": code, "client_id": config.clientId, "redirect_uri": config.redirectURL, "grant_type":"authorization_code"]
|
||||
|
||||
|
||||
if let unwrapped = config.clientSecret {
|
||||
paramDict["client_secret"] = unwrapped
|
||||
}
|
||||
|
||||
|
||||
http.request(.POST, path: config.accessTokenEndpoint, parameters: paramDict, completionHandler: {(responseObject, error) in
|
||||
if (error != nil) {
|
||||
completionHandler(nil, error)
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
if let unwrappedResponse = responseObject as? [String: AnyObject] {
|
||||
let accessToken: String = unwrappedResponse["access_token"] as! String
|
||||
let refreshToken: String? = unwrappedResponse["refresh_token"] as? String
|
||||
@ -190,7 +201,7 @@ public class OAuth2Module: AuthzModule {
|
||||
// expiration for refresh token is used in Keycloak
|
||||
let expirationRefresh = unwrappedResponse["refresh_expires_in"] as? NSNumber
|
||||
let expRefresh = expirationRefresh?.stringValue
|
||||
|
||||
|
||||
self.oauth2Session.saveAccessToken(accessToken, refreshToken: refreshToken, accessTokenExpiration: exp, refreshTokenExpiration: expRefresh)
|
||||
completionHandler(accessToken, nil)
|
||||
}
|
||||
@ -205,7 +216,7 @@ public class OAuth2Module: AuthzModule {
|
||||
public func requestAccess(completionHandler: (AnyObject?, NSError?) -> Void) {
|
||||
if (self.oauth2Session.accessToken != nil && self.oauth2Session.tokenIsNotExpired()) {
|
||||
// we already have a valid access token, nothing more to be done
|
||||
completionHandler(self.oauth2Session.accessToken!, nil);
|
||||
completionHandler(self.oauth2Session.accessToken!, nil)
|
||||
} else if (self.oauth2Session.refreshToken != nil && self.oauth2Session.refreshTokenIsNotExpired()) {
|
||||
// need to refresh token
|
||||
self.refreshAccessToken(completionHandler)
|
||||
@ -214,16 +225,16 @@ public class OAuth2Module: AuthzModule {
|
||||
self.requestAuthorizationCode(completionHandler)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Gateway to provide authentication using the Authorization Code Flow with OpenID Connect.
|
||||
|
||||
|
||||
:param: completionHandler A block object to be executed when the request operation finishes.
|
||||
*/
|
||||
public func login(completionHandler: (AnyObject?, OpenIDClaim?, NSError?) -> Void) {
|
||||
|
||||
|
||||
self.requestAccess { (response:AnyObject?, error:NSError?) -> Void in
|
||||
|
||||
|
||||
if (error != nil) {
|
||||
completionHandler(nil, nil, error)
|
||||
return
|
||||
@ -249,11 +260,11 @@ public class OAuth2Module: AuthzModule {
|
||||
completionHandler(nil, nil, NSError(domain: "OAuth2Module", code: 0, userInfo: ["OpenID Connect" : "No UserInfo endpoint available in config"]))
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Request to revoke access.
|
||||
|
||||
@ -262,9 +273,9 @@ public class OAuth2Module: AuthzModule {
|
||||
public func revokeAccess(completionHandler: (AnyObject?, NSError?) -> Void) {
|
||||
// return if not yet initialized
|
||||
if (self.oauth2Session.accessToken == nil) {
|
||||
return;
|
||||
return
|
||||
}
|
||||
let paramDict:[String:String] = ["token":self.oauth2Session.accessToken!]
|
||||
let paramDict: [String:String] = ["token":self.oauth2Session.accessToken!]
|
||||
|
||||
http.request(.POST, path: config.revokeTokenEndpoint!, parameters: paramDict, completionHandler: { (response, error) in
|
||||
if (error != nil) {
|
||||
@ -324,11 +335,11 @@ public class OAuth2Module: AuthzModule {
|
||||
var parameters = [String: String]()
|
||||
if (queryString != nil) {
|
||||
let parameterScanner: NSScanner = NSScanner(string: queryString!)
|
||||
var name:NSString? = nil
|
||||
var value:NSString? = nil
|
||||
var name: NSString? = nil
|
||||
var value: NSString? = nil
|
||||
|
||||
while (parameterScanner.atEnd != true) {
|
||||
name = nil;
|
||||
name = nil
|
||||
parameterScanner.scanUpToString("=", intoString: &name)
|
||||
parameterScanner.scanString("=", intoString:nil)
|
||||
|
||||
@ -342,7 +353,7 @@ public class OAuth2Module: AuthzModule {
|
||||
}
|
||||
}
|
||||
|
||||
return parameters;
|
||||
return parameters
|
||||
}
|
||||
|
||||
deinit {
|
||||
@ -353,7 +364,7 @@ public class OAuth2Module: AuthzModule {
|
||||
// clear all observers
|
||||
if (applicationLaunchNotificationObserver != nil) {
|
||||
NSNotificationCenter.defaultCenter().removeObserver(applicationLaunchNotificationObserver!)
|
||||
self.applicationLaunchNotificationObserver = nil;
|
||||
self.applicationLaunchNotificationObserver = nil
|
||||
}
|
||||
|
||||
if (applicationDidBecomeActiveNotificationObserver != nil) {
|
||||
|
||||
@ -20,52 +20,52 @@ import Foundation
|
||||
The protocol that an OAuth2 Session modules must adhere to and represent storage of oauth specific metadata. See TrustedPersistantOAuth2Session and UntrustedMemoryOAuth2Session as example implementations
|
||||
*/
|
||||
public protocol OAuth2Session {
|
||||
|
||||
|
||||
/**
|
||||
The account id.
|
||||
*/
|
||||
var accountId: String {get}
|
||||
|
||||
|
||||
/**
|
||||
The access token which expires.
|
||||
*/
|
||||
var accessToken: String? {get set}
|
||||
|
||||
|
||||
/**
|
||||
The access token's expiration date.
|
||||
*/
|
||||
var accessTokenExpirationDate: NSDate? {get set}
|
||||
|
||||
|
||||
/**
|
||||
The refresh token's expiration date.
|
||||
*/
|
||||
var refreshTokenExpirationDate: NSDate? {get set}
|
||||
|
||||
|
||||
/**
|
||||
The refresh tokens. This toke does not expire and should be used to renew access token when expired.
|
||||
*/
|
||||
var refreshToken: String? {get set}
|
||||
|
||||
|
||||
/**
|
||||
Check validity of accessToken. return true if still valid, false when expired.
|
||||
*/
|
||||
func tokenIsNotExpired() -> Bool
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
Check validity of refreshToken. return true if still valid, false when expired.
|
||||
*/
|
||||
func refreshTokenIsNotExpired() -> Bool
|
||||
|
||||
|
||||
/**
|
||||
Clears any tokens storage
|
||||
*/
|
||||
func clearTokens()
|
||||
|
||||
|
||||
/**
|
||||
Save tokens information. Saving tokens allow you to refresh accesstoken transparently for the user without prompting
|
||||
for grant access.
|
||||
|
||||
|
||||
:param: accessToken the access token.
|
||||
:param: refreshToken the refresh token.
|
||||
:param: accessTokenExpiration the expiration for the access token.
|
||||
|
||||
@ -19,33 +19,33 @@ import Foundation
|
||||
|
||||
import UIKit
|
||||
/**
|
||||
OAuth2WebViewController is a UIViewController to be used when the Oauth2 flow used an embedded view controller
|
||||
OAuth2WebViewController is a UIViewController to be used when the Oauth2 flow used an embedded view controller
|
||||
rather than an external browser approach.
|
||||
*/
|
||||
class OAuth2WebViewController: UIViewController, UIWebViewDelegate {
|
||||
public class OAuth2WebViewController: UIViewController, UIWebViewDelegate {
|
||||
/// Login URL for OAuth.
|
||||
var targetURL : NSURL = NSURL()
|
||||
var targetURL: NSURL = NSURL()
|
||||
/// WebView intance used to load login page.
|
||||
var webView : UIWebView = UIWebView()
|
||||
|
||||
/// Overrride of viewDidLoad to load the login page.
|
||||
override internal func viewDidLoad() {
|
||||
var webView: UIWebView = UIWebView()
|
||||
|
||||
/// Override of viewDidLoad to load the login page.
|
||||
override public func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
webView.frame = UIScreen.mainScreen().applicationFrame
|
||||
webView.delegate = self
|
||||
self.view.addSubview(webView)
|
||||
loadAddressURL()
|
||||
}
|
||||
|
||||
override func viewDidLayoutSubviews() {
|
||||
|
||||
override public func viewDidLayoutSubviews() {
|
||||
super.viewDidLayoutSubviews()
|
||||
self.webView.frame = self.view.bounds
|
||||
}
|
||||
|
||||
override internal func didReceiveMemoryWarning() {
|
||||
|
||||
override public func didReceiveMemoryWarning() {
|
||||
super.didReceiveMemoryWarning()
|
||||
}
|
||||
|
||||
|
||||
func loadAddressURL() {
|
||||
let req = NSURLRequest(URL: targetURL)
|
||||
webView.loadRequest(req)
|
||||
|
||||
10
Pods/AeroGearOAuth2/AeroGearOAuth2/OpenIDClaim.swift
generated
10
Pods/AeroGearOAuth2/AeroGearOAuth2/OpenIDClaim.swift
generated
@ -70,9 +70,9 @@ public class OpenIDClaim: CustomStringConvertible {
|
||||
"nickname: \(nickname)\npreferredUsername: \(preferredUsername)\nprofile: \(profile)\npicture: \(picture)\n" +
|
||||
"website: \(website)\nemail: \(email)\nemailVerified: \(emailVerified)\ngender: \(gender)\nbirthdate: \(birthdate)\n"
|
||||
}
|
||||
|
||||
|
||||
/// Initialize an OpenIDClaim from a dictionary. all information not available are optional values set to .None.
|
||||
public init(fromDict:[String: AnyObject]) {
|
||||
public init(fromDict: [String: AnyObject]) {
|
||||
sub = fromDict["sub"] as? String
|
||||
name = fromDict["name"] as? String
|
||||
givenName = fromDict["given_name"] as? String
|
||||
@ -97,13 +97,11 @@ public class OpenIDClaim: CustomStringConvertible {
|
||||
}
|
||||
/// Facebook specific claims.
|
||||
public class FacebookOpenIDClaim: OpenIDClaim {
|
||||
|
||||
override init(fromDict:[String: AnyObject]) {
|
||||
|
||||
override init(fromDict: [String: AnyObject]) {
|
||||
super.init(fromDict: fromDict)
|
||||
givenName = fromDict["first_name"] as? String
|
||||
familyName = fromDict["last_name"] as? String
|
||||
zoneinfo = fromDict["timezone"] as? String
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -38,20 +38,20 @@ public enum TokenType: String {
|
||||
A handy Keychain wrapper. It saves your OAuth2 tokens using WhenPasscodeSet ACL.
|
||||
*/
|
||||
public class KeychainWrap {
|
||||
|
||||
|
||||
/**
|
||||
The service id. By default set to apple bundle id.
|
||||
*/
|
||||
public var serviceIdentifier: String
|
||||
|
||||
|
||||
/**
|
||||
The group id is Keychain access group which is used for sharing keychain content accross multiple apps issued from same developer. By default there is no access group.
|
||||
*/
|
||||
public var groupId: String?
|
||||
|
||||
|
||||
/**
|
||||
Initialize KeychainWrapper setting default values.
|
||||
|
||||
|
||||
:param: serviceId unique service, defulated to bundleId
|
||||
:param: groupId used for SSO between app issued from same developer certificate.
|
||||
*/
|
||||
@ -63,10 +63,10 @@ public class KeychainWrap {
|
||||
}
|
||||
self.groupId = groupId
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Save tokens information in Keychain.
|
||||
|
||||
|
||||
:param: key usually use accountId for oauth2 module, any unique string.
|
||||
:param: tokenType type of token: access, refresh.
|
||||
:param: value string value of the token.
|
||||
@ -76,7 +76,7 @@ public class KeychainWrap {
|
||||
if (dataFromString == nil) {
|
||||
return false
|
||||
}
|
||||
|
||||
|
||||
// Instantiate a new default keychain query
|
||||
let keychainQuery = NSMutableDictionary()
|
||||
if let groupId = self.groupId {
|
||||
@ -85,17 +85,17 @@ public class KeychainWrap {
|
||||
keychainQuery[kSecClass as String] = kSecClassGenericPassword
|
||||
keychainQuery[kSecAttrService as String] = self.serviceIdentifier
|
||||
keychainQuery[kSecAttrAccount as String] = key + "_" + tokenType.rawValue
|
||||
keychainQuery[kSecAttrAccessible as String] = kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly
|
||||
keychainQuery[kSecAttrAccessible as String] = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
|
||||
|
||||
// Search for the keychain items
|
||||
let statusSearch: OSStatus = SecItemCopyMatching(keychainQuery, nil)
|
||||
|
||||
|
||||
// if found update
|
||||
if (statusSearch == errSecSuccess) {
|
||||
if (dataFromString != nil) {
|
||||
let attributesToUpdate = NSMutableDictionary()
|
||||
attributesToUpdate[kSecValueData as String] = dataFromString!
|
||||
|
||||
|
||||
let statusUpdate: OSStatus = SecItemUpdate(keychainQuery, attributesToUpdate)
|
||||
if (statusUpdate != errSecSuccess) {
|
||||
print("tokens not updated")
|
||||
@ -114,13 +114,34 @@ public class KeychainWrap {
|
||||
} else { // error case
|
||||
return false
|
||||
}
|
||||
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Delete a specific token in Keychain.
|
||||
|
||||
:param: key usually use accountId for oauth2 module, any unique string.
|
||||
:param: tokenType type of token.
|
||||
*/
|
||||
public func delete(key: String, tokenType: TokenType) -> Bool {
|
||||
let keychainQuery = NSMutableDictionary()
|
||||
if let groupId = self.groupId {
|
||||
keychainQuery[kSecAttrAccessGroup as String] = groupId
|
||||
}
|
||||
keychainQuery[kSecClass as String] = kSecClassGenericPassword
|
||||
keychainQuery[kSecAttrService as String] = self.serviceIdentifier
|
||||
keychainQuery[kSecAttrAccount as String] = key + "_" + tokenType.rawValue
|
||||
keychainQuery[kSecAttrAccessible as String] = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
|
||||
|
||||
let statusDelete: OSStatus = SecItemDelete(keychainQuery)
|
||||
|
||||
return statusDelete == noErr
|
||||
}
|
||||
|
||||
/**
|
||||
Read tokens information in Keychain. If the entry is not found return nil.
|
||||
|
||||
|
||||
:param: userAccount key of the keychain entry, usually accountId for oauth2 module.
|
||||
:param: tokenType type of token: access, refresh.
|
||||
*/
|
||||
@ -133,9 +154,8 @@ public class KeychainWrap {
|
||||
keychainQuery[kSecAttrService as String] = self.serviceIdentifier
|
||||
keychainQuery[kSecAttrAccount as String] = userAccount + "_" + tokenType.rawValue
|
||||
keychainQuery[kSecReturnData as String] = true
|
||||
keychainQuery[kSecAttrAccessible as String] = kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly
|
||||
keychainQuery[kSecAttrAccessible as String] = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
|
||||
|
||||
|
||||
var dataTypeRef: Unmanaged<AnyObject>?
|
||||
// Search for the keychain items
|
||||
let status: OSStatus = withUnsafeMutablePointer(&dataTypeRef) { SecItemCopyMatching(keychainQuery as CFDictionaryRef, UnsafeMutablePointer($0)) }
|
||||
@ -147,21 +167,21 @@ public class KeychainWrap {
|
||||
print("Error attempting to retrieve \(tokenType.rawValue) with error code \(status) ")
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
let opaque = dataTypeRef?.toOpaque()
|
||||
var contentsOfKeychain: String?
|
||||
if let op = opaque {
|
||||
let retrievedData = Unmanaged<NSData>.fromOpaque(op).takeUnretainedValue()
|
||||
|
||||
|
||||
// Convert the data retrieved from the keychain into a string
|
||||
contentsOfKeychain = NSString(data: retrievedData, encoding: NSUTF8StringEncoding) as? String
|
||||
} else {
|
||||
print("Nothing was retrieved from the keychain. Status code \(status)")
|
||||
}
|
||||
|
||||
|
||||
return contentsOfKeychain
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Clear all keychain entries. Note that Keychain can only be cleared progemmatically.
|
||||
*/
|
||||
@ -172,11 +192,11 @@ public class KeychainWrap {
|
||||
self.deleteAllKeysForSecClass(kSecClassKey) &&
|
||||
self.deleteAllKeysForSecClass(kSecClassIdentity)
|
||||
}
|
||||
|
||||
|
||||
func deleteAllKeysForSecClass(secClass: CFTypeRef) -> Bool {
|
||||
let keychainQuery = NSMutableDictionary()
|
||||
keychainQuery[kSecClass as String] = secClass
|
||||
let result:OSStatus = SecItemDelete(keychainQuery)
|
||||
let result: OSStatus = SecItemDelete(keychainQuery)
|
||||
if (result == errSecSuccess) {
|
||||
return true
|
||||
} else {
|
||||
@ -189,19 +209,19 @@ public class KeychainWrap {
|
||||
An OAuth2Session implementation to store OAuth2 metadata using the Keychain.
|
||||
*/
|
||||
public class TrustedPersistantOAuth2Session: OAuth2Session {
|
||||
|
||||
|
||||
/**
|
||||
The account id.
|
||||
*/
|
||||
public var accountId: String
|
||||
|
||||
|
||||
/**
|
||||
The access token's expiration date.
|
||||
*/
|
||||
public var accessTokenExpirationDate: NSDate? {
|
||||
get {
|
||||
let dateAsString = self.keychain.read(self.accountId, tokenType: .ExpirationDate)
|
||||
if let unwrappedDate:String = dateAsString {
|
||||
if let unwrappedDate: String = dateAsString {
|
||||
return NSDate(dateString: unwrappedDate)
|
||||
} else {
|
||||
return nil
|
||||
@ -210,10 +230,12 @@ public class TrustedPersistantOAuth2Session: OAuth2Session {
|
||||
set(value) {
|
||||
if let unwrappedValue = value {
|
||||
self.keychain.save(self.accountId, tokenType: .ExpirationDate, value: unwrappedValue.toString())
|
||||
} else {
|
||||
self.keychain.delete(self.accountId, tokenType: .ExpirationDate)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
The access token. The information is read securely from Keychain.
|
||||
*/
|
||||
@ -224,10 +246,12 @@ public class TrustedPersistantOAuth2Session: OAuth2Session {
|
||||
set(value) {
|
||||
if let unwrappedValue = value {
|
||||
self.keychain.save(self.accountId, tokenType: .AccessToken, value: unwrappedValue)
|
||||
} else {
|
||||
self.keychain.delete(self.accountId, tokenType: .AccessToken)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
The refresh token. The information is read securely from Keychain.
|
||||
*/
|
||||
@ -238,17 +262,19 @@ public class TrustedPersistantOAuth2Session: OAuth2Session {
|
||||
set(value) {
|
||||
if let unwrappedValue = value {
|
||||
self.keychain.save(self.accountId, tokenType: .RefreshToken, value: unwrappedValue)
|
||||
} else {
|
||||
self.keychain.delete(self.accountId, tokenType: .RefreshToken)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
The refresh token's expiration date.
|
||||
*/
|
||||
public var refreshTokenExpirationDate: NSDate? {
|
||||
get {
|
||||
let dateAsString = self.keychain.read(self.accountId, tokenType: .RefreshExpirationDate)
|
||||
if let unwrappedDate:String = dateAsString {
|
||||
if let unwrappedDate: String = dateAsString {
|
||||
return NSDate(dateString: unwrappedDate)
|
||||
} else {
|
||||
return nil
|
||||
@ -257,33 +283,35 @@ public class TrustedPersistantOAuth2Session: OAuth2Session {
|
||||
set(value) {
|
||||
if let unwrappedValue = value {
|
||||
_ = self.keychain.save(self.accountId, tokenType: .RefreshExpirationDate, value: unwrappedValue.toString())
|
||||
} else {
|
||||
self.keychain.delete(self.accountId, tokenType: .RefreshExpirationDate)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private let keychain: KeychainWrap
|
||||
|
||||
|
||||
/**
|
||||
Check validity of accessToken. return true if still valid, false when expired.
|
||||
*/
|
||||
public func tokenIsNotExpired() -> Bool {
|
||||
return self.accessTokenExpirationDate != nil ? (self.accessTokenExpirationDate!.timeIntervalSinceDate(NSDate()) > 0) : true
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Check validity of refreshToken. return true if still valid, false when expired.
|
||||
*/
|
||||
public func refreshTokenIsNotExpired() -> Bool {
|
||||
return self.refreshTokenExpirationDate != nil ? (self.refreshTokenExpirationDate!.timeIntervalSinceDate(NSDate()) > 0) : true
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Save in memory tokens information. Saving tokens allow you to refresh accesstoken transparently for the user without prompting for grant access.
|
||||
*/
|
||||
public func saveAccessToken(accessToken: String?, refreshToken: String?, accessTokenExpiration: String?, refreshTokenExpiration: String?) {
|
||||
self.accessToken = accessToken
|
||||
self.refreshToken = refreshToken
|
||||
|
||||
|
||||
let now = NSDate()
|
||||
if let inter = accessTokenExpiration?.doubleValue {
|
||||
self.accessTokenExpirationDate = now.dateByAddingTimeInterval(inter)
|
||||
@ -292,7 +320,7 @@ public class TrustedPersistantOAuth2Session: OAuth2Session {
|
||||
self.refreshTokenExpirationDate = now.dateByAddingTimeInterval(inter)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Clear all tokens. Method used when doing logout or revoke.
|
||||
*/
|
||||
@ -302,10 +330,10 @@ public class TrustedPersistantOAuth2Session: OAuth2Session {
|
||||
self.accessTokenExpirationDate = nil
|
||||
self.refreshTokenExpirationDate = nil
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Initialize TrustedPersistantOAuth2Session using account id. Account id is the service id used for keychain storage.
|
||||
|
||||
|
||||
:param: accountId uniqueId to identify the oauth2module
|
||||
:param: groupId used for SSO between app issued from same developer certificate.
|
||||
:param: accessToken optional parameter to initilaize the storage with initial values
|
||||
@ -319,15 +347,27 @@ public class TrustedPersistantOAuth2Session: OAuth2Session {
|
||||
accessTokenExpirationDate: NSDate? = nil,
|
||||
refreshToken: String? = nil,
|
||||
refreshTokenExpirationDate: NSDate? = nil) {
|
||||
self.accountId = accountId
|
||||
if groupId != nil {
|
||||
self.keychain = KeychainWrap(serviceId: groupId, groupId: groupId)
|
||||
} else {
|
||||
self.keychain = KeychainWrap()
|
||||
}
|
||||
self.accessToken = accessToken
|
||||
self.refreshToken = refreshToken
|
||||
self.accessTokenExpirationDate = accessTokenExpirationDate
|
||||
self.refreshTokenExpirationDate = refreshTokenExpirationDate
|
||||
self.accountId = accountId
|
||||
if groupId != nil {
|
||||
self.keychain = KeychainWrap(serviceId: groupId, groupId: groupId)
|
||||
} else {
|
||||
self.keychain = KeychainWrap()
|
||||
}
|
||||
|
||||
if accessToken != nil {
|
||||
self.accessToken = accessToken
|
||||
}
|
||||
|
||||
if refreshToken != nil {
|
||||
self.refreshToken = refreshToken
|
||||
}
|
||||
|
||||
if accessTokenExpirationDate != nil {
|
||||
self.accessTokenExpirationDate = accessTokenExpirationDate
|
||||
}
|
||||
|
||||
if refreshToken != nil {
|
||||
self.refreshTokenExpirationDate = refreshTokenExpirationDate
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -26,27 +26,27 @@ extension String {
|
||||
An OAuth2Session implementation the stores OAuth2 metadata in-memory
|
||||
*/
|
||||
public class UntrustedMemoryOAuth2Session: OAuth2Session {
|
||||
|
||||
|
||||
/**
|
||||
The account id.
|
||||
*/
|
||||
public var accountId: String
|
||||
|
||||
|
||||
/**
|
||||
The access token which expires.
|
||||
*/
|
||||
public var accessToken: String?
|
||||
|
||||
|
||||
/**
|
||||
The access token's expiration date.
|
||||
*/
|
||||
public var accessTokenExpirationDate: NSDate?
|
||||
|
||||
|
||||
/**
|
||||
The refresh tokens. This toke does not expire and should be used to renew access token when expired.
|
||||
*/
|
||||
public var refreshToken: String?
|
||||
|
||||
|
||||
/**
|
||||
The refresh token's expiration date.
|
||||
*/
|
||||
@ -58,14 +58,14 @@ public class UntrustedMemoryOAuth2Session: OAuth2Session {
|
||||
public func tokenIsNotExpired() -> Bool {
|
||||
return self.accessTokenExpirationDate != nil ? (self.accessTokenExpirationDate!.timeIntervalSinceDate(NSDate()) > 0) : true
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Check validity of refreshToken. return true if still valid, false when expired.
|
||||
*/
|
||||
public func refreshTokenIsNotExpired() -> Bool {
|
||||
return self.refreshTokenExpirationDate != nil ? (self.refreshTokenExpirationDate!.timeIntervalSinceDate(NSDate()) > 0) : true
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Save in memory tokens information. Saving tokens allow you to refresh accesstoken transparently for the user without prompting for grant access.
|
||||
*/
|
||||
@ -80,7 +80,7 @@ public class UntrustedMemoryOAuth2Session: OAuth2Session {
|
||||
self.refreshTokenExpirationDate = now.dateByAddingTimeInterval(interRefresh)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Clear all tokens. Method used when doing logout or revoke.
|
||||
*/
|
||||
@ -90,10 +90,10 @@ public class UntrustedMemoryOAuth2Session: OAuth2Session {
|
||||
self.accessTokenExpirationDate = nil
|
||||
self.refreshTokenExpirationDate = nil
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Initialize session using account id.
|
||||
|
||||
Initialize session using account id.
|
||||
|
||||
:param: accountId uniqueId to identify the oauth2module.
|
||||
:param: accessToken optional parameter to initilaize the storage with initial values.
|
||||
:param: accessTokenExpirationDate optional parameter to initilaize the storage with initial values.
|
||||
|
||||
14
Pods/AeroGearOAuth2/README.md
generated
14
Pods/AeroGearOAuth2/README.md
generated
@ -1,6 +1,6 @@
|
||||
# aerogear-ios-oauth2 [](https://travis-ci.org/aerogear/aerogear-ios-oauth2)
|
||||
|
||||
> This module currently build with Xcode 7 and supports iOS8, iOS9.
|
||||
> This module currently build with Xcode 7 / Xcode 8 and supports iOS8, iOS9, iOS10.
|
||||
|
||||
OAuth2 Client based on [aerogear-ios-http](https://github.com/aerogear/aerogear-ios-http).
|
||||
Taking care of:
|
||||
@ -11,7 +11,7 @@ Taking care of:
|
||||
* (implicit or explicit) refresh tokens,
|
||||
* revoke tokens,
|
||||
* permanent secure storage,
|
||||
* adaptable to OAuth2 specific providers. Existing extensions: Google, Facebook, [Keycloak 1.5.0.Final](http://keycloak.jboss.org/) etc...
|
||||
* adaptable to OAuth2 specific providers. Existing extensions: Google, Facebook, [Keycloak 1.9.3.Final](http://keycloak.jboss.org/) etc...
|
||||
* openID Connect login
|
||||
|
||||
100% Swift 2.0.
|
||||
@ -29,12 +29,12 @@ Taking care of:
|
||||
|
||||
#### OAuth2 grant for GET with a predefined config like Facebook
|
||||
```swift
|
||||
var Http = Http() // [1]
|
||||
let http = Http() // [1]
|
||||
let facebookConfig = FacebookConfig( // [2]
|
||||
clientId: "YYY",
|
||||
clientSecret: "XXX",
|
||||
scopes:["photo_upload, publish_actions"])
|
||||
var oauth2Module = AccountManager.addFacebookAccount(facebookConfig) // [3]
|
||||
let oauth2Module = AccountManager.addFacebookAccount(facebookConfig) // [3]
|
||||
http.authzModule = oauth2Module // [4]
|
||||
http.request(.GET, path: "/get", completionHandler: {(response, error) in // [5]
|
||||
// handle response
|
||||
@ -52,13 +52,13 @@ See full description in [aerogear.org](https://aerogear.org/docs/guides/aerogear
|
||||
|
||||
#### OpenID Connect with Keycloak
|
||||
```swift
|
||||
var Http = Http()
|
||||
let http = Http()
|
||||
let keycloakConfig = KeycloakConfig(
|
||||
clientId: "sharedshoot-third-party",
|
||||
host: "http://localhost:8080",
|
||||
realm: "shoot-realm",
|
||||
isOpenIDConnect: true)
|
||||
var oauth2Module = AccountManager.addKeycloakAccount(keycloakConfig)
|
||||
let oauth2Module = AccountManager.addKeycloakAccount(keycloakConfig)
|
||||
http.authzModule = oauth2Module
|
||||
oauth2Module.login {(accessToken: AnyObject?, claims: OpenIDClaim?, error: NSError?) in // [1]
|
||||
// Do your own stuff here
|
||||
@ -127,4 +127,4 @@ Join our [user mailing list](https://lists.jboss.org/mailman/listinfo/aerogear-u
|
||||
|
||||
## Found a bug?
|
||||
|
||||
If you found a bug please create a ticket for us on [Jira](https://issues.jboss.org/browse/AGIOS) with some steps to reproduce it.
|
||||
If you found a bug please create a ticket for us on [Jira](https://issues.jboss.org/browse/AGIOS) with some steps to reproduce it.
|
||||
|
||||
@ -52,7 +52,6 @@ static NSString *const FBSDKAppLinkInboundEvent = @"fb_al_inbound";
|
||||
FBSDKBridgeAPIRequest *_pendingRequest;
|
||||
FBSDKBridgeAPICallbackBlock _pendingRequestCompletionBlock;
|
||||
id<FBSDKURLOpening> _pendingURLOpen;
|
||||
FBSDKDeferredAppInviteHandler _organicDeeplinkHandler;
|
||||
#endif
|
||||
BOOL _expectingBackground;
|
||||
UIViewController *_safariViewController;
|
||||
@ -153,10 +152,12 @@ static NSString *const FBSDKAppLinkInboundEvent = @"fb_al_inbound";
|
||||
queryParameters:sanitizedParams
|
||||
error:nil];
|
||||
}
|
||||
// copy the _organicDeeplinkHandler here because it can get cleared in FBSDKOrganicDeeplinkHelper
|
||||
// so that we avoid bad_exc_access in the dispatch_async below.
|
||||
FBSDKDeferredAppInviteHandler appInviteHandler = [_organicDeeplinkHandler copy];
|
||||
_organicDeeplinkHandler = nil;
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
// Callback handler for organic deeplinking.
|
||||
_organicDeeplinkHandler(sanitizedUrl);
|
||||
_organicDeeplinkHandler = nil;
|
||||
appInviteHandler(sanitizedUrl);
|
||||
});
|
||||
|
||||
return YES;
|
||||
|
||||
@ -44,5 +44,5 @@
|
||||
#import <FBSDKCoreKit/FBSDKDeviceViewControllerBase.h>
|
||||
#endif
|
||||
|
||||
#define FBSDK_VERSION_STRING @"4.14.0"
|
||||
#define FBSDK_VERSION_STRING @"4.15.0"
|
||||
#define FBSDK_TARGET_PLATFORM_VERSION @"v2.7"
|
||||
|
||||
@ -31,7 +31,7 @@
|
||||
#import "FBSDKInternalUtility.h"
|
||||
#import "FBSDKLogger.h"
|
||||
#import "FBSDKSettings+Internal.h"
|
||||
#import "FBSDKURLConnection.h"
|
||||
#import "FBSDKURLSessionTask.h"
|
||||
|
||||
NSString *const FBSDKNonJSONResponseProperty = @"FACEBOOK_NON_JSON_RESULT";
|
||||
|
||||
@ -76,17 +76,18 @@ typedef NS_ENUM(NSUInteger, FBSDKGraphRequestConnectionState)
|
||||
// Private properties and methods
|
||||
|
||||
@interface FBSDKGraphRequestConnection () <
|
||||
FBSDKURLConnectionDelegate
|
||||
NSURLSessionDataDelegate
|
||||
#if !TARGET_OS_TV
|
||||
, FBSDKGraphErrorRecoveryProcessorDelegate
|
||||
#endif
|
||||
>
|
||||
|
||||
@property (nonatomic, retain) FBSDKURLConnection *connection;
|
||||
@property (nonatomic, strong) NSURLSession *session;
|
||||
@property (nonatomic, strong) FBSDKURLSessionTask *task;
|
||||
@property (nonatomic, retain) NSMutableArray *requests;
|
||||
@property (nonatomic) FBSDKGraphRequestConnectionState state;
|
||||
@property (nonatomic, retain) FBSDKLogger *logger;
|
||||
@property (nonatomic) unsigned long requestStartTime;
|
||||
@property (nonatomic, assign) FBSDKGraphRequestConnectionState state;
|
||||
@property (nonatomic, strong) FBSDKLogger *logger;
|
||||
@property (nonatomic, assign) unsigned long requestStartTime;
|
||||
|
||||
@end
|
||||
|
||||
@ -117,8 +118,7 @@ FBSDKURLConnectionDelegate
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
_connection.delegate = nil;
|
||||
[_connection cancel];
|
||||
[_session invalidateAndCancel];
|
||||
}
|
||||
|
||||
#pragma mark - Public
|
||||
@ -163,8 +163,8 @@ FBSDKURLConnectionDelegate
|
||||
- (void)cancel
|
||||
{
|
||||
self.state = kStateCancelled;
|
||||
[self.connection cancel];
|
||||
self.connection = nil;
|
||||
[self.task cancel];
|
||||
[self cleanUpSession];
|
||||
}
|
||||
|
||||
- (void)overrideVersionPartWith:(NSString *)version
|
||||
@ -196,24 +196,22 @@ FBSDKURLConnectionDelegate
|
||||
[self logRequest:request bodyLength:0 bodyLogger:nil attachmentLogger:nil];
|
||||
_requestStartTime = [FBSDKInternalUtility currentTimeInMilliseconds];
|
||||
|
||||
FBSDKURLConnectionHandler handler =
|
||||
^(FBSDKURLConnection *connection,
|
||||
NSError *error,
|
||||
NSURLResponse *response,
|
||||
NSData *responseData) {
|
||||
[self completeFBSDKURLConnectionWithResponse:response
|
||||
data:responseData
|
||||
networkError:error];
|
||||
FBSDKURLSessionTaskHandler handler = ^(NSError *error,
|
||||
NSURLResponse *response,
|
||||
NSData *responseData) {
|
||||
[self completeFBSDKURLSessionWithResponse:response
|
||||
data:responseData
|
||||
networkError:error];
|
||||
};
|
||||
|
||||
FBSDKURLConnection *connection = [[FBSDKURLConnection alloc] initWithRequest:request
|
||||
completionHandler:handler];
|
||||
if (_delegateQueue) {
|
||||
[connection setDelegateQueue:_delegateQueue];
|
||||
if (!self.session) {
|
||||
self.session = [self defaultSession];
|
||||
}
|
||||
connection.delegate = self;
|
||||
self.connection = connection;
|
||||
[connection start];
|
||||
|
||||
self.task = [[FBSDKURLSessionTask alloc] initWithRequest:request
|
||||
fromSession:self.session
|
||||
completionHandler:handler];
|
||||
[self.task start];
|
||||
|
||||
id<FBSDKGraphRequestConnectionDelegate> delegate = self.delegate;
|
||||
if ([delegate respondsToSelector:@selector(requestConnectionWillBeginLoading:)]) {
|
||||
@ -503,9 +501,9 @@ FBSDKURLConnectionDelegate
|
||||
|
||||
#pragma mark - Private methods (response parsing)
|
||||
|
||||
- (void)completeFBSDKURLConnectionWithResponse:(NSURLResponse *)response
|
||||
data:(NSData *)data
|
||||
networkError:(NSError *)error
|
||||
- (void)completeFBSDKURLSessionWithResponse:(NSURLResponse *)response
|
||||
data:(NSData *)data
|
||||
networkError:(NSError *)error
|
||||
{
|
||||
if (self.state != kStateCancelled) {
|
||||
NSAssert(self.state == kStateStarted,
|
||||
@ -526,7 +524,7 @@ FBSDKURLConnectionDelegate
|
||||
if (!error && [response.MIMEType hasPrefix:@"image"]) {
|
||||
error = [FBSDKError errorWithCode:FBSDKGraphRequestNonTextMimeTypeReturnedErrorCode
|
||||
message:@"Response is a non-text MIME type; endpoints that return images and other "
|
||||
@"binary data should be fetched using NSURLRequest and NSURLConnection"];
|
||||
@"binary data should be fetched using NSURLRequest and NSURLSession"];
|
||||
} else {
|
||||
results = [self parseJSONResponse:data
|
||||
error:&error
|
||||
@ -560,7 +558,7 @@ FBSDKURLConnectionDelegate
|
||||
|
||||
[self completeWithResults:results networkError:error];
|
||||
|
||||
self.connection = nil;
|
||||
[self cleanUpSession];
|
||||
}
|
||||
|
||||
//
|
||||
@ -611,7 +609,7 @@ FBSDKURLConnectionDelegate
|
||||
[results addObject:@{
|
||||
@"code":@(statusCode),
|
||||
@"body":response
|
||||
}];
|
||||
}];
|
||||
} else if ([response isKindOfClass:[NSArray class]]) {
|
||||
// response is the array of responses, but the body element of each needs
|
||||
// to be decoded from JSON.
|
||||
@ -640,7 +638,7 @@ FBSDKURLConnectionDelegate
|
||||
NSDictionary *result = @{
|
||||
@"code":@(statusCode),
|
||||
@"body":response
|
||||
};
|
||||
};
|
||||
|
||||
for (NSUInteger resultIndex = 0, resultCount = self.requests.count; resultIndex < resultCount; ++resultIndex) {
|
||||
[results addObject:result];
|
||||
@ -788,7 +786,7 @@ FBSDKURLConnectionDelegate
|
||||
}
|
||||
}
|
||||
#endif
|
||||
// this is already on the queue since we are currently in the NSURLConnection callback.
|
||||
// this is already on the queue since we are currently in the NSURLSession callback.
|
||||
finishAndInvokeCompletionHandler();
|
||||
}
|
||||
|
||||
@ -954,27 +952,35 @@ FBSDKURLConnectionDelegate
|
||||
return agent;
|
||||
}
|
||||
|
||||
- (void)setConnection:(FBSDKURLConnection *)connection
|
||||
- (NSURLSession *)defaultSession
|
||||
{
|
||||
if (_connection != connection) {
|
||||
_connection.delegate = nil;
|
||||
_connection = connection;
|
||||
}
|
||||
NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
|
||||
return [NSURLSession sessionWithConfiguration:config
|
||||
delegate:self
|
||||
delegateQueue:_delegateQueue];
|
||||
}
|
||||
|
||||
#pragma mark - FBSDKURLConnectionDelegate
|
||||
- (void)cleanUpSession
|
||||
{
|
||||
[self.session invalidateAndCancel];
|
||||
self.session = nil;
|
||||
}
|
||||
|
||||
- (void)facebookURLConnection:(FBSDKURLConnection *)connection
|
||||
didSendBodyData:(NSInteger)bytesWritten
|
||||
totalBytesWritten:(NSInteger)totalBytesWritten
|
||||
totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite {
|
||||
id<FBSDKGraphRequestConnectionDelegate> delegate = [self delegate];
|
||||
#pragma mark - NSURLSessionDataDelegate
|
||||
|
||||
- (void)URLSession:(NSURLSession *)session
|
||||
task:(NSURLSessionTask *)task
|
||||
didSendBodyData:(int64_t)bytesSent
|
||||
totalBytesSent:(int64_t)totalBytesSent
|
||||
totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend
|
||||
{
|
||||
id<FBSDKGraphRequestConnectionDelegate> delegate = self.delegate;
|
||||
|
||||
if ([delegate respondsToSelector:@selector(requestConnection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite:)]) {
|
||||
[delegate requestConnection:self
|
||||
didSendBodyData:bytesWritten
|
||||
totalBytesWritten:totalBytesWritten
|
||||
totalBytesExpectedToWrite:totalBytesExpectedToWrite];
|
||||
didSendBodyData:(NSUInteger)bytesSent
|
||||
totalBytesWritten:(NSUInteger)totalBytesSent
|
||||
totalBytesExpectedToWrite:(NSUInteger)totalBytesExpectedToSend];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -51,13 +51,6 @@ SFSafariViewControllerDelegate
|
||||
return NO;
|
||||
}
|
||||
|
||||
_safariWindow = [[UIWindow alloc] initWithFrame:[[[[UIApplication sharedApplication] delegate] window] bounds]];
|
||||
|
||||
_safariWindow.windowLevel = UIWindowLevelNormal - 1;
|
||||
|
||||
_safariWindow.rootViewController = [[UIViewController alloc] init];;
|
||||
[_safariWindow setHidden:NO];
|
||||
_safariViewController = [[SFSafariViewControllerClass alloc] initWithURL: [self constructDeeplinkRetrievalUrl]];
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[FBSDKApplicationDelegate sharedInstance].organicDeeplinkHandler = handler;
|
||||
[self presentSafariViewController];
|
||||
@ -69,7 +62,6 @@ SFSafariViewControllerDelegate
|
||||
[self cleanUpSafariViewController];
|
||||
[FBSDKApplicationDelegate sharedInstance].organicDeeplinkHandler = nil;
|
||||
_handler(nil);
|
||||
|
||||
}
|
||||
});
|
||||
});
|
||||
@ -79,29 +71,27 @@ SFSafariViewControllerDelegate
|
||||
|
||||
- (void)presentSafariViewController
|
||||
{
|
||||
Class SFSafariViewControllerClass = fbsdkdfl_SFSafariViewControllerClass();
|
||||
_safariViewController = [[SFSafariViewControllerClass alloc] initWithURL: [self constructDeeplinkRetrievalUrl]];
|
||||
_safariViewController.view.userInteractionEnabled = NO;
|
||||
_safariViewController.view.alpha = 0;
|
||||
[_safariWindow.rootViewController addChildViewController:_safariViewController];
|
||||
[_safariWindow.rootViewController.view addSubview:_safariViewController.view];
|
||||
[_safariViewController performSelector:@selector(setDelegate:) withObject:self];
|
||||
[_safariViewController didMoveToParentViewController:_safariWindow.rootViewController];
|
||||
_safariViewController.view.frame = CGRectZero;
|
||||
return;
|
||||
|
||||
_safariWindow = [[UIWindow alloc] initWithFrame:CGRectMake(0, 0, 1, 1)];
|
||||
_safariWindow.windowLevel -= 1000;
|
||||
_safariWindow.rootViewController = _safariViewController;
|
||||
_safariWindow.hidden = NO;
|
||||
[_safariWindow makeKeyAndVisible];
|
||||
}
|
||||
|
||||
- (void)cleanUpSafariViewController
|
||||
{
|
||||
if(_safariViewController)
|
||||
if (_safariViewController)
|
||||
{
|
||||
[_safariViewController performSelector:@selector(setDelegate:) withObject:nil];
|
||||
[_safariViewController willMoveToParentViewController:nil];
|
||||
[_safariViewController.view removeFromSuperview];
|
||||
[_safariViewController removeFromParentViewController];
|
||||
_safariViewController = nil;
|
||||
_safariWindow.rootViewController = nil;
|
||||
_safariWindow = nil;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
- (NSURL*)constructDeeplinkRetrievalUrl
|
||||
|
||||
@ -92,8 +92,9 @@ typedef NS_ENUM(NSUInteger, FBSDKInternalUtilityVersionShift)
|
||||
static NSBundle *bundle;
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
NSString *stringsBundlePath = [[NSBundle mainBundle] pathForResource:@"FacebookSDKStrings"
|
||||
ofType:@"bundle"];
|
||||
NSString *stringsBundlePath = [[NSBundle bundleForClass:[FBSDKApplicationDelegate class]]
|
||||
pathForResource:@"FacebookSDKStrings"
|
||||
ofType:@"bundle"];
|
||||
bundle = [NSBundle bundleWithPath:stringsBundlePath] ?: [NSBundle mainBundle];
|
||||
});
|
||||
return bundle;
|
||||
|
||||
@ -201,6 +201,8 @@
|
||||
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title
|
||||
message:nil
|
||||
preferredStyle:UIAlertControllerStyleActionSheet];
|
||||
alertController.popoverPresentationController.sourceView = self;
|
||||
alertController.popoverPresentationController.sourceRect = self.bounds;
|
||||
UIAlertAction *cancel = [UIAlertAction actionWithTitle:cancelTitle
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:nil];
|
||||
|
||||
@ -741,7 +741,7 @@ static NSString *const FBSDKExpectedChallengeKey = @"expected_login_challenge";
|
||||
[FBSDKInternalUtility bundleForStrings],
|
||||
@"Log In",
|
||||
@"Title of the web dialog that prompts the user to log in to Facebook.");
|
||||
[FBSDKWebDialog showWithName:@"oauth" parameters:loginParams delegate:self];
|
||||
[FBSDKWebDialog showWithName:@"oauth" parameters:parameters delegate:self];
|
||||
|
||||
if (handler) {
|
||||
handler(YES, nil);
|
||||
|
||||
@ -23,79 +23,63 @@
|
||||
@protocol FBSDKAppGroupAddDialogDelegate;
|
||||
|
||||
/*!
|
||||
@abstract A dialog for creating app groups.
|
||||
@deprecated App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information.
|
||||
*/
|
||||
__attribute__ ((deprecated))
|
||||
@interface FBSDKAppGroupAddDialog : NSObject
|
||||
|
||||
/*!
|
||||
@abstract Convenience method to build up an app group dialog with content and a delegate.
|
||||
@param content The content for the app group.
|
||||
@param delegate The receiver's delegate.
|
||||
@deprecated App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information.
|
||||
*/
|
||||
+ (instancetype)showWithContent:(FBSDKAppGroupContent *)content
|
||||
delegate:(id<FBSDKAppGroupAddDialogDelegate>)delegate;
|
||||
delegate:(id<FBSDKAppGroupAddDialogDelegate>)delegate __attribute__ ((deprecated));
|
||||
|
||||
/*!
|
||||
@abstract The receiver's delegate or nil if it doesn't have a delegate.
|
||||
@deprecated App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information.
|
||||
*/
|
||||
@property (nonatomic, weak) id<FBSDKAppGroupAddDialogDelegate> delegate;
|
||||
@property (nonatomic, weak) id<FBSDKAppGroupAddDialogDelegate> delegate __attribute__ ((deprecated));
|
||||
|
||||
/*!
|
||||
@abstract The content for app group.
|
||||
@deprecated App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information.
|
||||
*/
|
||||
@property (nonatomic, copy) FBSDKAppGroupContent *content;
|
||||
@property (nonatomic, copy) FBSDKAppGroupContent *content __attribute__ ((deprecated));
|
||||
|
||||
/*!
|
||||
@abstract A Boolean value that indicates whether the receiver can initiate an app group dialog.
|
||||
@discussion May return NO if the appropriate Facebook app is not installed and is required or an access token is
|
||||
required but not available. This method does not validate the content on the receiver, so this can be checked before
|
||||
building up the content.
|
||||
@see validateWithError:
|
||||
@result YES if the receiver can share, otherwise NO.
|
||||
@deprecated App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information.
|
||||
*/
|
||||
- (BOOL)canShow;
|
||||
- (BOOL)canShow __attribute__ ((deprecated));
|
||||
|
||||
/*!
|
||||
@abstract Begins the app group dialog from the receiver.
|
||||
@result YES if the receiver was able to show the dialog, otherwise NO.
|
||||
@deprecated App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information.
|
||||
*/
|
||||
- (BOOL)show;
|
||||
- (BOOL)show __attribute__ ((deprecated));
|
||||
|
||||
/*!
|
||||
@abstract Validates the content on the receiver.
|
||||
@param errorRef If an error occurs, upon return contains an NSError object that describes the problem.
|
||||
@return YES if the content is valid, otherwise NO.
|
||||
@deprecated App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information.
|
||||
*/
|
||||
- (BOOL)validateWithError:(NSError *__autoreleasing *)errorRef;
|
||||
- (BOOL)validateWithError:(NSError *__autoreleasing *)errorRef __attribute__ ((deprecated));
|
||||
|
||||
@end
|
||||
|
||||
/*!
|
||||
@abstract A delegate for FBSDKAppGroupAddDialog.
|
||||
@discussion The delegate is notified with the results of the app group request as long as the application has
|
||||
permissions to receive the information. For example, if the person is not signed into the containing app, the shower
|
||||
may not be able to distinguish between completion of an app group request and cancellation.
|
||||
@deprecated App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information.
|
||||
*/
|
||||
__attribute__ ((deprecated))
|
||||
@protocol FBSDKAppGroupAddDialogDelegate <NSObject>
|
||||
|
||||
/*!
|
||||
@abstract Sent to the delegate when the app group request completes without error.
|
||||
@param appGroupAddDialog The FBSDKAppGroupAddDialog that completed.
|
||||
@param results The results from the dialog. This may be nil or empty.
|
||||
@deprecated App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information.
|
||||
*/
|
||||
- (void)appGroupAddDialog:(FBSDKAppGroupAddDialog *)appGroupAddDialog didCompleteWithResults:(NSDictionary *)results;
|
||||
- (void)appGroupAddDialog:(FBSDKAppGroupAddDialog *)appGroupAddDialog didCompleteWithResults:(NSDictionary *)results __attribute__ ((deprecated));
|
||||
|
||||
/*!
|
||||
@abstract Sent to the delegate when the app group request encounters an error.
|
||||
@param appGroupAddDialog The FBSDKAppGroupAddDialog that completed.
|
||||
@param error The error.
|
||||
@deprecated App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information.
|
||||
*/
|
||||
- (void)appGroupAddDialog:(FBSDKAppGroupAddDialog *)appGroupAddDialog didFailWithError:(NSError *)error;
|
||||
- (void)appGroupAddDialog:(FBSDKAppGroupAddDialog *)appGroupAddDialog didFailWithError:(NSError *)error __attribute__ ((deprecated));
|
||||
|
||||
/*!
|
||||
@abstract Sent to the delegate when the app group dialog is cancelled.
|
||||
@param appGroupAddDialog The FBSDKAppGroupAddDialog that completed.
|
||||
@deprecated App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information.
|
||||
*/
|
||||
- (void)appGroupAddDialogDidCancel:(FBSDKAppGroupAddDialog *)appGroupAddDialog;
|
||||
- (void)appGroupAddDialogDidCancel:(FBSDKAppGroupAddDialog *)appGroupAddDialog __attribute__ ((deprecated));
|
||||
|
||||
@end
|
||||
|
||||
@ -21,79 +21,61 @@
|
||||
@protocol FBSDKAppGroupJoinDialogDelegate;
|
||||
|
||||
/*!
|
||||
@abstract A dialog for joining app groups.
|
||||
@deprecated App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information.
|
||||
*/
|
||||
__attribute__ ((deprecated))
|
||||
@interface FBSDKAppGroupJoinDialog : NSObject
|
||||
|
||||
/*!
|
||||
@abstract Convenience method to build up an app group dialog with content and a delegate.
|
||||
@param groupID The ID for the group.
|
||||
@param delegate The receiver's delegate.
|
||||
@deprecated App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information.
|
||||
*/
|
||||
+ (instancetype)showWithGroupID:(NSString *)groupID
|
||||
delegate:(id<FBSDKAppGroupJoinDialogDelegate>)delegate;
|
||||
delegate:(id<FBSDKAppGroupJoinDialogDelegate>)delegate __attribute__ ((deprecated));
|
||||
|
||||
/*!
|
||||
@abstract The receiver's delegate or nil if it doesn't have a delegate.
|
||||
*/
|
||||
@property (nonatomic, weak) id<FBSDKAppGroupJoinDialogDelegate> delegate;
|
||||
@deprecated App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information. */
|
||||
@property (nonatomic, weak) id<FBSDKAppGroupJoinDialogDelegate> delegate __attribute__ ((deprecated));
|
||||
|
||||
/*!
|
||||
@abstract The ID for group.
|
||||
*/
|
||||
@property (nonatomic, copy) NSString *groupID;
|
||||
@deprecated App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information. */
|
||||
@property (nonatomic, copy) NSString *groupID __attribute__ ((deprecated));
|
||||
|
||||
/*!
|
||||
@abstract A Boolean value that indicates whether the receiver can initiate an app group dialog.
|
||||
@discussion May return NO if the appropriate Facebook app is not installed and is required or an access token is
|
||||
required but not available. This method does not validate the content on the receiver, so this can be checked before
|
||||
building up the content.
|
||||
@see validateWithError:
|
||||
@result YES if the receiver can share, otherwise NO.
|
||||
@deprecated App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information.
|
||||
*/
|
||||
- (BOOL)canShow;
|
||||
- (BOOL)canShow __attribute__ ((deprecated));
|
||||
|
||||
/*!
|
||||
@abstract Begins the app group dialog from the receiver.
|
||||
@result YES if the receiver was able to show the dialog, otherwise NO.
|
||||
@deprecated App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information.
|
||||
*/
|
||||
- (BOOL)show;
|
||||
- (BOOL)show __attribute__ ((deprecated));
|
||||
|
||||
/*!
|
||||
@abstract Validates the content on the receiver.
|
||||
@param errorRef If an error occurs, upon return contains an NSError object that describes the problem.
|
||||
@return YES if the content is valid, otherwise NO.
|
||||
@deprecated App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information.
|
||||
*/
|
||||
- (BOOL)validateWithError:(NSError *__autoreleasing *)errorRef;
|
||||
- (BOOL)validateWithError:(NSError *__autoreleasing *)errorRef __attribute__ ((deprecated));
|
||||
|
||||
@end
|
||||
|
||||
/*!
|
||||
@abstract A delegate for FBSDKAppGroupJoinDialog.
|
||||
@discussion The delegate is notified with the results of the app group request as long as the application has
|
||||
permissions to receive the information. For example, if the person is not signed into the containing app, the shower
|
||||
may not be able to distinguish between completion of an app group request and cancellation.
|
||||
@deprecated App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information.
|
||||
*/
|
||||
__attribute__ ((deprecated))
|
||||
@protocol FBSDKAppGroupJoinDialogDelegate <NSObject>
|
||||
|
||||
/*!
|
||||
@abstract Sent to the delegate when the app group request completes without error.
|
||||
@param appGroupJoinDialog The FBSDKAppGroupJoinDialog that completed.
|
||||
@param results The results from the dialog. This may be nil or empty.
|
||||
@deprecated App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information.
|
||||
*/
|
||||
- (void)appGroupJoinDialog:(FBSDKAppGroupJoinDialog *)appGroupJoinDialog didCompleteWithResults:(NSDictionary *)results;
|
||||
- (void)appGroupJoinDialog:(FBSDKAppGroupJoinDialog *)appGroupJoinDialog didCompleteWithResults:(NSDictionary *)results __attribute__ ((deprecated));
|
||||
|
||||
/*!
|
||||
@abstract Sent to the delegate when the app group request encounters an error.
|
||||
@param appGroupJoinDialog The FBSDKAppGroupJoinDialog that completed.
|
||||
@param error The error.
|
||||
@deprecated App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information.
|
||||
*/
|
||||
- (void)appGroupJoinDialog:(FBSDKAppGroupJoinDialog *)appGroupJoinDialog didFailWithError:(NSError *)error;
|
||||
- (void)appGroupJoinDialog:(FBSDKAppGroupJoinDialog *)appGroupJoinDialog didFailWithError:(NSError *)error __attribute__ ((deprecated));
|
||||
|
||||
/*!
|
||||
@abstract Sent to the delegate when the app group dialog is cancelled.
|
||||
@param appGroupJoinDialog The FBSDKAppGroupJoinDialog that completed.
|
||||
@deprecated App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information.
|
||||
*/
|
||||
- (void)appGroupJoinDialogDidCancel:(FBSDKAppGroupJoinDialog *)appGroupJoinDialog;
|
||||
- (void)appGroupJoinDialogDidCancel:(FBSDKAppGroupJoinDialog *)appGroupJoinDialog __attribute__ ((deprecated));
|
||||
|
||||
@end
|
||||
|
||||
@ -368,6 +368,7 @@ static NSMutableArray *g_pendingFBSDKShareAPI;
|
||||
if ([errors count]) {
|
||||
[_delegate sharer:self didFailWithError:errors[0]];
|
||||
} else if ([results count]) {
|
||||
NSArray *individualPhotoIDs = [results valueForKeyPath:@"id"];
|
||||
// each photo upload will be merged into the same post, so grab the post_id from the first and use that
|
||||
NSMutableDictionary *shareResults = [[NSMutableDictionary alloc] init];
|
||||
[FBSDKInternalUtility dictionary:shareResults setObject:FBSDK_SHARE_RESULT_COMPLETION_GESTURE_VALUE_POST
|
||||
@ -375,6 +376,7 @@ static NSMutableArray *g_pendingFBSDKShareAPI;
|
||||
NSDictionary *firstResult = [FBSDKTypeUtility dictionaryValue:results[0]];
|
||||
[FBSDKInternalUtility dictionary:shareResults setObject:[FBSDKTypeUtility stringValue:firstResult[@"post_id"]]
|
||||
forKey:FBSDK_SHARE_RESULT_POST_ID_KEY];
|
||||
[FBSDKInternalUtility dictionary:shareResults setObject:individualPhotoIDs forKey:FBSDK_SHARE_RESULT_PHOTO_IDS_KEY];
|
||||
[_delegate sharer:self didCompleteWithResults:shareResults];
|
||||
}
|
||||
};
|
||||
|
||||
@ -188,6 +188,14 @@ FBSDK_STATIC_INLINE void FBSDKShareDialogValidateShareExtensionSchemeRegisteredF
|
||||
NSInteger errorCode = [results[@"error_code"] integerValue];
|
||||
if (errorCode == 4201) {
|
||||
[self _invokeDelegateDidCancel];
|
||||
} else if (errorCode != 0) {
|
||||
NSError *error = [FBSDKShareError errorWithCode:FBSDKShareUnknownErrorCode
|
||||
userInfo:@{
|
||||
FBSDKGraphRequestErrorGraphErrorCode : @(errorCode)
|
||||
}
|
||||
message:results[@"error_message"]
|
||||
underlyingError:nil];
|
||||
[self _handleWebResponseParameters:nil error:error];
|
||||
} else {
|
||||
// not all web dialogs report cancellation, so assume that the share has completed with no additional information
|
||||
[self _handleWebResponseParameters:results error:nil];
|
||||
|
||||
@ -25,6 +25,7 @@
|
||||
#define FBSDK_SHARE_RESULT_COMPLETION_GESTURE_VALUE_CANCEL @"cancel"
|
||||
#define FBSDK_SHARE_RESULT_COMPLETION_GESTURE_VALUE_POST @"post"
|
||||
#define FBSDK_SHARE_RESULT_DID_COMPLETE_KEY @"didComplete"
|
||||
#define FBSDK_SHARE_RESULT_PHOTO_IDS_KEY @"photo_ids"
|
||||
#define FBSDK_SHARE_RESULT_POST_ID_KEY @"postId"
|
||||
#define FBSDK_SHARE_VIDEO_END_OFFSET @"end_offset"
|
||||
#define FBSDK_SHARE_VIDEO_FILE_CHUNK @"video_file_chunk"
|
||||
|
||||
@ -213,6 +213,7 @@
|
||||
[FBSDKInternalUtility dictionary:parameters setObject:linkContent.contentDescription forKey:@"description"];
|
||||
[FBSDKInternalUtility dictionary:parameters setObject:linkContent.contentURL forKey:@"link"];
|
||||
[FBSDKInternalUtility dictionary:parameters setObject:linkContent.quote forKey:@"quote"];
|
||||
[FBSDKInternalUtility dictionary:parameters setObject:[self hashtagStringFromHashtag:linkContent.hashtag] forKey:@"hashtag"];
|
||||
[FBSDKInternalUtility dictionary:parameters setObject:linkContent.contentTitle forKey:@"name"];
|
||||
[FBSDKInternalUtility dictionary:parameters setObject:linkContent.imageURL forKey:@"picture"];
|
||||
[FBSDKInternalUtility dictionary:parameters setObject:linkContent.ref forKey:@"ref"];
|
||||
|
||||
3
Pods/Firebase/CHANGELOG.md
generated
3
Pods/Firebase/CHANGELOG.md
generated
@ -1,3 +1,6 @@
|
||||
# 3.5.0
|
||||
* Updates for Firebase/Analytics, Firebase/AppIndexing, Firebase/Auth, Firebase/DynamicLinks, Firebase/Invites, Firebase/Storage.
|
||||
|
||||
# 3.4.0
|
||||
* Updates for Firebase/AdMob, Firebase/Analytics, Firebase/AppIndexing, Firebase/Auth, Firebase/Crash, Firebase/DynamicLinks, Firebase/Invites, Firebase/Messaging, Firebase/RemoteConfig.
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@ -1,100 +0,0 @@
|
||||
// clang-format off
|
||||
/** @file FIRStorage.h
|
||||
@brief Firebase SDK
|
||||
@copyright Copyright 2016 Google Inc.
|
||||
@remarks Use of this SDK is subject to the Google APIs Terms of Service:
|
||||
https://developers.google.com/terms/
|
||||
*/
|
||||
// clang-format on
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#import "FIRStorageConstants.h"
|
||||
|
||||
@class FIRApp;
|
||||
@class FIRStorageReference;
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/**
|
||||
* FirebaseStorage is a service that supports uploading and downloading binary objects,
|
||||
* such as images, videos, and other files to Google Cloud Storage.
|
||||
*
|
||||
* If you call [FIRStorage storage], the instance will initialize with the default FIRApp,
|
||||
* [FIRApp defaultApp], and the storage location will come from the provided
|
||||
* GoogleService-Info.plist.
|
||||
*
|
||||
* If you call [FIRStorage storageForApp:] and provide a custom instance of FIRApp,
|
||||
* the storage location will be specified via the FIROptions#storageBucket property.
|
||||
*/
|
||||
@interface FIRStorage : NSObject
|
||||
|
||||
/**
|
||||
* Creates an instance of FIRStorage, configured with the default FIRApp.
|
||||
* @return the FIRStorage instance, initialized with the default FIRApp.
|
||||
*/
|
||||
+ (instancetype)storage NS_SWIFT_NAME(storage());
|
||||
|
||||
/**
|
||||
* Creates an instance of FIRStorage, configured with the custom FIRApp @a app.
|
||||
* @param app The custom FIRApp used for initialization.
|
||||
* @return the FIRStorage instance, initialized with the custom FIRApp.
|
||||
*/
|
||||
+ (instancetype)storageForApp:(FIRApp *)app NS_SWIFT_NAME(storage(app:));
|
||||
|
||||
/**
|
||||
* The Firebase App associated with this Firebase Storage instance.
|
||||
*/
|
||||
@property(strong, nonatomic, readonly) FIRApp *app;
|
||||
|
||||
/**
|
||||
* Maximum time in seconds to retry an upload if a failure occurs.
|
||||
* Defaults to 10 minutes (600 seconds).
|
||||
*/
|
||||
@property NSTimeInterval maxUploadRetryTime;
|
||||
|
||||
/**
|
||||
* Maximum time in seconds to retry a download if a failure occurs.
|
||||
* Defaults to 10 minutes (600 seconds).
|
||||
*/
|
||||
@property NSTimeInterval maxDownloadRetryTime;
|
||||
|
||||
/**
|
||||
* Maximum time in seconds to retry operations other than upload and download if a failure occurs.
|
||||
* Defaults to 2 minutes (120 seconds).
|
||||
*/
|
||||
@property NSTimeInterval maxOperationRetryTime;
|
||||
|
||||
/**
|
||||
* Queue that all developer callbacks are fired on. Defaults to the main queue.
|
||||
*/
|
||||
@property(strong, nonatomic) dispatch_queue_t callbackQueue;
|
||||
|
||||
/**
|
||||
* Creates a FIRStorageReference initialized at the root Firebase Storage location.
|
||||
* @return An instance of FIRStorageReference initialized at the root.
|
||||
*/
|
||||
- (FIRStorageReference *)reference;
|
||||
|
||||
/**
|
||||
* Creates a FIRStorageReference given a gs:// or https:// URL pointing to a Firebase Storage
|
||||
* location. For example, you can pass in an https:// download URL retrieved from
|
||||
* [FIRStorageReference getDownloadURL] or the gs:// URI from [FIRStorageReference description].
|
||||
* @param string A gs:// or https:// URL to initialize the reference with.
|
||||
* @return An instance of FIRStorageReference at the given child path.
|
||||
* @throws Throws an exception if passed in URL is not associated with the FIRApp used to initialize
|
||||
* this FIRStorage.
|
||||
*/
|
||||
- (FIRStorageReference *)referenceForURL:(NSString *)string;
|
||||
|
||||
/**
|
||||
* Creates a FIRStorageReference initialized at a child Firebase Storage location.
|
||||
* @param string A relative path from the root to initialize the reference with,
|
||||
* for instance @"path/to/object".
|
||||
* @return An instance of FIRStorageReference at the given child path.
|
||||
*/
|
||||
- (FIRStorageReference *)referenceWithPath:(NSString *)string;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@ -1,123 +0,0 @@
|
||||
// clang-format off
|
||||
/** @file FIRStorageConstants.h
|
||||
@brief Firebase SDK
|
||||
@copyright Copyright 2016 Google Inc.
|
||||
@remarks Use of this SDK is subject to the Google APIs Terms of Service:
|
||||
https://developers.google.com/terms/
|
||||
*/
|
||||
// clang-format on
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@class FIRStorageDownloadTask;
|
||||
@class FIRStorageMetadata;
|
||||
@class FIRStorageTaskSnapshot;
|
||||
@class FIRStorageUploadTask;
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/**
|
||||
* NSString typedef representing a task listener handle.
|
||||
*/
|
||||
typedef NSString *FIRStorageHandle;
|
||||
|
||||
/**
|
||||
* Block typedef typically used when downloading data.
|
||||
* @param data The data returned by the download, or nil if no data available or download failed.
|
||||
* @param error The error describing failure, if one occurred.
|
||||
*/
|
||||
typedef void (^FIRStorageVoidDataError)(NSData *_Nullable data, NSError *_Nullable error);
|
||||
|
||||
/**
|
||||
* Block typedef typically used when performing "binary" async operations such as delete,
|
||||
* where the operation either succeeds without an error or fails with an error.
|
||||
* @param error The error describing failure, if one occurred.
|
||||
*/
|
||||
typedef void (^FIRStorageVoidError)(NSError *_Nullable error);
|
||||
|
||||
/**
|
||||
* Block typedef typically used when retrieving metadata.
|
||||
* @param metadata The metadata returned by the operation, if metadata exists.
|
||||
*/
|
||||
typedef void (^FIRStorageVoidMetadata)(FIRStorageMetadata *_Nullable metadata);
|
||||
|
||||
/**
|
||||
* Block typedef typically used when retrieving metadata with the possibility of an error.
|
||||
* @param metadata The metadata returned by the operation, if metadata exists.
|
||||
* @param error The error describing failure, if one occurred.
|
||||
*/
|
||||
typedef void (^FIRStorageVoidMetadataError)(FIRStorageMetadata *_Nullable metadata,
|
||||
NSError *_Nullable error);
|
||||
|
||||
/**
|
||||
* Block typedef typically used when getting or updating metadata with the possibility of an error.
|
||||
* @param metadata The metadata returned by the operation, if metadata exists.
|
||||
* @param error The error describing failure, if one occurred.
|
||||
*/
|
||||
typedef void (^FIRStorageVoidSnapshot)(FIRStorageTaskSnapshot *snapshot);
|
||||
|
||||
/**
|
||||
* Block typedef typically used when retrieving a download URL.
|
||||
* @param URL The download URL associated with the operation.
|
||||
* @param error The error describing failure, if one occurred.
|
||||
*/
|
||||
typedef void (^FIRStorageVoidURLError)(NSURL *_Nullable URL, NSError *_Nullable error);
|
||||
|
||||
/**
|
||||
* Enum representing the upload and download task status.
|
||||
*/
|
||||
typedef NS_ENUM(NSInteger, FIRStorageTaskStatus) {
|
||||
/**
|
||||
* Unknown task status.
|
||||
*/
|
||||
FIRStorageTaskStatusUnknown,
|
||||
|
||||
/**
|
||||
* Task is being resumed.
|
||||
*/
|
||||
FIRStorageTaskStatusResume,
|
||||
|
||||
/**
|
||||
* Task reported a progress event.
|
||||
*/
|
||||
FIRStorageTaskStatusProgress,
|
||||
|
||||
/**
|
||||
* Task is paused.
|
||||
*/
|
||||
FIRStorageTaskStatusPause,
|
||||
|
||||
/**
|
||||
* Task has completed successfully.
|
||||
*/
|
||||
FIRStorageTaskStatusSuccess,
|
||||
|
||||
/**
|
||||
* Task has failed and is unrecoverable.
|
||||
*/
|
||||
FIRStorageTaskStatusFailure
|
||||
};
|
||||
|
||||
/**
|
||||
* Firebase Storage error domain.
|
||||
*/
|
||||
FOUNDATION_EXPORT NSString *const FIRStorageErrorDomain;
|
||||
|
||||
/**
|
||||
* Enum representing the errors raised by Firebase Storage.
|
||||
*/
|
||||
typedef NS_ENUM(NSInteger, FIRStorageErrorCode) {
|
||||
FIRStorageErrorCodeUnknown = -13000,
|
||||
FIRStorageErrorCodeObjectNotFound = -13010,
|
||||
FIRStorageErrorCodeBucketNotFound = -13011,
|
||||
FIRStorageErrorCodeProjectNotFound = -13012,
|
||||
FIRStorageErrorCodeQuotaExceeded = -13013,
|
||||
FIRStorageErrorCodeUnauthenticated = -13020,
|
||||
FIRStorageErrorCodeUnauthorized = -13021,
|
||||
FIRStorageErrorCodeRetryLimitExceeded = -13030,
|
||||
FIRStorageErrorCodeNonMatchingChecksum = -13031,
|
||||
FIRStorageErrorCodeDownloadSizeExceeded = -13032,
|
||||
FIRStorageErrorCodeCancelled = -13040
|
||||
};
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@ -1,30 +0,0 @@
|
||||
// clang-format off
|
||||
/** @file FIRStorageDownloadTask.h
|
||||
@brief Firebase SDK
|
||||
@copyright Copyright 2016 Google Inc.
|
||||
@remarks Use of this SDK is subject to the Google APIs Terms of Service:
|
||||
https://developers.google.com/terms/
|
||||
*/
|
||||
// clang-format on
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#import "FIRStorageObservableTask.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/**
|
||||
* FIRStorageDownloadTask implements resumable downloads from an object in Firebase Storage.
|
||||
* Downloads can be returned on completion with a completion handler, and can be monitored
|
||||
* by attaching observers, or controlled by calling FIRStorageTask#pause, FIRStorageTask#resume,
|
||||
* or FIRStorageTask#cancel.
|
||||
* Downloads can currently be returned as NSData in memory, or as an NSURL to a file on disk.
|
||||
* Downloads are performed on a background queue, and callbacks are raised on the developer
|
||||
* specified callbackQueue in FIRStorage, or the main queue if left unspecified.
|
||||
* Currently all uploads must be initiated and managed on the main queue.
|
||||
*/
|
||||
@interface FIRStorageDownloadTask : FIRStorageObservableTask<FIRStorageTaskManagement>
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@ -1,138 +0,0 @@
|
||||
// clang-format off
|
||||
/** @file FIRStorageMetadata.h
|
||||
@brief Firebase SDK
|
||||
@copyright Copyright 2016 Google Inc.
|
||||
@remarks Use of this SDK is subject to the Google APIs Terms of Service:
|
||||
https://developers.google.com/terms/
|
||||
*/
|
||||
// clang-format on
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@class FIRStorageReference;
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/**
|
||||
* Class which represents the metadata on an object in Firebase Storage. This metadata is
|
||||
* returned on successful operations, and can be used to retrieve download URLs, content types,
|
||||
* and a FIRStorage reference to the object in question. Full documentation can be found at the GCS
|
||||
* Objects#resource docs.
|
||||
* @see https://cloud.google.com/storage/docs/json_api/v1/objects#resource
|
||||
*/
|
||||
@interface FIRStorageMetadata : NSObject<NSCopying>
|
||||
|
||||
/**
|
||||
* The name of the bucket containing this object.
|
||||
*/
|
||||
@property(copy, nonatomic, readonly) NSString *bucket;
|
||||
|
||||
/**
|
||||
* Cache-Control directive for the object data.
|
||||
*/
|
||||
@property(copy, nonatomic, nullable) NSString *cacheControl;
|
||||
|
||||
/**
|
||||
* Content-Disposition of the object data.
|
||||
*/
|
||||
@property(copy, nonatomic, nullable) NSString *contentDisposition;
|
||||
|
||||
/**
|
||||
* Content-Encoding of the object data.
|
||||
*/
|
||||
@property(copy, nonatomic, nullable) NSString *contentEncoding;
|
||||
|
||||
/**
|
||||
* Content-Language of the object data.
|
||||
*/
|
||||
@property(copy, nonatomic, nullable) NSString *contentLanguage;
|
||||
|
||||
/**
|
||||
* Content-Type of the object data.
|
||||
*/
|
||||
@property(copy, nonatomic, nullable) NSString *contentType;
|
||||
|
||||
/**
|
||||
* The content generation of this object. Used for object versioning.
|
||||
*/
|
||||
@property(readonly) int64_t generation;
|
||||
|
||||
/**
|
||||
* User-provided metadata, in key/value pairs.
|
||||
*/
|
||||
@property(copy, nonatomic, nullable) NSDictionary<NSString *, NSString *> *customMetadata;
|
||||
|
||||
/**
|
||||
* The version of the metadata for this object at this generation. Used
|
||||
* for preconditions and for detecting changes in metadata. A metageneration number is only
|
||||
* meaningful in the context of a particular generation of a particular object.
|
||||
*/
|
||||
@property(readonly) int64_t metageneration;
|
||||
|
||||
/**
|
||||
* The name of this object, in gs://bucket/path/to/object.txt, this is object.txt.
|
||||
*/
|
||||
@property(copy, nonatomic, readonly, nullable) NSString *name;
|
||||
|
||||
/**
|
||||
* The full path of this object, in gs://bucket/path/to/object.txt, this is path/to/object.txt.
|
||||
*/
|
||||
@property(copy, nonatomic, readonly, nullable) NSString *path;
|
||||
|
||||
/**
|
||||
* Content-Length of the data in bytes.
|
||||
*/
|
||||
@property(readonly) int64_t size;
|
||||
|
||||
/**
|
||||
* The creation time of the object in RFC 3339 format.
|
||||
*/
|
||||
@property(copy, nonatomic, readonly, nullable) NSDate *timeCreated;
|
||||
|
||||
/**
|
||||
* The modification time of the object metadata in RFC 3339 format.
|
||||
*/
|
||||
@property(copy, nonatomic, readonly, nullable) NSDate *updated;
|
||||
|
||||
/**
|
||||
* A reference to the object in Firebase Storage.
|
||||
*/
|
||||
@property(strong, nonatomic, readonly, nullable) FIRStorageReference *storageReference;
|
||||
|
||||
/**
|
||||
* An array containing all download URLs available for the object.
|
||||
*/
|
||||
@property(strong, nonatomic, readonly, nullable) NSArray<NSURL *> *downloadURLs;
|
||||
|
||||
/**
|
||||
* Creates an instanece of FIRStorageMetadata from the contents of a dictionary.
|
||||
* @return An instance of FIRStorageMetadata that represents the contents of a dictionary.
|
||||
*/
|
||||
- (nullable instancetype)initWithDictionary:(NSDictionary *)dictionary NS_DESIGNATED_INITIALIZER;
|
||||
|
||||
/**
|
||||
* Creates an NSDictionary from the contents of the metadata.
|
||||
* @return An NSDictionary that represents the contents of the metadata.
|
||||
*/
|
||||
- (NSDictionary *)dictionaryRepresentation;
|
||||
|
||||
/**
|
||||
* Determines if the current metadata represents a "file".
|
||||
*/
|
||||
@property(readonly, getter=isFile) BOOL file;
|
||||
|
||||
/**
|
||||
* Determines if the current metadata represents a "folder".
|
||||
*/
|
||||
@property(readonly, getter=isFolder) BOOL folder;
|
||||
|
||||
/**
|
||||
* Retrieves a download URL for the given object, or nil if none exist.
|
||||
* Note that if there are many valid download tokens, this will always return the first
|
||||
* valid token created.
|
||||
*/
|
||||
- (nullable NSURL *)downloadURL;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@ -1,54 +0,0 @@
|
||||
// clang-format off
|
||||
/** @file FIRStorageObservableTask.h
|
||||
@brief Firebase SDK
|
||||
@copyright Copyright 2016 Google Inc.
|
||||
@remarks Use of this SDK is subject to the Google APIs Terms of Service:
|
||||
https://developers.google.com/terms/
|
||||
*/
|
||||
// clang-format on
|
||||
|
||||
#import "FIRStorageTask.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@class FIRStorageReference;
|
||||
@class FIRStorageTaskSnapshot;
|
||||
|
||||
/**
|
||||
* Extends FIRStorageTask to provide observable semantics such as adding and removing observers.
|
||||
* Observers produce a FIRStorageHandle, which is used to keep track of and remove specific
|
||||
* observers at a later date.
|
||||
* This class is currently not thread safe and can only be called on the main thread.
|
||||
*/
|
||||
@interface FIRStorageObservableTask : FIRStorageTask
|
||||
|
||||
/**
|
||||
* Observes changes in the upload status: Resume, Pause, Progress, Success, and Failure.
|
||||
* @param status The FIRStorageTaskStatus change to observe.
|
||||
* @param handler A callback that fires every time the status event occurs,
|
||||
* returns a FIRStorageTaskSnapshot containing the state of the task.
|
||||
* @return A task handle that can be used to remove the observer at a later date.
|
||||
*/
|
||||
- (FIRStorageHandle)observeStatus:(FIRStorageTaskStatus)status
|
||||
handler:(void (^)(FIRStorageTaskSnapshot *snapshot))handler;
|
||||
|
||||
/**
|
||||
* Removes the single observer with the provided handle.
|
||||
* @param handle The handle of the task to remove.
|
||||
*/
|
||||
- (void)removeObserverWithHandle:(FIRStorageHandle)handle;
|
||||
|
||||
/**
|
||||
* Removes all observers for a single status.
|
||||
* @param status A FIRStorageTaskStatus to remove listeners for.
|
||||
*/
|
||||
- (void)removeAllObserversForStatus:(FIRStorageTaskStatus)status;
|
||||
|
||||
/**
|
||||
* Removes all observers.
|
||||
*/
|
||||
- (void)removeAllObservers;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@ -1,228 +0,0 @@
|
||||
// clang-format off
|
||||
/** @file FIRStorageReference.h
|
||||
@brief Firebase SDK
|
||||
@copyright Copyright 2016 Google Inc.
|
||||
@remarks Use of this SDK is subject to the Google APIs Terms of Service:
|
||||
https://developers.google.com/terms/
|
||||
*/
|
||||
// clang-format on
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#import "FIRStorage.h"
|
||||
#import "FIRStorageConstants.h"
|
||||
#import "FIRStorageDownloadTask.h"
|
||||
#import "FIRStorageMetadata.h"
|
||||
#import "FIRStorageTask.h"
|
||||
#import "FIRStorageUploadTask.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/**
|
||||
* FIRStorageReference represents a reference to a Google Cloud Storage object. Developers can
|
||||
* upload and download objects, as well as get/set object metadata, and delete an object at the
|
||||
* path.
|
||||
* @see https://cloud.google.com/storage/
|
||||
*/
|
||||
@interface FIRStorageReference : NSObject
|
||||
|
||||
/**
|
||||
* The FIRStorage service object which created this reference.
|
||||
*/
|
||||
@property(nonatomic, readonly) FIRStorage *storage;
|
||||
|
||||
/**
|
||||
* The name of the Google Cloud Storage bucket associated with this reference,
|
||||
* in gs://bucket/path/to/object.txt, the bucket would be: 'bucket'
|
||||
*/
|
||||
@property(nonatomic, readonly) NSString *bucket;
|
||||
|
||||
/**
|
||||
* The full path to this object, not including the Google Cloud Storage bucket.
|
||||
* In gs://bucket/path/to/object.txt, the full path would be: 'path/to/object.txt'
|
||||
*/
|
||||
@property(nonatomic, readonly) NSString *fullPath;
|
||||
|
||||
/**
|
||||
* The short name of the object associated with this reference,
|
||||
* in gs://bucket/path/to/object.txt, the name of the object would be: 'object.txt'
|
||||
*/
|
||||
@property(nonatomic, readonly) NSString *name;
|
||||
|
||||
#pragma mark - Path Operations
|
||||
|
||||
/**
|
||||
* Creates a new FIRStorageReference pointing to the root object.
|
||||
* @return A new FIRStorageReference pointing to the root object.
|
||||
*/
|
||||
- (FIRStorageReference *)root;
|
||||
|
||||
/**
|
||||
* Creates a new FIRStorageReference pointing to the parent of the current reference
|
||||
* or nil if this instance references the root location.
|
||||
* For example:
|
||||
* path = foo/bar/baz parent = foo/bar
|
||||
* path = foo parent = (root)
|
||||
* path = (root) parent = nil
|
||||
* @return A new FIRStorageReference pointing to the parent of the current reference.
|
||||
*/
|
||||
- (nullable FIRStorageReference *)parent;
|
||||
|
||||
/**
|
||||
* Creates a new FIRStorageReference pointing to a child object of the current reference.
|
||||
* path = foo child = bar newPath = foo/bar
|
||||
* path = foo/bar child = baz newPath = foo/bar/baz
|
||||
* All leading and trailing slashes will be removed, and consecutive slashes will be
|
||||
* compressed to single slashes. For example:
|
||||
* child = /foo/bar newPath = foo/bar
|
||||
* child = foo/bar/ newPath = foo/bar
|
||||
* child = foo///bar newPath = foo/bar
|
||||
* @param path Path to append to the current path.
|
||||
* @return A new FIRStorageReference pointing to a child location of the current reference.
|
||||
*/
|
||||
- (FIRStorageReference *)child:(NSString *)path;
|
||||
|
||||
#pragma mark - Uploads
|
||||
|
||||
/**
|
||||
* Asynchronously uploads data to the currently specified FIRStorageReference,
|
||||
* without additional metadata.
|
||||
* This is not recommended for large files, and one should instead upload a file from disk.
|
||||
* @param uploadData The NSData to upload.
|
||||
* @return An instance of FIRStorageUploadTask, which can be used to monitor or manage the upload.
|
||||
*/
|
||||
- (FIRStorageUploadTask *)putData:(NSData *)uploadData;
|
||||
|
||||
/**
|
||||
* Asynchronously uploads data to the currently specified FIRStorageReference.
|
||||
* This is not recommended for large files, and one should instead upload a file from disk.
|
||||
* @param uploadData The NSData to upload.
|
||||
* @param metadata FIRStorageMetadata containing additional information (MIME type, etc.)
|
||||
* about the object being uploaded.
|
||||
* @return An instance of FIRStorageUploadTask, which can be used to monitor or manage the upload.
|
||||
*/
|
||||
- (FIRStorageUploadTask *)putData:(NSData *)uploadData
|
||||
metadata:(nullable FIRStorageMetadata *)metadata;
|
||||
|
||||
/**
|
||||
* Asynchronously uploads data to the currently specified FIRStorageReference.
|
||||
* This is not recommended for large files, and one should instead upload a file from disk.
|
||||
* @param uploadData The NSData to upload.
|
||||
* @param metadata FIRStorageMetadata containing additional information (MIME type, etc.)
|
||||
* about the object being uploaded.
|
||||
* @param completion A completion block that either returns the object metadata on success,
|
||||
* or an error on failure.
|
||||
* @return An instance of FIRStorageUploadTask, which can be used to monitor or manage the upload.
|
||||
*/
|
||||
- (FIRStorageUploadTask *)putData:(NSData *)uploadData
|
||||
metadata:(nullable FIRStorageMetadata *)metadata
|
||||
completion:(nullable void (^)(FIRStorageMetadata *_Nullable metadata,
|
||||
NSError *_Nullable error))completion;
|
||||
|
||||
/**
|
||||
* Asynchronously uploads a file to the currently specified FIRStorageReference,
|
||||
* without additional metadata.
|
||||
* @param fileURL A URL representing the system file path of the object to be uploaded.
|
||||
* @return An instance of FIRStorageUploadTask, which can be used to monitor or manage the upload.
|
||||
*/
|
||||
- (FIRStorageUploadTask *)putFile:(NSURL *)fileURL;
|
||||
|
||||
/**
|
||||
* Asynchronously uploads a file to the currently specified FIRStorageReference.
|
||||
* @param fileURL A URL representing the system file path of the object to be uploaded.
|
||||
* @param metadata FIRStorageMetadata containing additional information (MIME type, etc.)
|
||||
* about the object being uploaded.
|
||||
* @return An instance of FIRStorageUploadTask, which can be used to monitor or manage the upload.
|
||||
*/
|
||||
- (FIRStorageUploadTask *)putFile:(NSURL *)fileURL metadata:(nullable FIRStorageMetadata *)metadata;
|
||||
|
||||
/**
|
||||
* Asynchronously uploads a file to the currently specified FIRStorageReference.
|
||||
* @param fileURL A URL representing the system file path of the object to be uploaded.
|
||||
* @param metadata FIRStorageMetadata containing additional information (MIME type, etc.)
|
||||
* about the object being uploaded.
|
||||
* @param completion A completion block that either returns the object metadata on success,
|
||||
* or an error on failure.
|
||||
* @return An instance of FIRStorageUploadTask, which can be used to monitor or manage the upload.
|
||||
*/
|
||||
- (FIRStorageUploadTask *)putFile:(NSURL *)fileURL
|
||||
metadata:(nullable FIRStorageMetadata *)metadata
|
||||
completion:(nullable void (^)(FIRStorageMetadata *_Nullable metadata,
|
||||
NSError *_Nullable error))completion;
|
||||
|
||||
#pragma mark - Downloads
|
||||
|
||||
/**
|
||||
* Asynchronously downloads the object at the FIRStorageReference to an NSData object in memory.
|
||||
* An NSData of the provided max size will be allocated, so ensure that the device has enough free
|
||||
* memory to complete the download. For downloading large files, writeToFile may be a better option.
|
||||
* @param size The maximum size in bytes to download. If the download exceeds this size
|
||||
* the task will be cancelled and an error will be returned.
|
||||
* @param completion A completion block that either returns the object data on success,
|
||||
* or an error on failure.
|
||||
* @return An FIRStorageDownloadTask that can be used to monitor or manage the download.
|
||||
*/
|
||||
- (FIRStorageDownloadTask *)dataWithMaxSize:(int64_t)size
|
||||
completion:(void (^)(NSData *_Nullable data,
|
||||
NSError *_Nullable error))completion;
|
||||
|
||||
/**
|
||||
* Asynchronously retrieves a long lived download URL with a revokable token.
|
||||
* This can be used to share the file with others, but can be revoked by a developer
|
||||
* in the Firebase Console if desired.
|
||||
* @param completion A completion block that either returns the URL on success,
|
||||
* or an error on failure.
|
||||
*/
|
||||
- (void)downloadURLWithCompletion:(void (^)(NSURL *_Nullable URL,
|
||||
NSError *_Nullable error))completion;
|
||||
|
||||
/**
|
||||
* Asynchronously downloads the object at the current path to a specified system filepath.
|
||||
* @param fileURL A file system URL representing the path the object should be downloaded to.
|
||||
* @return An FIRStorageDownloadTask that can be used to monitor or manage the download.
|
||||
*/
|
||||
- (FIRStorageDownloadTask *)writeToFile:(NSURL *)fileURL;
|
||||
|
||||
/**
|
||||
* Asynchronously downloads the object at the current path to a specified system filepath.
|
||||
* @param fileURL A file system URL representing the path the object should be downloaded to.
|
||||
* @param completion A completion block that fires when the file download completes.
|
||||
* Returns an NSURL pointing to the file path of the downloaded file on success,
|
||||
* or an error on failure.
|
||||
* @return An FIRStorageDownloadTask that can be used to monitor or manage the download.
|
||||
*/
|
||||
- (FIRStorageDownloadTask *)writeToFile:(NSURL *)fileURL
|
||||
completion:(nullable void (^)(NSURL *_Nullable URL,
|
||||
NSError *_Nullable error))completion;
|
||||
|
||||
#pragma mark - Metadata Operations
|
||||
|
||||
/**
|
||||
* Retrieves metadata associated with an object at the current path.
|
||||
* @param completion A completion block which returns the object metadata on success,
|
||||
* or an error on failure.
|
||||
*/
|
||||
- (void)metadataWithCompletion:(void (^)(FIRStorageMetadata *_Nullable metadata,
|
||||
NSError *_Nullable error))completion;
|
||||
|
||||
/**
|
||||
* Updates the metadata associated with an object at the current path.
|
||||
* @param metadata An FIRStorageMetadata object with the metadata to update.
|
||||
* @param completion A completion block which returns the FIRStorageMetadata on success,
|
||||
* or an error on failure.
|
||||
*/
|
||||
- (void)updateMetadata:(FIRStorageMetadata *)metadata
|
||||
completion:(nullable void (^)(FIRStorageMetadata *_Nullable metadata,
|
||||
NSError *_Nullable error))completion;
|
||||
|
||||
#pragma mark - Delete
|
||||
|
||||
/**
|
||||
* Deletes the object at the current path.
|
||||
* @param completion A completion block which returns nil on success, or an error on failure.
|
||||
*/
|
||||
- (void)deleteWithCompletion:(nullable void (^)(NSError *_Nullable error))completion;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@ -1,66 +0,0 @@
|
||||
// clang-format off
|
||||
/** @file FIRStorageTask.h
|
||||
@brief Firebase SDK
|
||||
@copyright Copyright 2016 Google Inc.
|
||||
@remarks Use of this SDK is subject to the Google APIs Terms of Service:
|
||||
https://developers.google.com/terms/
|
||||
*/
|
||||
// clang-format on
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#import "FIRStorageConstants.h"
|
||||
#import "FIRStorageMetadata.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/**
|
||||
* A superclass to all FIRStorage*Tasks, including FIRStorageUploadTask
|
||||
* and FIRStorageDownloadTask, to provide state transitions, event raising, and common storage
|
||||
* or metadata and errors.
|
||||
* Callbacks are always fired on the developer specified callback queue.
|
||||
* If no queue is specified by the developer, it defaults to the main queue.
|
||||
* Currently not thread safe, so only call methods on the main thread.
|
||||
*/
|
||||
@interface FIRStorageTask : NSObject
|
||||
|
||||
/**
|
||||
* An immutable view of the task and associated metadata, progress, error, etc.
|
||||
*/
|
||||
@property(strong, readonly, nonatomic, nonnull) FIRStorageTaskSnapshot *snapshot;
|
||||
|
||||
@end
|
||||
|
||||
/**
|
||||
* Defines task operations such as pause, resume, cancel, and enqueue for all tasks.
|
||||
* All tasks are required to implement enqueue, which begins the task, and may optionally
|
||||
* implement pause, resume, and cancel, which operate on the task to pause, resume, and cancel
|
||||
* operations.
|
||||
*/
|
||||
@protocol FIRStorageTaskManagement<NSObject>
|
||||
|
||||
@required
|
||||
/**
|
||||
* Prepares a task and begins execution.
|
||||
*/
|
||||
- (void)enqueue;
|
||||
|
||||
@optional
|
||||
/**
|
||||
* Pauses a task currently in progress.
|
||||
*/
|
||||
- (void)pause;
|
||||
|
||||
/**
|
||||
* Cancels a task currently in progress.
|
||||
*/
|
||||
- (void)cancel;
|
||||
|
||||
/**
|
||||
* Resumes a task that is paused.
|
||||
*/
|
||||
- (void)resume;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@ -1,59 +0,0 @@
|
||||
// clang-format off
|
||||
/** @file FIRStorageTaskSnapshot.h
|
||||
@brief Firebase SDK
|
||||
@copyright Copyright 2016 Google Inc.
|
||||
@remarks Use of this SDK is subject to the Google APIs Terms of Service:
|
||||
https://developers.google.com/terms/
|
||||
*/
|
||||
// clang-format on
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#import "FIRStorageConstants.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@class FIRStorageMetadata;
|
||||
@class FIRStorageReference;
|
||||
@class FIRStorageTask;
|
||||
|
||||
/**
|
||||
* FIRStorageTaskSnapshot represents an immutable view of a task.
|
||||
* A Snapshot contains a task, storage reference, metadata (if it exists),
|
||||
* progress, and an error (if one occurred).
|
||||
*/
|
||||
@interface FIRStorageTaskSnapshot : NSObject
|
||||
|
||||
/**
|
||||
* Subclass of FIRStorageTask this snapshot represents.
|
||||
*/
|
||||
@property(readonly, copy, nonatomic) __kindof FIRStorageTask *task;
|
||||
|
||||
/**
|
||||
* Metadata returned by the task, or nil if no metadata returned.
|
||||
*/
|
||||
@property(readonly, copy, nonatomic, nullable) FIRStorageMetadata *metadata;
|
||||
|
||||
/**
|
||||
* FIRStorageReference this task is operates on.
|
||||
*/
|
||||
@property(readonly, copy, nonatomic) FIRStorageReference *reference;
|
||||
|
||||
/**
|
||||
* NSProgress object which tracks the progess of an upload or download.
|
||||
*/
|
||||
@property(readonly, strong, nonatomic, nullable) NSProgress *progress;
|
||||
|
||||
/**
|
||||
* Error during task execution, or nil if no error occurred.
|
||||
*/
|
||||
@property(readonly, copy, nonatomic, nullable) NSError *error;
|
||||
|
||||
/**
|
||||
* Status of the task.
|
||||
*/
|
||||
@property(readonly, nonatomic) FIRStorageTaskStatus status;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@ -1,30 +0,0 @@
|
||||
// clang-format off
|
||||
/** @file FIRStorageUploadTask.h
|
||||
@brief Firebase SDK
|
||||
@copyright Copyright 2016 Google Inc.
|
||||
@remarks Use of this SDK is subject to the Google APIs Terms of Service:
|
||||
https://developers.google.com/terms/
|
||||
*/
|
||||
// clang-format on
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#import "FIRStorageObservableTask.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/**
|
||||
* FIRStorageUploadTask implements resumable uploads to a file in Firebase Storage.
|
||||
* Uploads can be returned on completion with a completion callback, and can be monitored
|
||||
* by attaching observers, or controlled by calling FIRStorageTask#pause, FIRStorageTask#resume,
|
||||
* or FIRStorageTask#cancel.
|
||||
* Uploads can take NSData in memory, or an NSURL to a file on disk.
|
||||
* Uploads are performed on a background queue, and callbacks are raised on the developer
|
||||
* specified callbackQueue in FIRStorage, or the main queue if left unspecified.
|
||||
* Currently all uploads must be initiated and managed on the main queue.
|
||||
*/
|
||||
@interface FIRStorageUploadTask : FIRStorageObservableTask<FIRStorageTaskManagement>
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@ -1,21 +0,0 @@
|
||||
// clang-format off
|
||||
/** @file FirebaseStorage.m
|
||||
@brief Firebase SDK
|
||||
@copyright Copyright 2016 Google Inc.
|
||||
@remarks Use of this SDK is subject to the Google APIs Terms of Service:
|
||||
https://developers.google.com/terms/
|
||||
*/
|
||||
// clang-format on
|
||||
|
||||
#import "FIRStorage.h"
|
||||
#import "FIRStorageConstants.h"
|
||||
#import "FIRStorageDownloadTask.h"
|
||||
#import "FIRStorageMetadata.h"
|
||||
#import "FIRStorageObservableTask.h"
|
||||
#import "FIRStorageReference.h"
|
||||
#import "FIRStorageTask.h"
|
||||
#import "FIRStorageTaskSnapshot.h"
|
||||
#import "FIRStorageUploadTask.h"
|
||||
|
||||
//! Project version string for FirebaseStorage.
|
||||
FOUNDATION_EXPORT const unsigned char *const FirebaseStorageVersionString;
|
||||
@ -1,18 +0,0 @@
|
||||
framework module FirebaseStorage {
|
||||
|
||||
export *
|
||||
|
||||
umbrella header "FirebaseStorage.h"
|
||||
|
||||
header "FIRStorage.h"
|
||||
header "FIRStorageConstants.h"
|
||||
header "FIRStorageDownloadTask.h"
|
||||
header "FIRStorageMetadata.h"
|
||||
header "FIRStorageObservableTask.h"
|
||||
header "FIRStorageReference.h"
|
||||
header "FIRStorageTask.h"
|
||||
header "FIRStorageTaskSnapshot.h"
|
||||
header "FIRStorageUploadTask.h"
|
||||
|
||||
link framework "MobileCoreServices"
|
||||
}
|
||||
52
Pods/Manifest.lock
generated
52
Pods/Manifest.lock
generated
@ -1,7 +1,7 @@
|
||||
PODS:
|
||||
- AeroGearHttp (0.6.0)
|
||||
- AeroGearOAuth2 (0.5.1):
|
||||
- AeroGearHttp
|
||||
- AeroGearHttp (0.7.0)
|
||||
- AeroGearOAuth2 (0.7.0):
|
||||
- AeroGearHttp (= 0.7.0)
|
||||
- AFNetworking (2.6.3):
|
||||
- AFNetworking/NSURLConnection (= 2.6.3)
|
||||
- AFNetworking/NSURLSession (= 2.6.3)
|
||||
@ -37,25 +37,25 @@ PODS:
|
||||
- BSImagePicker (2.3.0):
|
||||
- BSGridCollectionViewLayout (~> 1.1)
|
||||
- UIImageViewModeScaleAspect (~> 1.3)
|
||||
- FBSDKCoreKit (4.14.0):
|
||||
- FBSDKCoreKit (4.15.0):
|
||||
- Bolts (~> 1.7)
|
||||
- FBSDKLoginKit (4.14.0):
|
||||
- FBSDKLoginKit (4.15.0):
|
||||
- FBSDKCoreKit
|
||||
- FBSDKShareKit (4.14.0):
|
||||
- FBSDKShareKit (4.15.0):
|
||||
- FBSDKCoreKit
|
||||
- Firebase (3.4.0):
|
||||
- Firebase/Core (= 3.4.0)
|
||||
- Firebase/Analytics (3.4.0):
|
||||
- Firebase (3.5.2):
|
||||
- Firebase/Core (= 3.5.2)
|
||||
- Firebase/Analytics (3.5.2):
|
||||
- FirebaseAnalytics (~> 3.3)
|
||||
- Firebase/Core (3.4.0):
|
||||
- Firebase/Core (3.5.2):
|
||||
- Firebase/Analytics
|
||||
- Firebase/Database (3.4.0):
|
||||
- Firebase/Database (3.5.2):
|
||||
- Firebase/Analytics
|
||||
- FirebaseDatabase (= 3.0.2)
|
||||
- Firebase/Storage (3.4.0):
|
||||
- Firebase/Storage (3.5.2):
|
||||
- Firebase/Analytics
|
||||
- FirebaseStorage (= 1.0.2)
|
||||
- FirebaseAnalytics (3.3.0):
|
||||
- FirebaseStorage (= 1.0.3)
|
||||
- FirebaseAnalytics (3.3.1):
|
||||
- FirebaseInstanceID (~> 1.0)
|
||||
- GoogleInterchangeUtilities (~> 1.2)
|
||||
- GoogleSymbolUtilities (~> 1.1)
|
||||
@ -68,8 +68,8 @@ PODS:
|
||||
- FirebaseDatabase (3.0.2):
|
||||
- FirebaseAnalytics (~> 3.2)
|
||||
- FirebaseInstanceID (1.0.8)
|
||||
- FirebaseStorage (1.0.2):
|
||||
- FirebaseAnalytics (~> 3.2)
|
||||
- FirebaseStorage (1.0.3):
|
||||
- FirebaseAnalytics (~> 3.3)
|
||||
- GoogleNetworkingUtilities (~> 1.2)
|
||||
- GDataXML-HTML (1.3.0)
|
||||
- GoogleInterchangeUtilities (1.2.1):
|
||||
@ -121,23 +121,23 @@ DEPENDENCIES:
|
||||
- TYMActivityIndicatorView
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
AeroGearHttp: e958f301cc2d1c7fbfd4b61af187ea3490040a48
|
||||
AeroGearOAuth2: 6f29d3fac8b78a0ff6d51b04c4ba1a02baed2e52
|
||||
AeroGearHttp: 4660c8bf5b56cd00a3b75d7c5ecf94774469df5c
|
||||
AeroGearOAuth2: de4218f60a6228d6cdcf1761277fe8af1115600a
|
||||
AFNetworking: cb8d14a848e831097108418f5d49217339d4eb60
|
||||
Alamofire: 01a82e2f6c0f860ade35534c8dd88be61bdef40c
|
||||
Alamofire-SwiftyJSON: 5812bb37accc36897cc2f2dabb070d8ebcd7ac98
|
||||
Bolts: 8a7995239dbe724f9cba2248b766d48b7ebdd322
|
||||
BSGridCollectionViewLayout: d7304dcb35c6b3b4420c527e9f9b77ff322250f3
|
||||
BSImagePicker: 591b28ce4994c44cbc4ac896717c1db9f9fadd18
|
||||
FBSDKCoreKit: 6e020b5db0b5bd1e01f5fb0902131befd129a502
|
||||
FBSDKLoginKit: da563567a108050ef83739c8c8c001ee9e25fa13
|
||||
FBSDKShareKit: e8e5d4ccef69b41132fe33acda26db1e33143e33
|
||||
Firebase: 754562547af419cc2f4b15247fee419081924bc2
|
||||
FirebaseAnalytics: 228be2991cb28efb96cdafc4d62f64680e615c69
|
||||
FBSDKCoreKit: 6680cbd33a4243d80700f182d0af36b3fa7f3118
|
||||
FBSDKLoginKit: 96d9b70b5784490f02ab86119e542a1f182017a8
|
||||
FBSDKShareKit: 06ef20cb2f16828ca4b20055333313dd445de362
|
||||
Firebase: 94e63112efcad75226c0356a8f3032397b8547c9
|
||||
FirebaseAnalytics: d968d4d5f6aeb795cd64144337bcd233e530efc6
|
||||
FirebaseAuth: 26fd291c3b552fc9658420b867520d5ae080421c
|
||||
FirebaseDatabase: 59bea2e7dfd81b3b8b2f8e396caf1a52c2ced6f7
|
||||
FirebaseInstanceID: ba1e640935235e5fac39dfa816fe7660e72e1a8a
|
||||
FirebaseStorage: fa2a87dee81f682f553af6839daa37a750e65f6a
|
||||
FirebaseStorage: 3992817bf405f5c1a4f8349678d22724cd0ef509
|
||||
GDataXML-HTML: 7adc03668cab35c288f1dbb8929a179f0fece898
|
||||
GoogleInterchangeUtilities: def8415a862effc67d549d5b5b0b9c7a2f97d4de
|
||||
GoogleNetworkingUtilities: 3e83269048cfb498dc7ec83ab36813360965c74f
|
||||
@ -152,6 +152,6 @@ SPEC CHECKSUMS:
|
||||
TYMActivityIndicatorView: ad816387ebd5952c376af129218722733044148b
|
||||
UIImageViewModeScaleAspect: 11a790a0b9d248a13dc63e3a78991f1463b6d84e
|
||||
|
||||
PODFILE CHECKSUM: 3b36a7c734809ee54f4ecf0055d9910a9279d555
|
||||
PODFILE CHECKSUM: d5879f9153df4c398c04aed34c686baebf1eeafb
|
||||
|
||||
COCOAPODS: 1.0.0
|
||||
COCOAPODS: 1.0.1
|
||||
|
||||
5650
Pods/Pods.xcodeproj/project.pbxproj
generated
5650
Pods/Pods.xcodeproj/project.pbxproj
generated
File diff suppressed because it is too large
Load Diff
@ -15,7 +15,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.6.0</string>
|
||||
<string>0.7.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
|
||||
@ -15,7 +15,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.5.1</string>
|
||||
<string>0.7.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
|
||||
@ -15,7 +15,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>4.14.0</string>
|
||||
<string>4.15.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
|
||||
@ -15,7 +15,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>4.14.0</string>
|
||||
<string>4.15.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
|
||||
@ -15,7 +15,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>4.14.0</string>
|
||||
<string>4.15.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
|
||||
@ -646,7 +646,7 @@ Copyright 2016 Google
|
||||
|
||||
## FirebaseStorage
|
||||
|
||||
Copyright 2016 Google Inc.
|
||||
Copyright 2016 Google
|
||||
|
||||
## GDataXML-HTML
|
||||
|
||||
|
||||
@ -721,7 +721,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
</dict>
|
||||
<dict>
|
||||
<key>FooterText</key>
|
||||
<string>Copyright 2016 Google Inc.</string>
|
||||
<string>Copyright 2016 Google</string>
|
||||
<key>Title</key>
|
||||
<string>FirebaseStorage</string>
|
||||
<key>Type</key>
|
||||
|
||||
@ -48,8 +48,8 @@ EOM
|
||||
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
|
||||
;;
|
||||
*.xib)
|
||||
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT}"
|
||||
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}"
|
||||
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}"
|
||||
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
|
||||
;;
|
||||
*.framework)
|
||||
echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
EMBEDDED_CONTENT_CONTAINS_SWIFT = YES
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearHttp" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearOAuth2" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/BSGridCollectionViewLayout" "$PODS_CONFIGURATION_BUILD_DIR/BSImagePicker" "$PODS_CONFIGURATION_BUILD_DIR/Bolts" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKCoreKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKLoginKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKShareKit" "$PODS_CONFIGURATION_BUILD_DIR/GDataXML-HTML" "$PODS_CONFIGURATION_BUILD_DIR/Locksmith" "$PODS_CONFIGURATION_BUILD_DIR/OAuthSwift" "$PODS_CONFIGURATION_BUILD_DIR/PicoKit" "$PODS_CONFIGURATION_BUILD_DIR/SWRevealViewController" "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/TYMActivityIndicatorView" "$PODS_CONFIGURATION_BUILD_DIR/UIImageViewModeScaleAspect" "${PODS_ROOT}/FirebaseAnalytics/Frameworks/frameworks" "${PODS_ROOT}/FirebaseAuth/Frameworks/frameworks" "${PODS_ROOT}/FirebaseDatabase/Frameworks" "${PODS_ROOT}/FirebaseInstanceID/Frameworks/frameworks" "${PODS_ROOT}/FirebaseStorage/Frameworks" "${PODS_ROOT}/GoogleInterchangeUtilities/Frameworks" "${PODS_ROOT}/GoogleNetworkingUtilities/Frameworks" "${PODS_ROOT}/GoogleParsingUtilities/Frameworks" "${PODS_ROOT}/GoogleSymbolUtilities/Frameworks" "${PODS_ROOT}/GoogleUtilities/Frameworks"
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearHttp" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearOAuth2" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/BSGridCollectionViewLayout" "$PODS_CONFIGURATION_BUILD_DIR/BSImagePicker" "$PODS_CONFIGURATION_BUILD_DIR/Bolts" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKCoreKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKLoginKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKShareKit" "$PODS_CONFIGURATION_BUILD_DIR/GDataXML-HTML" "$PODS_CONFIGURATION_BUILD_DIR/Locksmith" "$PODS_CONFIGURATION_BUILD_DIR/OAuthSwift" "$PODS_CONFIGURATION_BUILD_DIR/PicoKit" "$PODS_CONFIGURATION_BUILD_DIR/SWRevealViewController" "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/TYMActivityIndicatorView" "$PODS_CONFIGURATION_BUILD_DIR/UIImageViewModeScaleAspect" "${PODS_ROOT}/FirebaseAnalytics/Frameworks/frameworks" "${PODS_ROOT}/FirebaseAuth/Frameworks/frameworks" "${PODS_ROOT}/FirebaseDatabase/Frameworks" "${PODS_ROOT}/FirebaseInstanceID/Frameworks/frameworks" "${PODS_ROOT}/FirebaseStorage/Frameworks/frameworks" "${PODS_ROOT}/GoogleInterchangeUtilities/Frameworks" "${PODS_ROOT}/GoogleNetworkingUtilities/Frameworks" "${PODS_ROOT}/GoogleParsingUtilities/Frameworks" "${PODS_ROOT}/GoogleSymbolUtilities/Frameworks" "${PODS_ROOT}/GoogleUtilities/Frameworks"
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
HEADER_SEARCH_PATHS = $(inherited) ${PODS_ROOT}/Firebase/Analytics/Sources $(SDKROOT)/usr/include/libxml2 $(PODS_ROOT)/GDataXML-HTML/libxml $(SDKROOT)/usr/include/libxml2 $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseAnalytics" "${PODS_ROOT}/Headers/Public/FirebaseAuth" "${PODS_ROOT}/Headers/Public/FirebaseDatabase" "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public/FirebaseStorage" "${PODS_ROOT}/Headers/Public/GoogleInterchangeUtilities" "${PODS_ROOT}/Headers/Public/GoogleNetworkingUtilities" "${PODS_ROOT}/Headers/Public/GoogleParsingUtilities" "${PODS_ROOT}/Headers/Public/GoogleSymbolUtilities" "${PODS_ROOT}/Headers/Public/GoogleUtilities"
|
||||
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
EMBEDDED_CONTENT_CONTAINS_SWIFT = YES
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearHttp" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearOAuth2" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/BSGridCollectionViewLayout" "$PODS_CONFIGURATION_BUILD_DIR/BSImagePicker" "$PODS_CONFIGURATION_BUILD_DIR/Bolts" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKCoreKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKLoginKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKShareKit" "$PODS_CONFIGURATION_BUILD_DIR/GDataXML-HTML" "$PODS_CONFIGURATION_BUILD_DIR/Locksmith" "$PODS_CONFIGURATION_BUILD_DIR/OAuthSwift" "$PODS_CONFIGURATION_BUILD_DIR/PicoKit" "$PODS_CONFIGURATION_BUILD_DIR/SWRevealViewController" "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/TYMActivityIndicatorView" "$PODS_CONFIGURATION_BUILD_DIR/UIImageViewModeScaleAspect" "${PODS_ROOT}/FirebaseAnalytics/Frameworks/frameworks" "${PODS_ROOT}/FirebaseAuth/Frameworks/frameworks" "${PODS_ROOT}/FirebaseDatabase/Frameworks" "${PODS_ROOT}/FirebaseInstanceID/Frameworks/frameworks" "${PODS_ROOT}/FirebaseStorage/Frameworks" "${PODS_ROOT}/GoogleInterchangeUtilities/Frameworks" "${PODS_ROOT}/GoogleNetworkingUtilities/Frameworks" "${PODS_ROOT}/GoogleParsingUtilities/Frameworks" "${PODS_ROOT}/GoogleSymbolUtilities/Frameworks" "${PODS_ROOT}/GoogleUtilities/Frameworks"
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearHttp" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearOAuth2" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/BSGridCollectionViewLayout" "$PODS_CONFIGURATION_BUILD_DIR/BSImagePicker" "$PODS_CONFIGURATION_BUILD_DIR/Bolts" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKCoreKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKLoginKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKShareKit" "$PODS_CONFIGURATION_BUILD_DIR/GDataXML-HTML" "$PODS_CONFIGURATION_BUILD_DIR/Locksmith" "$PODS_CONFIGURATION_BUILD_DIR/OAuthSwift" "$PODS_CONFIGURATION_BUILD_DIR/PicoKit" "$PODS_CONFIGURATION_BUILD_DIR/SWRevealViewController" "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/TYMActivityIndicatorView" "$PODS_CONFIGURATION_BUILD_DIR/UIImageViewModeScaleAspect" "${PODS_ROOT}/FirebaseAnalytics/Frameworks/frameworks" "${PODS_ROOT}/FirebaseAuth/Frameworks/frameworks" "${PODS_ROOT}/FirebaseDatabase/Frameworks" "${PODS_ROOT}/FirebaseInstanceID/Frameworks/frameworks" "${PODS_ROOT}/FirebaseStorage/Frameworks/frameworks" "${PODS_ROOT}/GoogleInterchangeUtilities/Frameworks" "${PODS_ROOT}/GoogleNetworkingUtilities/Frameworks" "${PODS_ROOT}/GoogleParsingUtilities/Frameworks" "${PODS_ROOT}/GoogleSymbolUtilities/Frameworks" "${PODS_ROOT}/GoogleUtilities/Frameworks"
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
HEADER_SEARCH_PATHS = $(inherited) ${PODS_ROOT}/Firebase/Analytics/Sources $(SDKROOT)/usr/include/libxml2 $(PODS_ROOT)/GDataXML-HTML/libxml $(SDKROOT)/usr/include/libxml2 $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseAnalytics" "${PODS_ROOT}/Headers/Public/FirebaseAuth" "${PODS_ROOT}/Headers/Public/FirebaseDatabase" "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public/FirebaseStorage" "${PODS_ROOT}/Headers/Public/GoogleInterchangeUtilities" "${PODS_ROOT}/Headers/Public/GoogleNetworkingUtilities" "${PODS_ROOT}/Headers/Public/GoogleParsingUtilities" "${PODS_ROOT}/Headers/Public/GoogleSymbolUtilities" "${PODS_ROOT}/Headers/Public/GoogleUtilities"
|
||||
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
|
||||
|
||||
@ -646,7 +646,7 @@ Copyright 2016 Google
|
||||
|
||||
## FirebaseStorage
|
||||
|
||||
Copyright 2016 Google Inc.
|
||||
Copyright 2016 Google
|
||||
|
||||
## GDataXML-HTML
|
||||
|
||||
|
||||
@ -721,7 +721,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
</dict>
|
||||
<dict>
|
||||
<key>FooterText</key>
|
||||
<string>Copyright 2016 Google Inc.</string>
|
||||
<string>Copyright 2016 Google</string>
|
||||
<key>Title</key>
|
||||
<string>FirebaseStorage</string>
|
||||
<key>Type</key>
|
||||
|
||||
@ -48,8 +48,8 @@ EOM
|
||||
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
|
||||
;;
|
||||
*.xib)
|
||||
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT}"
|
||||
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}"
|
||||
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}"
|
||||
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
|
||||
;;
|
||||
*.framework)
|
||||
echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
EMBEDDED_CONTENT_CONTAINS_SWIFT = YES
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearHttp" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearOAuth2" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/BSGridCollectionViewLayout" "$PODS_CONFIGURATION_BUILD_DIR/BSImagePicker" "$PODS_CONFIGURATION_BUILD_DIR/Bolts" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKCoreKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKLoginKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKShareKit" "$PODS_CONFIGURATION_BUILD_DIR/GDataXML-HTML" "$PODS_CONFIGURATION_BUILD_DIR/Locksmith" "$PODS_CONFIGURATION_BUILD_DIR/OAuthSwift" "$PODS_CONFIGURATION_BUILD_DIR/PicoKit" "$PODS_CONFIGURATION_BUILD_DIR/SWRevealViewController" "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/TYMActivityIndicatorView" "$PODS_CONFIGURATION_BUILD_DIR/UIImageViewModeScaleAspect" "${PODS_ROOT}/FirebaseAnalytics/Frameworks/frameworks" "${PODS_ROOT}/FirebaseAuth/Frameworks/frameworks" "${PODS_ROOT}/FirebaseDatabase/Frameworks" "${PODS_ROOT}/FirebaseInstanceID/Frameworks/frameworks" "${PODS_ROOT}/FirebaseStorage/Frameworks" "${PODS_ROOT}/GoogleInterchangeUtilities/Frameworks" "${PODS_ROOT}/GoogleNetworkingUtilities/Frameworks" "${PODS_ROOT}/GoogleParsingUtilities/Frameworks" "${PODS_ROOT}/GoogleSymbolUtilities/Frameworks" "${PODS_ROOT}/GoogleUtilities/Frameworks"
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearHttp" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearOAuth2" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/BSGridCollectionViewLayout" "$PODS_CONFIGURATION_BUILD_DIR/BSImagePicker" "$PODS_CONFIGURATION_BUILD_DIR/Bolts" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKCoreKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKLoginKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKShareKit" "$PODS_CONFIGURATION_BUILD_DIR/GDataXML-HTML" "$PODS_CONFIGURATION_BUILD_DIR/Locksmith" "$PODS_CONFIGURATION_BUILD_DIR/OAuthSwift" "$PODS_CONFIGURATION_BUILD_DIR/PicoKit" "$PODS_CONFIGURATION_BUILD_DIR/SWRevealViewController" "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/TYMActivityIndicatorView" "$PODS_CONFIGURATION_BUILD_DIR/UIImageViewModeScaleAspect" "${PODS_ROOT}/FirebaseAnalytics/Frameworks/frameworks" "${PODS_ROOT}/FirebaseAuth/Frameworks/frameworks" "${PODS_ROOT}/FirebaseDatabase/Frameworks" "${PODS_ROOT}/FirebaseInstanceID/Frameworks/frameworks" "${PODS_ROOT}/FirebaseStorage/Frameworks/frameworks" "${PODS_ROOT}/GoogleInterchangeUtilities/Frameworks" "${PODS_ROOT}/GoogleNetworkingUtilities/Frameworks" "${PODS_ROOT}/GoogleParsingUtilities/Frameworks" "${PODS_ROOT}/GoogleSymbolUtilities/Frameworks" "${PODS_ROOT}/GoogleUtilities/Frameworks"
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
HEADER_SEARCH_PATHS = $(inherited) ${PODS_ROOT}/Firebase/Analytics/Sources $(SDKROOT)/usr/include/libxml2 $(PODS_ROOT)/GDataXML-HTML/libxml $(SDKROOT)/usr/include/libxml2 $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseAnalytics" "${PODS_ROOT}/Headers/Public/FirebaseAuth" "${PODS_ROOT}/Headers/Public/FirebaseDatabase" "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public/FirebaseStorage" "${PODS_ROOT}/Headers/Public/GoogleInterchangeUtilities" "${PODS_ROOT}/Headers/Public/GoogleNetworkingUtilities" "${PODS_ROOT}/Headers/Public/GoogleParsingUtilities" "${PODS_ROOT}/Headers/Public/GoogleSymbolUtilities" "${PODS_ROOT}/Headers/Public/GoogleUtilities"
|
||||
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
EMBEDDED_CONTENT_CONTAINS_SWIFT = YES
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearHttp" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearOAuth2" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/BSGridCollectionViewLayout" "$PODS_CONFIGURATION_BUILD_DIR/BSImagePicker" "$PODS_CONFIGURATION_BUILD_DIR/Bolts" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKCoreKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKLoginKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKShareKit" "$PODS_CONFIGURATION_BUILD_DIR/GDataXML-HTML" "$PODS_CONFIGURATION_BUILD_DIR/Locksmith" "$PODS_CONFIGURATION_BUILD_DIR/OAuthSwift" "$PODS_CONFIGURATION_BUILD_DIR/PicoKit" "$PODS_CONFIGURATION_BUILD_DIR/SWRevealViewController" "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/TYMActivityIndicatorView" "$PODS_CONFIGURATION_BUILD_DIR/UIImageViewModeScaleAspect" "${PODS_ROOT}/FirebaseAnalytics/Frameworks/frameworks" "${PODS_ROOT}/FirebaseAuth/Frameworks/frameworks" "${PODS_ROOT}/FirebaseDatabase/Frameworks" "${PODS_ROOT}/FirebaseInstanceID/Frameworks/frameworks" "${PODS_ROOT}/FirebaseStorage/Frameworks" "${PODS_ROOT}/GoogleInterchangeUtilities/Frameworks" "${PODS_ROOT}/GoogleNetworkingUtilities/Frameworks" "${PODS_ROOT}/GoogleParsingUtilities/Frameworks" "${PODS_ROOT}/GoogleSymbolUtilities/Frameworks" "${PODS_ROOT}/GoogleUtilities/Frameworks"
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearHttp" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearOAuth2" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/BSGridCollectionViewLayout" "$PODS_CONFIGURATION_BUILD_DIR/BSImagePicker" "$PODS_CONFIGURATION_BUILD_DIR/Bolts" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKCoreKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKLoginKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKShareKit" "$PODS_CONFIGURATION_BUILD_DIR/GDataXML-HTML" "$PODS_CONFIGURATION_BUILD_DIR/Locksmith" "$PODS_CONFIGURATION_BUILD_DIR/OAuthSwift" "$PODS_CONFIGURATION_BUILD_DIR/PicoKit" "$PODS_CONFIGURATION_BUILD_DIR/SWRevealViewController" "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/TYMActivityIndicatorView" "$PODS_CONFIGURATION_BUILD_DIR/UIImageViewModeScaleAspect" "${PODS_ROOT}/FirebaseAnalytics/Frameworks/frameworks" "${PODS_ROOT}/FirebaseAuth/Frameworks/frameworks" "${PODS_ROOT}/FirebaseDatabase/Frameworks" "${PODS_ROOT}/FirebaseInstanceID/Frameworks/frameworks" "${PODS_ROOT}/FirebaseStorage/Frameworks/frameworks" "${PODS_ROOT}/GoogleInterchangeUtilities/Frameworks" "${PODS_ROOT}/GoogleNetworkingUtilities/Frameworks" "${PODS_ROOT}/GoogleParsingUtilities/Frameworks" "${PODS_ROOT}/GoogleSymbolUtilities/Frameworks" "${PODS_ROOT}/GoogleUtilities/Frameworks"
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
HEADER_SEARCH_PATHS = $(inherited) ${PODS_ROOT}/Firebase/Analytics/Sources $(SDKROOT)/usr/include/libxml2 $(PODS_ROOT)/GDataXML-HTML/libxml $(SDKROOT)/usr/include/libxml2 $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseAnalytics" "${PODS_ROOT}/Headers/Public/FirebaseAuth" "${PODS_ROOT}/Headers/Public/FirebaseDatabase" "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public/FirebaseStorage" "${PODS_ROOT}/Headers/Public/GoogleInterchangeUtilities" "${PODS_ROOT}/Headers/Public/GoogleNetworkingUtilities" "${PODS_ROOT}/Headers/Public/GoogleParsingUtilities" "${PODS_ROOT}/Headers/Public/GoogleSymbolUtilities" "${PODS_ROOT}/Headers/Public/GoogleUtilities"
|
||||
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
|
||||
|
||||
@ -646,7 +646,7 @@ Copyright 2016 Google
|
||||
|
||||
## FirebaseStorage
|
||||
|
||||
Copyright 2016 Google Inc.
|
||||
Copyright 2016 Google
|
||||
|
||||
## GDataXML-HTML
|
||||
|
||||
|
||||
@ -721,7 +721,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
</dict>
|
||||
<dict>
|
||||
<key>FooterText</key>
|
||||
<string>Copyright 2016 Google Inc.</string>
|
||||
<string>Copyright 2016 Google</string>
|
||||
<key>Title</key>
|
||||
<string>FirebaseStorage</string>
|
||||
<key>Type</key>
|
||||
|
||||
@ -48,8 +48,8 @@ EOM
|
||||
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
|
||||
;;
|
||||
*.xib)
|
||||
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT}"
|
||||
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}"
|
||||
echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}"
|
||||
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
|
||||
;;
|
||||
*.framework)
|
||||
echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
EMBEDDED_CONTENT_CONTAINS_SWIFT = YES
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearHttp" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearOAuth2" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/BSGridCollectionViewLayout" "$PODS_CONFIGURATION_BUILD_DIR/BSImagePicker" "$PODS_CONFIGURATION_BUILD_DIR/Bolts" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKCoreKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKLoginKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKShareKit" "$PODS_CONFIGURATION_BUILD_DIR/GDataXML-HTML" "$PODS_CONFIGURATION_BUILD_DIR/Locksmith" "$PODS_CONFIGURATION_BUILD_DIR/OAuthSwift" "$PODS_CONFIGURATION_BUILD_DIR/PicoKit" "$PODS_CONFIGURATION_BUILD_DIR/SWRevealViewController" "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/TYMActivityIndicatorView" "$PODS_CONFIGURATION_BUILD_DIR/UIImageViewModeScaleAspect" "${PODS_ROOT}/FirebaseAnalytics/Frameworks/frameworks" "${PODS_ROOT}/FirebaseAuth/Frameworks/frameworks" "${PODS_ROOT}/FirebaseDatabase/Frameworks" "${PODS_ROOT}/FirebaseInstanceID/Frameworks/frameworks" "${PODS_ROOT}/FirebaseStorage/Frameworks" "${PODS_ROOT}/GoogleInterchangeUtilities/Frameworks" "${PODS_ROOT}/GoogleNetworkingUtilities/Frameworks" "${PODS_ROOT}/GoogleParsingUtilities/Frameworks" "${PODS_ROOT}/GoogleSymbolUtilities/Frameworks" "${PODS_ROOT}/GoogleUtilities/Frameworks"
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearHttp" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearOAuth2" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/BSGridCollectionViewLayout" "$PODS_CONFIGURATION_BUILD_DIR/BSImagePicker" "$PODS_CONFIGURATION_BUILD_DIR/Bolts" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKCoreKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKLoginKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKShareKit" "$PODS_CONFIGURATION_BUILD_DIR/GDataXML-HTML" "$PODS_CONFIGURATION_BUILD_DIR/Locksmith" "$PODS_CONFIGURATION_BUILD_DIR/OAuthSwift" "$PODS_CONFIGURATION_BUILD_DIR/PicoKit" "$PODS_CONFIGURATION_BUILD_DIR/SWRevealViewController" "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/TYMActivityIndicatorView" "$PODS_CONFIGURATION_BUILD_DIR/UIImageViewModeScaleAspect" "${PODS_ROOT}/FirebaseAnalytics/Frameworks/frameworks" "${PODS_ROOT}/FirebaseAuth/Frameworks/frameworks" "${PODS_ROOT}/FirebaseDatabase/Frameworks" "${PODS_ROOT}/FirebaseInstanceID/Frameworks/frameworks" "${PODS_ROOT}/FirebaseStorage/Frameworks/frameworks" "${PODS_ROOT}/GoogleInterchangeUtilities/Frameworks" "${PODS_ROOT}/GoogleNetworkingUtilities/Frameworks" "${PODS_ROOT}/GoogleParsingUtilities/Frameworks" "${PODS_ROOT}/GoogleSymbolUtilities/Frameworks" "${PODS_ROOT}/GoogleUtilities/Frameworks"
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
HEADER_SEARCH_PATHS = $(inherited) ${PODS_ROOT}/Firebase/Analytics/Sources $(SDKROOT)/usr/include/libxml2 $(PODS_ROOT)/GDataXML-HTML/libxml $(SDKROOT)/usr/include/libxml2 $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseAnalytics" "${PODS_ROOT}/Headers/Public/FirebaseAuth" "${PODS_ROOT}/Headers/Public/FirebaseDatabase" "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public/FirebaseStorage" "${PODS_ROOT}/Headers/Public/GoogleInterchangeUtilities" "${PODS_ROOT}/Headers/Public/GoogleNetworkingUtilities" "${PODS_ROOT}/Headers/Public/GoogleParsingUtilities" "${PODS_ROOT}/Headers/Public/GoogleSymbolUtilities" "${PODS_ROOT}/Headers/Public/GoogleUtilities"
|
||||
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
EMBEDDED_CONTENT_CONTAINS_SWIFT = YES
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearHttp" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearOAuth2" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/BSGridCollectionViewLayout" "$PODS_CONFIGURATION_BUILD_DIR/BSImagePicker" "$PODS_CONFIGURATION_BUILD_DIR/Bolts" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKCoreKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKLoginKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKShareKit" "$PODS_CONFIGURATION_BUILD_DIR/GDataXML-HTML" "$PODS_CONFIGURATION_BUILD_DIR/Locksmith" "$PODS_CONFIGURATION_BUILD_DIR/OAuthSwift" "$PODS_CONFIGURATION_BUILD_DIR/PicoKit" "$PODS_CONFIGURATION_BUILD_DIR/SWRevealViewController" "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/TYMActivityIndicatorView" "$PODS_CONFIGURATION_BUILD_DIR/UIImageViewModeScaleAspect" "${PODS_ROOT}/FirebaseAnalytics/Frameworks/frameworks" "${PODS_ROOT}/FirebaseAuth/Frameworks/frameworks" "${PODS_ROOT}/FirebaseDatabase/Frameworks" "${PODS_ROOT}/FirebaseInstanceID/Frameworks/frameworks" "${PODS_ROOT}/FirebaseStorage/Frameworks" "${PODS_ROOT}/GoogleInterchangeUtilities/Frameworks" "${PODS_ROOT}/GoogleNetworkingUtilities/Frameworks" "${PODS_ROOT}/GoogleParsingUtilities/Frameworks" "${PODS_ROOT}/GoogleSymbolUtilities/Frameworks" "${PODS_ROOT}/GoogleUtilities/Frameworks"
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/AFNetworking" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearHttp" "$PODS_CONFIGURATION_BUILD_DIR/AeroGearOAuth2" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire" "$PODS_CONFIGURATION_BUILD_DIR/Alamofire-SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/BSGridCollectionViewLayout" "$PODS_CONFIGURATION_BUILD_DIR/BSImagePicker" "$PODS_CONFIGURATION_BUILD_DIR/Bolts" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKCoreKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKLoginKit" "$PODS_CONFIGURATION_BUILD_DIR/FBSDKShareKit" "$PODS_CONFIGURATION_BUILD_DIR/GDataXML-HTML" "$PODS_CONFIGURATION_BUILD_DIR/Locksmith" "$PODS_CONFIGURATION_BUILD_DIR/OAuthSwift" "$PODS_CONFIGURATION_BUILD_DIR/PicoKit" "$PODS_CONFIGURATION_BUILD_DIR/SWRevealViewController" "$PODS_CONFIGURATION_BUILD_DIR/SwiftyJSON" "$PODS_CONFIGURATION_BUILD_DIR/TYMActivityIndicatorView" "$PODS_CONFIGURATION_BUILD_DIR/UIImageViewModeScaleAspect" "${PODS_ROOT}/FirebaseAnalytics/Frameworks/frameworks" "${PODS_ROOT}/FirebaseAuth/Frameworks/frameworks" "${PODS_ROOT}/FirebaseDatabase/Frameworks" "${PODS_ROOT}/FirebaseInstanceID/Frameworks/frameworks" "${PODS_ROOT}/FirebaseStorage/Frameworks/frameworks" "${PODS_ROOT}/GoogleInterchangeUtilities/Frameworks" "${PODS_ROOT}/GoogleNetworkingUtilities/Frameworks" "${PODS_ROOT}/GoogleParsingUtilities/Frameworks" "${PODS_ROOT}/GoogleSymbolUtilities/Frameworks" "${PODS_ROOT}/GoogleUtilities/Frameworks"
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||
HEADER_SEARCH_PATHS = $(inherited) ${PODS_ROOT}/Firebase/Analytics/Sources $(SDKROOT)/usr/include/libxml2 $(PODS_ROOT)/GDataXML-HTML/libxml $(SDKROOT)/usr/include/libxml2 $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseAnalytics" "${PODS_ROOT}/Headers/Public/FirebaseAuth" "${PODS_ROOT}/Headers/Public/FirebaseDatabase" "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public/FirebaseStorage" "${PODS_ROOT}/Headers/Public/GoogleInterchangeUtilities" "${PODS_ROOT}/Headers/Public/GoogleNetworkingUtilities" "${PODS_ROOT}/Headers/Public/GoogleParsingUtilities" "${PODS_ROOT}/Headers/Public/GoogleSymbolUtilities" "${PODS_ROOT}/Headers/Public/GoogleUtilities"
|
||||
LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
|
||||
|
||||
@ -45,6 +45,7 @@
|
||||
A87525ED0EE7D42D9A7708D8 /* Pods_Vendoo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 23ECC3C8465826BD6AC74A02 /* Pods_Vendoo.framework */; };
|
||||
B6FD38131D70EB27008FB41E /* AmazonWebServiceManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6FD38121D70EB27008FB41E /* AmazonWebServiceManager.swift */; };
|
||||
B6FD38151D71CF3E008FB41E /* FeedType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6FD38141D71CF3E008FB41E /* FeedType.swift */; };
|
||||
B6FD38171D720540008FB41E /* QuerySigner.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6FD38161D720540008FB41E /* QuerySigner.swift */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
@ -112,6 +113,7 @@
|
||||
A44ED233D6B5454EF92FEB08 /* Pods-Vendoo-VendooUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Vendoo-VendooUITests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Vendoo-VendooUITests/Pods-Vendoo-VendooUITests.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
B6FD38121D70EB27008FB41E /* AmazonWebServiceManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AmazonWebServiceManager.swift; sourceTree = "<group>"; };
|
||||
B6FD38141D71CF3E008FB41E /* FeedType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedType.swift; sourceTree = "<group>"; };
|
||||
B6FD38161D720540008FB41E /* QuerySigner.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = QuerySigner.swift; sourceTree = "<group>"; };
|
||||
B876489113F498AF1D2FD7E9 /* Pods_Vendoo_VendooTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Vendoo_VendooTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
E16BF843456476262BD075A1 /* Pods-Vendoo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Vendoo.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Vendoo/Pods-Vendoo.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
E25BEE3F146F38C121B72346 /* Pods-Vendoo-VendooTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Vendoo-VendooTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Vendoo-VendooTests/Pods-Vendoo-VendooTests.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
@ -342,6 +344,7 @@
|
||||
children = (
|
||||
B6FD38121D70EB27008FB41E /* AmazonWebServiceManager.swift */,
|
||||
B6FD38141D71CF3E008FB41E /* FeedType.swift */,
|
||||
B6FD38161D720540008FB41E /* QuerySigner.swift */,
|
||||
);
|
||||
name = AmazonServices;
|
||||
sourceTree = "<group>";
|
||||
@ -366,7 +369,7 @@
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 3E6CC37D1CF2A94B00E00A70 /* Build configuration list for PBXNativeTarget "Vendoo" */;
|
||||
buildPhases = (
|
||||
8D532FDF55F208776F1284EF /* 📦 Check Pods Manifest.lock */,
|
||||
8D532FDF55F208776F1284EF /* [CP] Check Pods Manifest.lock */,
|
||||
F467CC8AF77423C2B3AAB223 /* [CP] Check Pods Manifest.lock */,
|
||||
3E6CC34F1CF2A94B00E00A70 /* Sources */,
|
||||
3E6CC3501CF2A94B00E00A70 /* Frameworks */,
|
||||
@ -389,7 +392,7 @@
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 3E6CC3801CF2A94B00E00A70 /* Build configuration list for PBXNativeTarget "VendooTests" */;
|
||||
buildPhases = (
|
||||
2A9BA63E4CE4638416B6A19E /* 📦 Check Pods Manifest.lock */,
|
||||
2A9BA63E4CE4638416B6A19E /* [CP] Check Pods Manifest.lock */,
|
||||
9F58E69456F56F20E6643056 /* [CP] Check Pods Manifest.lock */,
|
||||
3E6CC3651CF2A94B00E00A70 /* Sources */,
|
||||
3E6CC3661CF2A94B00E00A70 /* Frameworks */,
|
||||
@ -413,7 +416,7 @@
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 3E6CC3831CF2A94B00E00A70 /* Build configuration list for PBXNativeTarget "VendooUITests" */;
|
||||
buildPhases = (
|
||||
BCA592620202EE5EBFCD3DCA /* 📦 Check Pods Manifest.lock */,
|
||||
BCA592620202EE5EBFCD3DCA /* [CP] Check Pods Manifest.lock */,
|
||||
99EF583910BFA3B053CE8591 /* [CP] Check Pods Manifest.lock */,
|
||||
3E6CC3701CF2A94B00E00A70 /* Sources */,
|
||||
3E6CC3711CF2A94B00E00A70 /* Frameworks */,
|
||||
@ -535,14 +538,14 @@
|
||||
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Vendoo/Pods-Vendoo-resources.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
2A9BA63E4CE4638416B6A19E /* 📦 Check Pods Manifest.lock */ = {
|
||||
2A9BA63E4CE4638416B6A19E /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "📦 Check Pods Manifest.lock";
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
@ -577,7 +580,7 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-VendooTests/Pods-VendooTests-resources.sh\"\n";
|
||||
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Vendoo-VendooTests/Pods-Vendoo-VendooTests-resources.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
7A9D276114F95F89DAFE1AF3 /* 📦 Embed Pods Frameworks */ = {
|
||||
@ -610,14 +613,14 @@
|
||||
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Vendoo-VendooUITests/Pods-Vendoo-VendooUITests-resources.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
8D532FDF55F208776F1284EF /* 📦 Check Pods Manifest.lock */ = {
|
||||
8D532FDF55F208776F1284EF /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "📦 Check Pods Manifest.lock";
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
@ -697,17 +700,17 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-VendooTests/Pods-VendooTests-frameworks.sh\"\n";
|
||||
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Vendoo-VendooTests/Pods-Vendoo-VendooTests-frameworks.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
BCA592620202EE5EBFCD3DCA /* 📦 Check Pods Manifest.lock */ = {
|
||||
BCA592620202EE5EBFCD3DCA /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "📦 Check Pods Manifest.lock";
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
@ -727,7 +730,7 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-VendooUITests/Pods-VendooUITests-resources.sh\"\n";
|
||||
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Vendoo-VendooUITests/Pods-Vendoo-VendooUITests-resources.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
F467CC8AF77423C2B3AAB223 /* [CP] Check Pods Manifest.lock */ = {
|
||||
@ -758,6 +761,7 @@
|
||||
3E1AA4351D0DD173005FCCBB /* SettingsViewController.swift in Sources */,
|
||||
3E0F76FC1D01B2D7004A0159 /* Listing.swift in Sources */,
|
||||
3E6CC3571CF2A94B00E00A70 /* AppDelegate.swift in Sources */,
|
||||
B6FD38171D720540008FB41E /* QuerySigner.swift in Sources */,
|
||||
3EC3251E1CF734C100626C48 /* NetworksTableViewController.swift in Sources */,
|
||||
3EC325201CF7C3AB00626C48 /* NetworkTableViewCell.swift in Sources */,
|
||||
3EC325261CF7E90000626C48 /* FacebookGraphAPIManager.swift in Sources */,
|
||||
@ -924,9 +928,27 @@
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"${PODS_ROOT}/Firebase/Analytics/Sources",
|
||||
"$(SDKROOT)/usr/include/libxml2",
|
||||
"$(PODS_ROOT)/GDataXML-HTML/libxml",
|
||||
"$(SDKROOT)/usr/include/libxml2",
|
||||
"\"${PODS_ROOT}/Headers/Public/Firebase\"",
|
||||
"\"${PODS_ROOT}/Headers/Public/FirebaseAnalytics\"",
|
||||
"\"${PODS_ROOT}/Headers/Public/FirebaseAuth\"",
|
||||
"\"${PODS_ROOT}/Headers/Public/FirebaseDatabase\"",
|
||||
"\"${PODS_ROOT}/Headers/Public/FirebaseInstanceID\"",
|
||||
"\"${PODS_ROOT}/Headers/Public/FirebaseStorage\"",
|
||||
"\"${PODS_ROOT}/Headers/Public/GoogleInterchangeUtilities\"",
|
||||
"\"${PODS_ROOT}/Headers/Public/GoogleNetworkingUtilities\"",
|
||||
"\"${PODS_ROOT}/Headers/Public/GoogleParsingUtilities\"",
|
||||
"\"${PODS_ROOT}/Headers/Public/GoogleSymbolUtilities\"",
|
||||
"\"${PODS_ROOT}/Headers/Public/GoogleUtilities\"",
|
||||
);
|
||||
INCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES = "\"Vendoo/**\" \"Pods/**\"";
|
||||
INFOPLIST_FILE = Vendoo/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
@ -1010,7 +1032,9 @@
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE = "";
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_DISABLE_SAFETY_CHECKS = NO;
|
||||
SWIFT_INCLUDE_PATHS = "";
|
||||
"SWIFT_INCLUDE_PATHS[arch=*]" = "";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Vendoo/Vendoo-Bridging-Header.h";
|
||||
USER_HEADER_SEARCH_PATHS = "\"Vendoo/**\" \"Pods/**\"";
|
||||
VALID_ARCHS = "arm64 armv7 armv7s";
|
||||
@ -1023,9 +1047,27 @@
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"${PODS_ROOT}/Firebase/Analytics/Sources",
|
||||
"$(SDKROOT)/usr/include/libxml2",
|
||||
"$(PODS_ROOT)/GDataXML-HTML/libxml",
|
||||
"$(SDKROOT)/usr/include/libxml2",
|
||||
"\"${PODS_ROOT}/Headers/Public/Firebase\"",
|
||||
"\"${PODS_ROOT}/Headers/Public/FirebaseAnalytics\"",
|
||||
"\"${PODS_ROOT}/Headers/Public/FirebaseAuth\"",
|
||||
"\"${PODS_ROOT}/Headers/Public/FirebaseDatabase\"",
|
||||
"\"${PODS_ROOT}/Headers/Public/FirebaseInstanceID\"",
|
||||
"\"${PODS_ROOT}/Headers/Public/FirebaseStorage\"",
|
||||
"\"${PODS_ROOT}/Headers/Public/GoogleInterchangeUtilities\"",
|
||||
"\"${PODS_ROOT}/Headers/Public/GoogleNetworkingUtilities\"",
|
||||
"\"${PODS_ROOT}/Headers/Public/GoogleParsingUtilities\"",
|
||||
"\"${PODS_ROOT}/Headers/Public/GoogleSymbolUtilities\"",
|
||||
"\"${PODS_ROOT}/Headers/Public/GoogleUtilities\"",
|
||||
);
|
||||
INCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES = "\"Vendoo/**\" \"Pods/**\"";
|
||||
INFOPLIST_FILE = Vendoo/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
@ -1109,6 +1151,7 @@
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE = "";
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_DISABLE_SAFETY_CHECKS = NO;
|
||||
SWIFT_INCLUDE_PATHS = "";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Vendoo/Vendoo-Bridging-Header.h";
|
||||
USER_HEADER_SEARCH_PATHS = "\"Vendoo/**\" \"Pods/**\"";
|
||||
|
||||
19
Vendoo/QuerySigner.swift
Normal file
19
Vendoo/QuerySigner.swift
Normal file
@ -0,0 +1,19 @@
|
||||
//
|
||||
// QuerySigner.swift
|
||||
// Vendoo
|
||||
//
|
||||
// Created by cole alban on 8/27/16.
|
||||
// Copyright © 2016 Okechi Onyeje. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
/*
|
||||
This class will be used to sign the HTTP query with a HmacSHA256
|
||||
string that will then be encoded in base64 for transmission.
|
||||
This 'signature' is required by the Amazon MWS Api to verify
|
||||
that requests are not corrupted in transit.
|
||||
*/
|
||||
class QuerySigner{
|
||||
|
||||
}
|
||||
@ -10,9 +10,8 @@
|
||||
#define Vendoo_Bridging_Header_h
|
||||
|
||||
|
||||
|
||||
#import <CommonCrypto/CommonHMAC.h>
|
||||
|
||||
//#import "EBayTradingServiceClient.h"
|
||||
|
||||
|
||||
#endif /* Vendoo_Bridging_Header_h */
|
||||
Loading…
x
Reference in New Issue
Block a user