Add Query string class

This commit is contained in:
Cole Alban 2016-08-28 16:25:31 -04:00
parent 2ccfb5f451
commit e65ddf71d3
69 changed files with 3423 additions and 4140 deletions

13
Podfile
View File

@ -1,6 +1,13 @@
# Uncomment this line to define a global platform for your project # Uncomment this line to define a global platform for your project
# platform :ios, '9.0' # 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 target 'Vendoo' do
# Comment this line if you're not using Swift and don't want to use dynamic frameworks # Comment this line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks! use_frameworks!
@ -22,8 +29,8 @@ use_frameworks!
pod 'TYMActivityIndicatorView' pod 'TYMActivityIndicatorView'
pod 'BSImagePicker', '~> 2.3' pod 'BSImagePicker', '~> 2.3'
pod 'SWRevealViewController' pod 'SWRevealViewController'
# pod 'CommonCrypto'
#'~> 1.1'
target 'VendooTests' do target 'VendooTests' do
# inherit! :search_paths # inherit! :search_paths
@ -36,4 +43,6 @@ use_frameworks!
# Pods for testing # Pods for testing
end end
end end

View File

@ -1,7 +1,7 @@
PODS: PODS:
- AeroGearHttp (0.6.0) - AeroGearHttp (0.7.0)
- AeroGearOAuth2 (0.5.1): - AeroGearOAuth2 (0.7.0):
- AeroGearHttp - AeroGearHttp (= 0.7.0)
- AFNetworking (2.6.3): - AFNetworking (2.6.3):
- AFNetworking/NSURLConnection (= 2.6.3) - AFNetworking/NSURLConnection (= 2.6.3)
- AFNetworking/NSURLSession (= 2.6.3) - AFNetworking/NSURLSession (= 2.6.3)
@ -37,25 +37,25 @@ PODS:
- BSImagePicker (2.3.0): - BSImagePicker (2.3.0):
- BSGridCollectionViewLayout (~> 1.1) - BSGridCollectionViewLayout (~> 1.1)
- UIImageViewModeScaleAspect (~> 1.3) - UIImageViewModeScaleAspect (~> 1.3)
- FBSDKCoreKit (4.14.0): - FBSDKCoreKit (4.15.0):
- Bolts (~> 1.7) - Bolts (~> 1.7)
- FBSDKLoginKit (4.14.0): - FBSDKLoginKit (4.15.0):
- FBSDKCoreKit - FBSDKCoreKit
- FBSDKShareKit (4.14.0): - FBSDKShareKit (4.15.0):
- FBSDKCoreKit - FBSDKCoreKit
- Firebase (3.4.0): - Firebase (3.5.2):
- Firebase/Core (= 3.4.0) - Firebase/Core (= 3.5.2)
- Firebase/Analytics (3.4.0): - Firebase/Analytics (3.5.2):
- FirebaseAnalytics (~> 3.3) - FirebaseAnalytics (~> 3.3)
- Firebase/Core (3.4.0): - Firebase/Core (3.5.2):
- Firebase/Analytics - Firebase/Analytics
- Firebase/Database (3.4.0): - Firebase/Database (3.5.2):
- Firebase/Analytics - Firebase/Analytics
- FirebaseDatabase (= 3.0.2) - FirebaseDatabase (= 3.0.2)
- Firebase/Storage (3.4.0): - Firebase/Storage (3.5.2):
- Firebase/Analytics - Firebase/Analytics
- FirebaseStorage (= 1.0.2) - FirebaseStorage (= 1.0.3)
- FirebaseAnalytics (3.3.0): - FirebaseAnalytics (3.3.1):
- FirebaseInstanceID (~> 1.0) - FirebaseInstanceID (~> 1.0)
- GoogleInterchangeUtilities (~> 1.2) - GoogleInterchangeUtilities (~> 1.2)
- GoogleSymbolUtilities (~> 1.1) - GoogleSymbolUtilities (~> 1.1)
@ -68,8 +68,8 @@ PODS:
- FirebaseDatabase (3.0.2): - FirebaseDatabase (3.0.2):
- FirebaseAnalytics (~> 3.2) - FirebaseAnalytics (~> 3.2)
- FirebaseInstanceID (1.0.8) - FirebaseInstanceID (1.0.8)
- FirebaseStorage (1.0.2): - FirebaseStorage (1.0.3):
- FirebaseAnalytics (~> 3.2) - FirebaseAnalytics (~> 3.3)
- GoogleNetworkingUtilities (~> 1.2) - GoogleNetworkingUtilities (~> 1.2)
- GDataXML-HTML (1.3.0) - GDataXML-HTML (1.3.0)
- GoogleInterchangeUtilities (1.2.1): - GoogleInterchangeUtilities (1.2.1):
@ -121,23 +121,23 @@ DEPENDENCIES:
- TYMActivityIndicatorView - TYMActivityIndicatorView
SPEC CHECKSUMS: SPEC CHECKSUMS:
AeroGearHttp: e958f301cc2d1c7fbfd4b61af187ea3490040a48 AeroGearHttp: 4660c8bf5b56cd00a3b75d7c5ecf94774469df5c
AeroGearOAuth2: 6f29d3fac8b78a0ff6d51b04c4ba1a02baed2e52 AeroGearOAuth2: de4218f60a6228d6cdcf1761277fe8af1115600a
AFNetworking: cb8d14a848e831097108418f5d49217339d4eb60 AFNetworking: cb8d14a848e831097108418f5d49217339d4eb60
Alamofire: 01a82e2f6c0f860ade35534c8dd88be61bdef40c Alamofire: 01a82e2f6c0f860ade35534c8dd88be61bdef40c
Alamofire-SwiftyJSON: 5812bb37accc36897cc2f2dabb070d8ebcd7ac98 Alamofire-SwiftyJSON: 5812bb37accc36897cc2f2dabb070d8ebcd7ac98
Bolts: 8a7995239dbe724f9cba2248b766d48b7ebdd322 Bolts: 8a7995239dbe724f9cba2248b766d48b7ebdd322
BSGridCollectionViewLayout: d7304dcb35c6b3b4420c527e9f9b77ff322250f3 BSGridCollectionViewLayout: d7304dcb35c6b3b4420c527e9f9b77ff322250f3
BSImagePicker: 591b28ce4994c44cbc4ac896717c1db9f9fadd18 BSImagePicker: 591b28ce4994c44cbc4ac896717c1db9f9fadd18
FBSDKCoreKit: 6e020b5db0b5bd1e01f5fb0902131befd129a502 FBSDKCoreKit: 6680cbd33a4243d80700f182d0af36b3fa7f3118
FBSDKLoginKit: da563567a108050ef83739c8c8c001ee9e25fa13 FBSDKLoginKit: 96d9b70b5784490f02ab86119e542a1f182017a8
FBSDKShareKit: e8e5d4ccef69b41132fe33acda26db1e33143e33 FBSDKShareKit: 06ef20cb2f16828ca4b20055333313dd445de362
Firebase: 754562547af419cc2f4b15247fee419081924bc2 Firebase: 94e63112efcad75226c0356a8f3032397b8547c9
FirebaseAnalytics: 228be2991cb28efb96cdafc4d62f64680e615c69 FirebaseAnalytics: d968d4d5f6aeb795cd64144337bcd233e530efc6
FirebaseAuth: 26fd291c3b552fc9658420b867520d5ae080421c FirebaseAuth: 26fd291c3b552fc9658420b867520d5ae080421c
FirebaseDatabase: 59bea2e7dfd81b3b8b2f8e396caf1a52c2ced6f7 FirebaseDatabase: 59bea2e7dfd81b3b8b2f8e396caf1a52c2ced6f7
FirebaseInstanceID: ba1e640935235e5fac39dfa816fe7660e72e1a8a FirebaseInstanceID: ba1e640935235e5fac39dfa816fe7660e72e1a8a
FirebaseStorage: fa2a87dee81f682f553af6839daa37a750e65f6a FirebaseStorage: 3992817bf405f5c1a4f8349678d22724cd0ef509
GDataXML-HTML: 7adc03668cab35c288f1dbb8929a179f0fece898 GDataXML-HTML: 7adc03668cab35c288f1dbb8929a179f0fece898
GoogleInterchangeUtilities: def8415a862effc67d549d5b5b0b9c7a2f97d4de GoogleInterchangeUtilities: def8415a862effc67d549d5b5b0b9c7a2f97d4de
GoogleNetworkingUtilities: 3e83269048cfb498dc7ec83ab36813360965c74f GoogleNetworkingUtilities: 3e83269048cfb498dc7ec83ab36813360965c74f
@ -152,6 +152,6 @@ SPEC CHECKSUMS:
TYMActivityIndicatorView: ad816387ebd5952c376af129218722733044148b TYMActivityIndicatorView: ad816387ebd5952c376af129218722733044148b
UIImageViewModeScaleAspect: 11a790a0b9d248a13dc63e3a78991f1463b6d84e UIImageViewModeScaleAspect: 11a790a0b9d248a13dc63e3a78991f1463b6d84e
PODFILE CHECKSUM: 3b36a7c734809ee54f4ecf0055d9910a9279d555 PODFILE CHECKSUM: d5879f9153df4c398c04aed34c686baebf1eeafb
COCOAPODS: 1.0.0 COCOAPODS: 1.0.1

View File

@ -544,7 +544,13 @@ public class Http {
if (destinationDirectory == nil) { // use 'default documents' directory if not set if (destinationDirectory == nil) { // use 'default documents' directory if not set
// use default documents directory // use default documents directory
let documentsDirectory = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0] as NSURL let documentsDirectory = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0] as NSURL
#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!) finalDestination = documentsDirectory.URLByAppendingPathComponent(filename!)
#endif
} else { } else {
// check that the directory exists // check that the directory exists
let path = destinationDirectory?.stringByAppendingPathComponent(filename!) let path = destinationDirectory?.stringByAppendingPathComponent(filename!)
@ -577,7 +583,8 @@ public class Http {
} }
// MARK: Utility methods // 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")) { if (baseURL == nil || url.hasPrefix("http")) {
return NSURL(string: url)! return NSURL(string: url)!
} }

View File

@ -65,7 +65,13 @@ public class HttpRequestSerializer: RequestSerializer {
var newUrl:String var newUrl:String
if (request.URL?.absoluteString != nil && parameters != nil) { if (request.URL?.absoluteString != nil && parameters != nil) {
let queryString = self.stringFromParameters(parameters!) let queryString = self.stringFromParameters(parameters!)
#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)" newUrl = "\(request.URL!.absoluteString)\(paramSeparator)\(queryString)"
#endif
request.URL = NSURL(string: newUrl)! request.URL = NSURL(string: newUrl)!
} }

View File

@ -1,6 +1,6 @@
# aerogear-ios-http [![Build Status](https://travis-ci.org/aerogear/aerogear-ios-http.png)](https://travis-ci.org/aerogear/aerogear-ios-http) # aerogear-ios-http [![Build Status](https://travis-ci.org/aerogear/aerogear-ios-http.png)](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. Thin layer to take care of your http requests working with NSURLSession.
Taking care of: Taking care of:
@ -11,7 +11,7 @@ Taking care of:
* Pluggable object serialization * Pluggable object serialization
* background processing support * background processing support
100% Swift 2.0. 100% Swift 2.X.
| | Project Info | | | 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: 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) ### 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' pod 'AeroGearHttp'

View File

@ -65,12 +65,12 @@ public class GoogleConfig: Config {
public init(clientId: String, scopes: [String], accountId: String? = nil, isOpenIDConnect: Bool = false) { public init(clientId: String, scopes: [String], accountId: String? = nil, isOpenIDConnect: Bool = false) {
let bundleString = NSBundle.mainBundle().bundleIdentifier ?? "google" let bundleString = NSBundle.mainBundle().bundleIdentifier ?? "google"
super.init(base: "https://accounts.google.com", super.init(base: "https://accounts.google.com",
authzEndpoint: "o/oauth2/auth", authzEndpoint: "o/oauth2/v2/auth",
redirectURL: "\(bundleString):/oauth2Callback", redirectURL: "\(bundleString):/oauth2Callback",
accessTokenEndpoint: "o/oauth2/token", accessTokenEndpoint: "o/oauth2/token",
clientId: clientId, clientId: clientId,
refreshTokenEndpoint: "o/oauth2/token", refreshTokenEndpoint: "o/oauth2/token",
revokeTokenEndpoint: "rest/revoke", revokeTokenEndpoint: "o/oauth2/revoke",
isOpenIDConnect: isOpenIDConnect, isOpenIDConnect: isOpenIDConnect,
userInfoEndpoint: isOpenIDConnect ? "https://www.googleapis.com/plus/v1/people/me/openIdConnect" : nil, userInfoEndpoint: isOpenIDConnect ? "https://www.googleapis.com/plus/v1/people/me/openIdConnect" : nil,
scopes: scopes, scopes: scopes,
@ -96,13 +96,13 @@ public class KeycloakConfig: Config {
let bundleString = NSBundle.mainBundle().bundleIdentifier ?? "keycloak" let bundleString = NSBundle.mainBundle().bundleIdentifier ?? "keycloak"
let defaulRealmName = String(format: "%@-realm", clientId) let defaulRealmName = String(format: "%@-realm", clientId)
let realm = realm ?? defaulRealmName let realm = realm ?? defaulRealmName
super.init(base: String(format: "%@/auth", host), super.init(base: "\(host)/auth",
authzEndpoint: String(format: "realms/%@/tokens/login", realm), authzEndpoint: "realms/\(realm)/protocol/openid-connect/auth",
redirectURL: "\(bundleString)://oauth2Callback", redirectURL: "\(bundleString)://oauth2Callback",
accessTokenEndpoint: String(format: "realms/%@/tokens/access/codes", realm), accessTokenEndpoint: "realms/\(realm)/protocol/openid-connect/token",
clientId: clientId, clientId: clientId,
refreshTokenEndpoint: String(format: "realms/%@/tokens/refresh", realm), refreshTokenEndpoint: "realms/\(realm)/protocol/openid-connect/token",
revokeTokenEndpoint: String(format: "realms/%@/tokens/logout", realm), revokeTokenEndpoint: "realms/\(realm)/protocol/openid-connect/logout",
isOpenIDConnect: isOpenIDConnect) isOpenIDConnect: isOpenIDConnect)
// Add openIdConnect scope // Add openIdConnect scope
if self.isOpenIDConnect { if self.isOpenIDConnect {
@ -139,7 +139,7 @@ public class AccountManager {
:returns: the OAuth2 module :returns: the OAuth2 module
*/ */
public class func addAccount(config: Config, moduleClass: OAuth2Module.Type) -> OAuth2Module { public class func addAccount(config: Config, moduleClass: OAuth2Module.Type) -> OAuth2Module {
var myModule:OAuth2Module var myModule: OAuth2Module
myModule = moduleClass.init(config: config) myModule = moduleClass.init(config: config)
// TODO check accountId is unique in modules list // TODO check accountId is unique in modules list
sharedInstance.modules[myModule.oauth2Session.accountId] = myModule sharedInstance.modules[myModule.oauth2Session.accountId] = myModule

View File

@ -103,7 +103,15 @@ public class Config {
*/ */
public var isWebView: Bool = false 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.baseURL = base
self.authzEndpoint = authzEndpoint self.authzEndpoint = authzEndpoint
self.redirectURL = redirectURL self.redirectURL = redirectURL

View File

@ -20,8 +20,7 @@ import Foundation
/** /**
Handy extensions to NSDate Handy extensions to NSDate
*/ */
extension NSDate extension NSDate {
{
/** /**
Initialize a date object using the given string. Initialize a date object using the given string.
@ -30,7 +29,7 @@ extension NSDate
:returns: the NSDate object. :returns: the NSDate object.
*/ */
public convenience init(dateString:String) { public convenience init(dateString: String) {
let dateStringFormatter = NSDateFormatter() let dateStringFormatter = NSDateFormatter()
dateStringFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss a" dateStringFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss a"
let d = dateStringFormatter.dateFromString(dateString) let d = dateStringFormatter.dateFromString(dateString)

View File

@ -78,9 +78,9 @@ public class FacebookOAuth2Module: OAuth2Module {
override public func revokeAccess(completionHandler: (AnyObject?, NSError?) -> Void) { override public func revokeAccess(completionHandler: (AnyObject?, NSError?) -> Void) {
// return if not yet initialized // return if not yet initialized
if (self.oauth2Session.accessToken == nil) { 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 http.request(.DELETE, path: config.revokeTokenEndpoint!, parameters: paramDict, completionHandler: { (response, error) in
@ -100,7 +100,7 @@ public class FacebookOAuth2Module: OAuth2Module {
:param: completionHandler A block object to be executed when the request operation finishes. :param: completionHandler A block object to be executed when the request operation finishes.
*/ */
override public func login(completionHandler: (AnyObject?, OpenIDClaim?, NSError?) -> Void) { 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) { if (error != nil) {
completionHandler(nil, nil, error) completionHandler(nil, nil, error)
return return

View File

@ -25,9 +25,9 @@ public class KeycloakOAuth2Module: OAuth2Module {
public override func revokeAccess(completionHandler: (AnyObject?, NSError?) -> Void) { public override func revokeAccess(completionHandler: (AnyObject?, NSError?) -> Void) {
// return if not yet initialized // return if not yet initialized
if (self.oauth2Session.accessToken == nil) { 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 http.request(.POST, path: config.revokeTokenEndpoint!, parameters: paramDict, completionHandler: { (response, error) in
if (error != nil) { if (error != nil) {
completionHandler(nil, error) completionHandler(nil, error)
@ -91,7 +91,7 @@ public class KeycloakOAuth2Module: OAuth2Module {
// in Keycloak refresh token get refreshed every time you use them // in Keycloak refresh token get refreshed every time you use them
self.oauth2Session.saveAccessToken(accessToken, refreshToken: refreshToken, accessTokenExpiration: exp, refreshTokenExpiration: expRefresh) self.oauth2Session.saveAccessToken(accessToken, refreshToken: refreshToken, accessTokenExpiration: exp, refreshTokenExpiration: expRefresh)
completionHandler(accessToken, nil); completionHandler(accessToken, nil)
} }
}) })
} }

View File

@ -50,7 +50,8 @@ public class OAuth2Module: AuthzModule {
var applicationLaunchNotificationObserver: NSObjectProtocol? var applicationLaunchNotificationObserver: NSObjectProtocol?
var applicationDidBecomeActiveNotificationObserver: NSObjectProtocol? var applicationDidBecomeActiveNotificationObserver: NSObjectProtocol?
var state: AuthorizationState var state: AuthorizationState
var webView: OAuth2WebViewController? public var webView: OAuth2WebViewController?
/** /**
Initialize an OAuth2 module. Initialize an OAuth2 module.
@ -107,7 +108,7 @@ public class OAuth2Module: AuthzModule {
// unregister // unregister
self.stopObserving() self.stopObserving()
// ..and update state // ..and update state
self.state = .AuthorizationStateUnknown; self.state = .AuthorizationStateUnknown
} }
}) })
@ -121,11 +122,17 @@ public class OAuth2Module: AuthzModule {
completionHandler(nil, error) completionHandler(nil, error)
return return
} }
#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) let url = NSURL(string:computedUrl.absoluteString + params)
#endif
if let url = url { if let url = url {
if self.webView != nil { if self.webView != nil {
self.webView!.targetURL = url self.webView!.targetURL = url
UIApplication.sharedApplication().keyWindow?.rootViewController?.presentViewController(self.webView!, animated: true, completion: nil) config.webViewHandler(self.webView!, completionHandler: completionHandler)
} else { } else {
UIApplication.sharedApplication().openURL(url) UIApplication.sharedApplication().openURL(url)
} }
@ -154,8 +161,12 @@ public class OAuth2Module: AuthzModule {
let accessToken: String = unwrappedResponse["access_token"] as! String let accessToken: String = unwrappedResponse["access_token"] as! String
let expiration = unwrappedResponse["expires_in"] as! NSNumber let expiration = unwrappedResponse["expires_in"] as! NSNumber
let exp: String = expiration.stringValue let exp: String = expiration.stringValue
var refreshToken = unwrappedRefreshToken
if let newRefreshToken = unwrappedResponse["refresh_token"] as? String {
refreshToken = newRefreshToken
}
self.oauth2Session.saveAccessToken(accessToken, refreshToken: unwrappedRefreshToken, accessTokenExpiration: exp, refreshTokenExpiration: nil) self.oauth2Session.saveAccessToken(accessToken, refreshToken: refreshToken, accessTokenExpiration: exp, refreshTokenExpiration: nil)
completionHandler(unwrappedResponse["access_token"], nil); completionHandler(unwrappedResponse["access_token"], nil);
} }
@ -205,7 +216,7 @@ public class OAuth2Module: AuthzModule {
public func requestAccess(completionHandler: (AnyObject?, NSError?) -> Void) { public func requestAccess(completionHandler: (AnyObject?, NSError?) -> Void) {
if (self.oauth2Session.accessToken != nil && self.oauth2Session.tokenIsNotExpired()) { if (self.oauth2Session.accessToken != nil && self.oauth2Session.tokenIsNotExpired()) {
// we already have a valid access token, nothing more to be done // 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()) { } else if (self.oauth2Session.refreshToken != nil && self.oauth2Session.refreshTokenIsNotExpired()) {
// need to refresh token // need to refresh token
self.refreshAccessToken(completionHandler) self.refreshAccessToken(completionHandler)
@ -262,9 +273,9 @@ public class OAuth2Module: AuthzModule {
public func revokeAccess(completionHandler: (AnyObject?, NSError?) -> Void) { public func revokeAccess(completionHandler: (AnyObject?, NSError?) -> Void) {
// return if not yet initialized // return if not yet initialized
if (self.oauth2Session.accessToken == nil) { 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 http.request(.POST, path: config.revokeTokenEndpoint!, parameters: paramDict, completionHandler: { (response, error) in
if (error != nil) { if (error != nil) {
@ -324,11 +335,11 @@ public class OAuth2Module: AuthzModule {
var parameters = [String: String]() var parameters = [String: String]()
if (queryString != nil) { if (queryString != nil) {
let parameterScanner: NSScanner = NSScanner(string: queryString!) let parameterScanner: NSScanner = NSScanner(string: queryString!)
var name:NSString? = nil var name: NSString? = nil
var value:NSString? = nil var value: NSString? = nil
while (parameterScanner.atEnd != true) { while (parameterScanner.atEnd != true) {
name = nil; name = nil
parameterScanner.scanUpToString("=", intoString: &name) parameterScanner.scanUpToString("=", intoString: &name)
parameterScanner.scanString("=", intoString:nil) parameterScanner.scanString("=", intoString:nil)
@ -342,7 +353,7 @@ public class OAuth2Module: AuthzModule {
} }
} }
return parameters; return parameters
} }
deinit { deinit {
@ -353,7 +364,7 @@ public class OAuth2Module: AuthzModule {
// clear all observers // clear all observers
if (applicationLaunchNotificationObserver != nil) { if (applicationLaunchNotificationObserver != nil) {
NSNotificationCenter.defaultCenter().removeObserver(applicationLaunchNotificationObserver!) NSNotificationCenter.defaultCenter().removeObserver(applicationLaunchNotificationObserver!)
self.applicationLaunchNotificationObserver = nil; self.applicationLaunchNotificationObserver = nil
} }
if (applicationDidBecomeActiveNotificationObserver != nil) { if (applicationDidBecomeActiveNotificationObserver != nil) {

View File

@ -22,14 +22,14 @@ 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. rather than an external browser approach.
*/ */
class OAuth2WebViewController: UIViewController, UIWebViewDelegate { public class OAuth2WebViewController: UIViewController, UIWebViewDelegate {
/// Login URL for OAuth. /// Login URL for OAuth.
var targetURL : NSURL = NSURL() var targetURL: NSURL = NSURL()
/// WebView intance used to load login page. /// WebView intance used to load login page.
var webView : UIWebView = UIWebView() var webView: UIWebView = UIWebView()
/// Overrride of viewDidLoad to load the login page. /// Override of viewDidLoad to load the login page.
override internal func viewDidLoad() { override public func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
webView.frame = UIScreen.mainScreen().applicationFrame webView.frame = UIScreen.mainScreen().applicationFrame
webView.delegate = self webView.delegate = self
@ -37,12 +37,12 @@ class OAuth2WebViewController: UIViewController, UIWebViewDelegate {
loadAddressURL() loadAddressURL()
} }
override func viewDidLayoutSubviews() { override public func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews() super.viewDidLayoutSubviews()
self.webView.frame = self.view.bounds self.webView.frame = self.view.bounds
} }
override internal func didReceiveMemoryWarning() { override public func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning() super.didReceiveMemoryWarning()
} }

View File

@ -72,7 +72,7 @@ public class OpenIDClaim: CustomStringConvertible {
} }
/// Initialize an OpenIDClaim from a dictionary. all information not available are optional values set to .None. /// 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 sub = fromDict["sub"] as? String
name = fromDict["name"] as? String name = fromDict["name"] as? String
givenName = fromDict["given_name"] as? String givenName = fromDict["given_name"] as? String
@ -98,12 +98,10 @@ public class OpenIDClaim: CustomStringConvertible {
/// Facebook specific claims. /// Facebook specific claims.
public class FacebookOpenIDClaim: OpenIDClaim { public class FacebookOpenIDClaim: OpenIDClaim {
override init(fromDict:[String: AnyObject]) { override init(fromDict: [String: AnyObject]) {
super.init(fromDict: fromDict) super.init(fromDict: fromDict)
givenName = fromDict["first_name"] as? String givenName = fromDict["first_name"] as? String
familyName = fromDict["last_name"] as? String familyName = fromDict["last_name"] as? String
zoneinfo = fromDict["timezone"] as? String zoneinfo = fromDict["timezone"] as? String
} }
} }

View File

@ -85,7 +85,7 @@ public class KeychainWrap {
keychainQuery[kSecClass as String] = kSecClassGenericPassword keychainQuery[kSecClass as String] = kSecClassGenericPassword
keychainQuery[kSecAttrService as String] = self.serviceIdentifier keychainQuery[kSecAttrService as String] = self.serviceIdentifier
keychainQuery[kSecAttrAccount as String] = key + "_" + tokenType.rawValue keychainQuery[kSecAttrAccount as String] = key + "_" + tokenType.rawValue
keychainQuery[kSecAttrAccessible as String] = kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly keychainQuery[kSecAttrAccessible as String] = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
// Search for the keychain items // Search for the keychain items
let statusSearch: OSStatus = SecItemCopyMatching(keychainQuery, nil) let statusSearch: OSStatus = SecItemCopyMatching(keychainQuery, nil)
@ -118,6 +118,27 @@ public class KeychainWrap {
return true 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. Read tokens information in Keychain. If the entry is not found return nil.
@ -133,8 +154,7 @@ public class KeychainWrap {
keychainQuery[kSecAttrService as String] = self.serviceIdentifier keychainQuery[kSecAttrService as String] = self.serviceIdentifier
keychainQuery[kSecAttrAccount as String] = userAccount + "_" + tokenType.rawValue keychainQuery[kSecAttrAccount as String] = userAccount + "_" + tokenType.rawValue
keychainQuery[kSecReturnData as String] = true keychainQuery[kSecReturnData as String] = true
keychainQuery[kSecAttrAccessible as String] = kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly keychainQuery[kSecAttrAccessible as String] = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
var dataTypeRef: Unmanaged<AnyObject>? var dataTypeRef: Unmanaged<AnyObject>?
// Search for the keychain items // Search for the keychain items
@ -176,7 +196,7 @@ public class KeychainWrap {
func deleteAllKeysForSecClass(secClass: CFTypeRef) -> Bool { func deleteAllKeysForSecClass(secClass: CFTypeRef) -> Bool {
let keychainQuery = NSMutableDictionary() let keychainQuery = NSMutableDictionary()
keychainQuery[kSecClass as String] = secClass keychainQuery[kSecClass as String] = secClass
let result:OSStatus = SecItemDelete(keychainQuery) let result: OSStatus = SecItemDelete(keychainQuery)
if (result == errSecSuccess) { if (result == errSecSuccess) {
return true return true
} else { } else {
@ -201,7 +221,7 @@ public class TrustedPersistantOAuth2Session: OAuth2Session {
public var accessTokenExpirationDate: NSDate? { public var accessTokenExpirationDate: NSDate? {
get { get {
let dateAsString = self.keychain.read(self.accountId, tokenType: .ExpirationDate) let dateAsString = self.keychain.read(self.accountId, tokenType: .ExpirationDate)
if let unwrappedDate:String = dateAsString { if let unwrappedDate: String = dateAsString {
return NSDate(dateString: unwrappedDate) return NSDate(dateString: unwrappedDate)
} else { } else {
return nil return nil
@ -210,6 +230,8 @@ public class TrustedPersistantOAuth2Session: OAuth2Session {
set(value) { set(value) {
if let unwrappedValue = value { if let unwrappedValue = value {
self.keychain.save(self.accountId, tokenType: .ExpirationDate, value: unwrappedValue.toString()) self.keychain.save(self.accountId, tokenType: .ExpirationDate, value: unwrappedValue.toString())
} else {
self.keychain.delete(self.accountId, tokenType: .ExpirationDate)
} }
} }
} }
@ -224,6 +246,8 @@ public class TrustedPersistantOAuth2Session: OAuth2Session {
set(value) { set(value) {
if let unwrappedValue = value { if let unwrappedValue = value {
self.keychain.save(self.accountId, tokenType: .AccessToken, value: unwrappedValue) self.keychain.save(self.accountId, tokenType: .AccessToken, value: unwrappedValue)
} else {
self.keychain.delete(self.accountId, tokenType: .AccessToken)
} }
} }
} }
@ -238,6 +262,8 @@ public class TrustedPersistantOAuth2Session: OAuth2Session {
set(value) { set(value) {
if let unwrappedValue = value { if let unwrappedValue = value {
self.keychain.save(self.accountId, tokenType: .RefreshToken, value: unwrappedValue) self.keychain.save(self.accountId, tokenType: .RefreshToken, value: unwrappedValue)
} else {
self.keychain.delete(self.accountId, tokenType: .RefreshToken)
} }
} }
} }
@ -248,7 +274,7 @@ public class TrustedPersistantOAuth2Session: OAuth2Session {
public var refreshTokenExpirationDate: NSDate? { public var refreshTokenExpirationDate: NSDate? {
get { get {
let dateAsString = self.keychain.read(self.accountId, tokenType: .RefreshExpirationDate) let dateAsString = self.keychain.read(self.accountId, tokenType: .RefreshExpirationDate)
if let unwrappedDate:String = dateAsString { if let unwrappedDate: String = dateAsString {
return NSDate(dateString: unwrappedDate) return NSDate(dateString: unwrappedDate)
} else { } else {
return nil return nil
@ -257,6 +283,8 @@ public class TrustedPersistantOAuth2Session: OAuth2Session {
set(value) { set(value) {
if let unwrappedValue = value { if let unwrappedValue = value {
_ = self.keychain.save(self.accountId, tokenType: .RefreshExpirationDate, value: unwrappedValue.toString()) _ = self.keychain.save(self.accountId, tokenType: .RefreshExpirationDate, value: unwrappedValue.toString())
} else {
self.keychain.delete(self.accountId, tokenType: .RefreshExpirationDate)
} }
} }
} }
@ -325,9 +353,21 @@ public class TrustedPersistantOAuth2Session: OAuth2Session {
} else { } else {
self.keychain = KeychainWrap() self.keychain = KeychainWrap()
} }
if accessToken != nil {
self.accessToken = accessToken self.accessToken = accessToken
}
if refreshToken != nil {
self.refreshToken = refreshToken self.refreshToken = refreshToken
}
if accessTokenExpirationDate != nil {
self.accessTokenExpirationDate = accessTokenExpirationDate self.accessTokenExpirationDate = accessTokenExpirationDate
}
if refreshToken != nil {
self.refreshTokenExpirationDate = refreshTokenExpirationDate self.refreshTokenExpirationDate = refreshTokenExpirationDate
} }
}
} }

View File

@ -1,6 +1,6 @@
# aerogear-ios-oauth2 [![Build Status](https://travis-ci.org/aerogear/aerogear-ios-oauth2.png)](https://travis-ci.org/aerogear/aerogear-ios-oauth2) # aerogear-ios-oauth2 [![Build Status](https://travis-ci.org/aerogear/aerogear-ios-oauth2.png)](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). OAuth2 Client based on [aerogear-ios-http](https://github.com/aerogear/aerogear-ios-http).
Taking care of: Taking care of:
@ -11,7 +11,7 @@ Taking care of:
* (implicit or explicit) refresh tokens, * (implicit or explicit) refresh tokens,
* revoke tokens, * revoke tokens,
* permanent secure storage, * 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 * openID Connect login
100% Swift 2.0. 100% Swift 2.0.
@ -29,12 +29,12 @@ Taking care of:
#### OAuth2 grant for GET with a predefined config like Facebook #### OAuth2 grant for GET with a predefined config like Facebook
```swift ```swift
var Http = Http() // [1] let http = Http() // [1]
let facebookConfig = FacebookConfig( // [2] let facebookConfig = FacebookConfig( // [2]
clientId: "YYY", clientId: "YYY",
clientSecret: "XXX", clientSecret: "XXX",
scopes:["photo_upload, publish_actions"]) scopes:["photo_upload, publish_actions"])
var oauth2Module = AccountManager.addFacebookAccount(facebookConfig) // [3] let oauth2Module = AccountManager.addFacebookAccount(facebookConfig) // [3]
http.authzModule = oauth2Module // [4] http.authzModule = oauth2Module // [4]
http.request(.GET, path: "/get", completionHandler: {(response, error) in // [5] http.request(.GET, path: "/get", completionHandler: {(response, error) in // [5]
// handle response // handle response
@ -52,13 +52,13 @@ See full description in [aerogear.org](https://aerogear.org/docs/guides/aerogear
#### OpenID Connect with Keycloak #### OpenID Connect with Keycloak
```swift ```swift
var Http = Http() let http = Http()
let keycloakConfig = KeycloakConfig( let keycloakConfig = KeycloakConfig(
clientId: "sharedshoot-third-party", clientId: "sharedshoot-third-party",
host: "http://localhost:8080", host: "http://localhost:8080",
realm: "shoot-realm", realm: "shoot-realm",
isOpenIDConnect: true) isOpenIDConnect: true)
var oauth2Module = AccountManager.addKeycloakAccount(keycloakConfig) let oauth2Module = AccountManager.addKeycloakAccount(keycloakConfig)
http.authzModule = oauth2Module http.authzModule = oauth2Module
oauth2Module.login {(accessToken: AnyObject?, claims: OpenIDClaim?, error: NSError?) in // [1] oauth2Module.login {(accessToken: AnyObject?, claims: OpenIDClaim?, error: NSError?) in // [1]
// Do your own stuff here // Do your own stuff here

View File

@ -52,7 +52,6 @@ static NSString *const FBSDKAppLinkInboundEvent = @"fb_al_inbound";
FBSDKBridgeAPIRequest *_pendingRequest; FBSDKBridgeAPIRequest *_pendingRequest;
FBSDKBridgeAPICallbackBlock _pendingRequestCompletionBlock; FBSDKBridgeAPICallbackBlock _pendingRequestCompletionBlock;
id<FBSDKURLOpening> _pendingURLOpen; id<FBSDKURLOpening> _pendingURLOpen;
FBSDKDeferredAppInviteHandler _organicDeeplinkHandler;
#endif #endif
BOOL _expectingBackground; BOOL _expectingBackground;
UIViewController *_safariViewController; UIViewController *_safariViewController;
@ -153,10 +152,12 @@ static NSString *const FBSDKAppLinkInboundEvent = @"fb_al_inbound";
queryParameters:sanitizedParams queryParameters:sanitizedParams
error:nil]; error:nil];
} }
dispatch_async(dispatch_get_main_queue(), ^{ // copy the _organicDeeplinkHandler here because it can get cleared in FBSDKOrganicDeeplinkHelper
// Callback handler for organic deeplinking. // so that we avoid bad_exc_access in the dispatch_async below.
_organicDeeplinkHandler(sanitizedUrl); FBSDKDeferredAppInviteHandler appInviteHandler = [_organicDeeplinkHandler copy];
_organicDeeplinkHandler = nil; _organicDeeplinkHandler = nil;
dispatch_async(dispatch_get_main_queue(), ^{
appInviteHandler(sanitizedUrl);
}); });
return YES; return YES;

View File

@ -44,5 +44,5 @@
#import <FBSDKCoreKit/FBSDKDeviceViewControllerBase.h> #import <FBSDKCoreKit/FBSDKDeviceViewControllerBase.h>
#endif #endif
#define FBSDK_VERSION_STRING @"4.14.0" #define FBSDK_VERSION_STRING @"4.15.0"
#define FBSDK_TARGET_PLATFORM_VERSION @"v2.7" #define FBSDK_TARGET_PLATFORM_VERSION @"v2.7"

View File

@ -31,7 +31,7 @@
#import "FBSDKInternalUtility.h" #import "FBSDKInternalUtility.h"
#import "FBSDKLogger.h" #import "FBSDKLogger.h"
#import "FBSDKSettings+Internal.h" #import "FBSDKSettings+Internal.h"
#import "FBSDKURLConnection.h" #import "FBSDKURLSessionTask.h"
NSString *const FBSDKNonJSONResponseProperty = @"FACEBOOK_NON_JSON_RESULT"; NSString *const FBSDKNonJSONResponseProperty = @"FACEBOOK_NON_JSON_RESULT";
@ -76,17 +76,18 @@ typedef NS_ENUM(NSUInteger, FBSDKGraphRequestConnectionState)
// Private properties and methods // Private properties and methods
@interface FBSDKGraphRequestConnection () < @interface FBSDKGraphRequestConnection () <
FBSDKURLConnectionDelegate NSURLSessionDataDelegate
#if !TARGET_OS_TV #if !TARGET_OS_TV
, FBSDKGraphErrorRecoveryProcessorDelegate , FBSDKGraphErrorRecoveryProcessorDelegate
#endif #endif
> >
@property (nonatomic, retain) FBSDKURLConnection *connection; @property (nonatomic, strong) NSURLSession *session;
@property (nonatomic, strong) FBSDKURLSessionTask *task;
@property (nonatomic, retain) NSMutableArray *requests; @property (nonatomic, retain) NSMutableArray *requests;
@property (nonatomic) FBSDKGraphRequestConnectionState state; @property (nonatomic, assign) FBSDKGraphRequestConnectionState state;
@property (nonatomic, retain) FBSDKLogger *logger; @property (nonatomic, strong) FBSDKLogger *logger;
@property (nonatomic) unsigned long requestStartTime; @property (nonatomic, assign) unsigned long requestStartTime;
@end @end
@ -117,8 +118,7 @@ FBSDKURLConnectionDelegate
- (void)dealloc - (void)dealloc
{ {
_connection.delegate = nil; [_session invalidateAndCancel];
[_connection cancel];
} }
#pragma mark - Public #pragma mark - Public
@ -163,8 +163,8 @@ FBSDKURLConnectionDelegate
- (void)cancel - (void)cancel
{ {
self.state = kStateCancelled; self.state = kStateCancelled;
[self.connection cancel]; [self.task cancel];
self.connection = nil; [self cleanUpSession];
} }
- (void)overrideVersionPartWith:(NSString *)version - (void)overrideVersionPartWith:(NSString *)version
@ -196,24 +196,22 @@ FBSDKURLConnectionDelegate
[self logRequest:request bodyLength:0 bodyLogger:nil attachmentLogger:nil]; [self logRequest:request bodyLength:0 bodyLogger:nil attachmentLogger:nil];
_requestStartTime = [FBSDKInternalUtility currentTimeInMilliseconds]; _requestStartTime = [FBSDKInternalUtility currentTimeInMilliseconds];
FBSDKURLConnectionHandler handler = FBSDKURLSessionTaskHandler handler = ^(NSError *error,
^(FBSDKURLConnection *connection,
NSError *error,
NSURLResponse *response, NSURLResponse *response,
NSData *responseData) { NSData *responseData) {
[self completeFBSDKURLConnectionWithResponse:response [self completeFBSDKURLSessionWithResponse:response
data:responseData data:responseData
networkError:error]; networkError:error];
}; };
FBSDKURLConnection *connection = [[FBSDKURLConnection alloc] initWithRequest:request if (!self.session) {
completionHandler:handler]; self.session = [self defaultSession];
if (_delegateQueue) {
[connection setDelegateQueue:_delegateQueue];
} }
connection.delegate = self;
self.connection = connection; self.task = [[FBSDKURLSessionTask alloc] initWithRequest:request
[connection start]; fromSession:self.session
completionHandler:handler];
[self.task start];
id<FBSDKGraphRequestConnectionDelegate> delegate = self.delegate; id<FBSDKGraphRequestConnectionDelegate> delegate = self.delegate;
if ([delegate respondsToSelector:@selector(requestConnectionWillBeginLoading:)]) { if ([delegate respondsToSelector:@selector(requestConnectionWillBeginLoading:)]) {
@ -503,7 +501,7 @@ FBSDKURLConnectionDelegate
#pragma mark - Private methods (response parsing) #pragma mark - Private methods (response parsing)
- (void)completeFBSDKURLConnectionWithResponse:(NSURLResponse *)response - (void)completeFBSDKURLSessionWithResponse:(NSURLResponse *)response
data:(NSData *)data data:(NSData *)data
networkError:(NSError *)error networkError:(NSError *)error
{ {
@ -526,7 +524,7 @@ FBSDKURLConnectionDelegate
if (!error && [response.MIMEType hasPrefix:@"image"]) { if (!error && [response.MIMEType hasPrefix:@"image"]) {
error = [FBSDKError errorWithCode:FBSDKGraphRequestNonTextMimeTypeReturnedErrorCode error = [FBSDKError errorWithCode:FBSDKGraphRequestNonTextMimeTypeReturnedErrorCode
message:@"Response is a non-text MIME type; endpoints that return images and other " 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 { } else {
results = [self parseJSONResponse:data results = [self parseJSONResponse:data
error:&error error:&error
@ -560,7 +558,7 @@ FBSDKURLConnectionDelegate
[self completeWithResults:results networkError:error]; [self completeWithResults:results networkError:error];
self.connection = nil; [self cleanUpSession];
} }
// //
@ -788,7 +786,7 @@ FBSDKURLConnectionDelegate
} }
} }
#endif #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(); finishAndInvokeCompletionHandler();
} }
@ -954,27 +952,35 @@ FBSDKURLConnectionDelegate
return agent; return agent;
} }
- (void)setConnection:(FBSDKURLConnection *)connection - (NSURLSession *)defaultSession
{ {
if (_connection != connection) { NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
_connection.delegate = nil; return [NSURLSession sessionWithConfiguration:config
_connection = connection; delegate:self
} delegateQueue:_delegateQueue];
} }
#pragma mark - FBSDKURLConnectionDelegate - (void)cleanUpSession
{
[self.session invalidateAndCancel];
self.session = nil;
}
- (void)facebookURLConnection:(FBSDKURLConnection *)connection #pragma mark - NSURLSessionDataDelegate
didSendBodyData:(NSInteger)bytesWritten
totalBytesWritten:(NSInteger)totalBytesWritten - (void)URLSession:(NSURLSession *)session
totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite { task:(NSURLSessionTask *)task
id<FBSDKGraphRequestConnectionDelegate> delegate = [self delegate]; 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:)]) { if ([delegate respondsToSelector:@selector(requestConnection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite:)]) {
[delegate requestConnection:self [delegate requestConnection:self
didSendBodyData:bytesWritten didSendBodyData:(NSUInteger)bytesSent
totalBytesWritten:totalBytesWritten totalBytesWritten:(NSUInteger)totalBytesSent
totalBytesExpectedToWrite:totalBytesExpectedToWrite]; totalBytesExpectedToWrite:(NSUInteger)totalBytesExpectedToSend];
} }
} }

View File

@ -51,13 +51,6 @@ SFSafariViewControllerDelegate
return NO; 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(), ^{ dispatch_async(dispatch_get_main_queue(), ^{
[FBSDKApplicationDelegate sharedInstance].organicDeeplinkHandler = handler; [FBSDKApplicationDelegate sharedInstance].organicDeeplinkHandler = handler;
[self presentSafariViewController]; [self presentSafariViewController];
@ -69,7 +62,6 @@ SFSafariViewControllerDelegate
[self cleanUpSafariViewController]; [self cleanUpSafariViewController];
[FBSDKApplicationDelegate sharedInstance].organicDeeplinkHandler = nil; [FBSDKApplicationDelegate sharedInstance].organicDeeplinkHandler = nil;
_handler(nil); _handler(nil);
} }
}); });
}); });
@ -79,29 +71,27 @@ SFSafariViewControllerDelegate
- (void)presentSafariViewController - (void)presentSafariViewController
{ {
Class SFSafariViewControllerClass = fbsdkdfl_SFSafariViewControllerClass();
_safariViewController = [[SFSafariViewControllerClass alloc] initWithURL: [self constructDeeplinkRetrievalUrl]];
_safariViewController.view.userInteractionEnabled = NO; _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 performSelector:@selector(setDelegate:) withObject:self];
[_safariViewController didMoveToParentViewController:_safariWindow.rootViewController];
_safariViewController.view.frame = CGRectZero; _safariWindow = [[UIWindow alloc] initWithFrame:CGRectMake(0, 0, 1, 1)];
return; _safariWindow.windowLevel -= 1000;
_safariWindow.rootViewController = _safariViewController;
_safariWindow.hidden = NO;
[_safariWindow makeKeyAndVisible];
} }
- (void)cleanUpSafariViewController - (void)cleanUpSafariViewController
{ {
if(_safariViewController) if (_safariViewController)
{ {
[_safariViewController performSelector:@selector(setDelegate:) withObject:nil]; [_safariViewController performSelector:@selector(setDelegate:) withObject:nil];
[_safariViewController willMoveToParentViewController:nil];
[_safariViewController.view removeFromSuperview];
[_safariViewController removeFromParentViewController];
_safariViewController = nil; _safariViewController = nil;
_safariWindow.rootViewController = nil; _safariWindow.rootViewController = nil;
_safariWindow = nil; _safariWindow = nil;
} }
return;
} }
- (NSURL*)constructDeeplinkRetrievalUrl - (NSURL*)constructDeeplinkRetrievalUrl

View File

@ -92,7 +92,8 @@ typedef NS_ENUM(NSUInteger, FBSDKInternalUtilityVersionShift)
static NSBundle *bundle; static NSBundle *bundle;
static dispatch_once_t onceToken; static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{ dispatch_once(&onceToken, ^{
NSString *stringsBundlePath = [[NSBundle mainBundle] pathForResource:@"FacebookSDKStrings" NSString *stringsBundlePath = [[NSBundle bundleForClass:[FBSDKApplicationDelegate class]]
pathForResource:@"FacebookSDKStrings"
ofType:@"bundle"]; ofType:@"bundle"];
bundle = [NSBundle bundleWithPath:stringsBundlePath] ?: [NSBundle mainBundle]; bundle = [NSBundle bundleWithPath:stringsBundlePath] ?: [NSBundle mainBundle];
}); });

View File

@ -201,6 +201,8 @@
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title
message:nil message:nil
preferredStyle:UIAlertControllerStyleActionSheet]; preferredStyle:UIAlertControllerStyleActionSheet];
alertController.popoverPresentationController.sourceView = self;
alertController.popoverPresentationController.sourceRect = self.bounds;
UIAlertAction *cancel = [UIAlertAction actionWithTitle:cancelTitle UIAlertAction *cancel = [UIAlertAction actionWithTitle:cancelTitle
style:UIAlertActionStyleCancel style:UIAlertActionStyleCancel
handler:nil]; handler:nil];

View File

@ -741,7 +741,7 @@ static NSString *const FBSDKExpectedChallengeKey = @"expected_login_challenge";
[FBSDKInternalUtility bundleForStrings], [FBSDKInternalUtility bundleForStrings],
@"Log In", @"Log In",
@"Title of the web dialog that prompts the user to log in to Facebook."); @"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) { if (handler) {
handler(YES, nil); handler(YES, nil);

View File

@ -23,79 +23,63 @@
@protocol FBSDKAppGroupAddDialogDelegate; @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 @interface FBSDKAppGroupAddDialog : NSObject
/*! /*!
@abstract Convenience method to build up an app group dialog with content and a delegate. @deprecated App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information.
@param content The content for the app group.
@param delegate The receiver's delegate.
*/ */
+ (instancetype)showWithContent:(FBSDKAppGroupContent *)content + (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. @deprecated App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information.
@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.
*/ */
- (BOOL)canShow; - (BOOL)canShow __attribute__ ((deprecated));
/*! /*!
@abstract Begins the app group dialog from the receiver. @deprecated App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information.
@result YES if the receiver was able to show the dialog, otherwise NO.
*/ */
- (BOOL)show; - (BOOL)show __attribute__ ((deprecated));
/*! /*!
@abstract Validates the content on the receiver. @deprecated App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information.
@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.
*/ */
- (BOOL)validateWithError:(NSError *__autoreleasing *)errorRef; - (BOOL)validateWithError:(NSError *__autoreleasing *)errorRef __attribute__ ((deprecated));
@end @end
/*! /*!
@abstract A delegate for FBSDKAppGroupAddDialog. @deprecated App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information.
@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.
*/ */
__attribute__ ((deprecated))
@protocol FBSDKAppGroupAddDialogDelegate <NSObject> @protocol FBSDKAppGroupAddDialogDelegate <NSObject>
/*! /*!
@abstract Sent to the delegate when the app group request completes without error. @deprecated App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information.
@param appGroupAddDialog The FBSDKAppGroupAddDialog that completed.
@param results The results from the dialog. This may be nil or empty.
*/ */
- (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. @deprecated App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information.
@param appGroupAddDialog The FBSDKAppGroupAddDialog that completed.
@param error The error.
*/ */
- (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. @deprecated App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information.
@param appGroupAddDialog The FBSDKAppGroupAddDialog that completed.
*/ */
- (void)appGroupAddDialogDidCancel:(FBSDKAppGroupAddDialog *)appGroupAddDialog; - (void)appGroupAddDialogDidCancel:(FBSDKAppGroupAddDialog *)appGroupAddDialog __attribute__ ((deprecated));
@end @end

View File

@ -21,79 +21,61 @@
@protocol FBSDKAppGroupJoinDialogDelegate; @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 @interface FBSDKAppGroupJoinDialog : NSObject
/*! /*!
@abstract Convenience method to build up an app group dialog with content and a delegate. @deprecated App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information.
@param groupID The ID for the group.
@param delegate The receiver's delegate.
*/ */
+ (instancetype)showWithGroupID:(NSString *)groupID + (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. @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));
@property (nonatomic, weak) id<FBSDKAppGroupJoinDialogDelegate> delegate;
/*! /*!
@abstract The ID for 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) NSString *groupID __attribute__ ((deprecated));
@property (nonatomic, copy) NSString *groupID;
/*! /*!
@abstract A Boolean value that indicates whether the receiver can initiate an app group dialog. @deprecated App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information.
@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.
*/ */
- (BOOL)canShow; - (BOOL)canShow __attribute__ ((deprecated));
/*! /*!
@abstract Begins the app group dialog from the receiver. @deprecated App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information.
@result YES if the receiver was able to show the dialog, otherwise NO.
*/ */
- (BOOL)show; - (BOOL)show __attribute__ ((deprecated));
/*! /*!
@abstract Validates the content on the receiver. @deprecated App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information.
@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.
*/ */
- (BOOL)validateWithError:(NSError *__autoreleasing *)errorRef; - (BOOL)validateWithError:(NSError *__autoreleasing *)errorRef __attribute__ ((deprecated));
@end @end
/*! /*!
@abstract A delegate for FBSDKAppGroupJoinDialog. @deprecated App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information.
@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.
*/ */
__attribute__ ((deprecated))
@protocol FBSDKAppGroupJoinDialogDelegate <NSObject> @protocol FBSDKAppGroupJoinDialogDelegate <NSObject>
/*! /*!
@abstract Sent to the delegate when the app group request completes without error. @deprecated App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information.
@param appGroupJoinDialog The FBSDKAppGroupJoinDialog that completed.
@param results The results from the dialog. This may be nil or empty.
*/ */
- (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. @deprecated App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information.
@param appGroupJoinDialog The FBSDKAppGroupJoinDialog that completed.
@param error The error.
*/ */
- (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. @deprecated App and game groups are being deprecated. See https://developers.facebook.com/docs/games/services/game-groups for more information.
@param appGroupJoinDialog The FBSDKAppGroupJoinDialog that completed.
*/ */
- (void)appGroupJoinDialogDidCancel:(FBSDKAppGroupJoinDialog *)appGroupJoinDialog; - (void)appGroupJoinDialogDidCancel:(FBSDKAppGroupJoinDialog *)appGroupJoinDialog __attribute__ ((deprecated));
@end @end

View File

@ -368,6 +368,7 @@ static NSMutableArray *g_pendingFBSDKShareAPI;
if ([errors count]) { if ([errors count]) {
[_delegate sharer:self didFailWithError:errors[0]]; [_delegate sharer:self didFailWithError:errors[0]];
} else if ([results count]) { } 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 // 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]; NSMutableDictionary *shareResults = [[NSMutableDictionary alloc] init];
[FBSDKInternalUtility dictionary:shareResults setObject:FBSDK_SHARE_RESULT_COMPLETION_GESTURE_VALUE_POST [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]]; NSDictionary *firstResult = [FBSDKTypeUtility dictionaryValue:results[0]];
[FBSDKInternalUtility dictionary:shareResults setObject:[FBSDKTypeUtility stringValue:firstResult[@"post_id"]] [FBSDKInternalUtility dictionary:shareResults setObject:[FBSDKTypeUtility stringValue:firstResult[@"post_id"]]
forKey:FBSDK_SHARE_RESULT_POST_ID_KEY]; forKey:FBSDK_SHARE_RESULT_POST_ID_KEY];
[FBSDKInternalUtility dictionary:shareResults setObject:individualPhotoIDs forKey:FBSDK_SHARE_RESULT_PHOTO_IDS_KEY];
[_delegate sharer:self didCompleteWithResults:shareResults]; [_delegate sharer:self didCompleteWithResults:shareResults];
} }
}; };

View File

@ -188,6 +188,14 @@ FBSDK_STATIC_INLINE void FBSDKShareDialogValidateShareExtensionSchemeRegisteredF
NSInteger errorCode = [results[@"error_code"] integerValue]; NSInteger errorCode = [results[@"error_code"] integerValue];
if (errorCode == 4201) { if (errorCode == 4201) {
[self _invokeDelegateDidCancel]; [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 { } else {
// not all web dialogs report cancellation, so assume that the share has completed with no additional information // not all web dialogs report cancellation, so assume that the share has completed with no additional information
[self _handleWebResponseParameters:results error:nil]; [self _handleWebResponseParameters:results error:nil];

View File

@ -25,6 +25,7 @@
#define FBSDK_SHARE_RESULT_COMPLETION_GESTURE_VALUE_CANCEL @"cancel" #define FBSDK_SHARE_RESULT_COMPLETION_GESTURE_VALUE_CANCEL @"cancel"
#define FBSDK_SHARE_RESULT_COMPLETION_GESTURE_VALUE_POST @"post" #define FBSDK_SHARE_RESULT_COMPLETION_GESTURE_VALUE_POST @"post"
#define FBSDK_SHARE_RESULT_DID_COMPLETE_KEY @"didComplete" #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_RESULT_POST_ID_KEY @"postId"
#define FBSDK_SHARE_VIDEO_END_OFFSET @"end_offset" #define FBSDK_SHARE_VIDEO_END_OFFSET @"end_offset"
#define FBSDK_SHARE_VIDEO_FILE_CHUNK @"video_file_chunk" #define FBSDK_SHARE_VIDEO_FILE_CHUNK @"video_file_chunk"

View File

@ -213,6 +213,7 @@
[FBSDKInternalUtility dictionary:parameters setObject:linkContent.contentDescription forKey:@"description"]; [FBSDKInternalUtility dictionary:parameters setObject:linkContent.contentDescription forKey:@"description"];
[FBSDKInternalUtility dictionary:parameters setObject:linkContent.contentURL forKey:@"link"]; [FBSDKInternalUtility dictionary:parameters setObject:linkContent.contentURL forKey:@"link"];
[FBSDKInternalUtility dictionary:parameters setObject:linkContent.quote forKey:@"quote"]; [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.contentTitle forKey:@"name"];
[FBSDKInternalUtility dictionary:parameters setObject:linkContent.imageURL forKey:@"picture"]; [FBSDKInternalUtility dictionary:parameters setObject:linkContent.imageURL forKey:@"picture"];
[FBSDKInternalUtility dictionary:parameters setObject:linkContent.ref forKey:@"ref"]; [FBSDKInternalUtility dictionary:parameters setObject:linkContent.ref forKey:@"ref"];

View File

@ -1,3 +1,6 @@
# 3.5.0
* Updates for Firebase/Analytics, Firebase/AppIndexing, Firebase/Auth, Firebase/DynamicLinks, Firebase/Invites, Firebase/Storage.
# 3.4.0 # 3.4.0
* Updates for Firebase/AdMob, Firebase/Analytics, Firebase/AppIndexing, Firebase/Auth, Firebase/Crash, Firebase/DynamicLinks, Firebase/Invites, Firebase/Messaging, Firebase/RemoteConfig. * Updates for Firebase/AdMob, Firebase/Analytics, Firebase/AppIndexing, Firebase/Auth, Firebase/Crash, Firebase/DynamicLinks, Firebase/Invites, Firebase/Messaging, Firebase/RemoteConfig.

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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;

View File

@ -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
View File

@ -1,7 +1,7 @@
PODS: PODS:
- AeroGearHttp (0.6.0) - AeroGearHttp (0.7.0)
- AeroGearOAuth2 (0.5.1): - AeroGearOAuth2 (0.7.0):
- AeroGearHttp - AeroGearHttp (= 0.7.0)
- AFNetworking (2.6.3): - AFNetworking (2.6.3):
- AFNetworking/NSURLConnection (= 2.6.3) - AFNetworking/NSURLConnection (= 2.6.3)
- AFNetworking/NSURLSession (= 2.6.3) - AFNetworking/NSURLSession (= 2.6.3)
@ -37,25 +37,25 @@ PODS:
- BSImagePicker (2.3.0): - BSImagePicker (2.3.0):
- BSGridCollectionViewLayout (~> 1.1) - BSGridCollectionViewLayout (~> 1.1)
- UIImageViewModeScaleAspect (~> 1.3) - UIImageViewModeScaleAspect (~> 1.3)
- FBSDKCoreKit (4.14.0): - FBSDKCoreKit (4.15.0):
- Bolts (~> 1.7) - Bolts (~> 1.7)
- FBSDKLoginKit (4.14.0): - FBSDKLoginKit (4.15.0):
- FBSDKCoreKit - FBSDKCoreKit
- FBSDKShareKit (4.14.0): - FBSDKShareKit (4.15.0):
- FBSDKCoreKit - FBSDKCoreKit
- Firebase (3.4.0): - Firebase (3.5.2):
- Firebase/Core (= 3.4.0) - Firebase/Core (= 3.5.2)
- Firebase/Analytics (3.4.0): - Firebase/Analytics (3.5.2):
- FirebaseAnalytics (~> 3.3) - FirebaseAnalytics (~> 3.3)
- Firebase/Core (3.4.0): - Firebase/Core (3.5.2):
- Firebase/Analytics - Firebase/Analytics
- Firebase/Database (3.4.0): - Firebase/Database (3.5.2):
- Firebase/Analytics - Firebase/Analytics
- FirebaseDatabase (= 3.0.2) - FirebaseDatabase (= 3.0.2)
- Firebase/Storage (3.4.0): - Firebase/Storage (3.5.2):
- Firebase/Analytics - Firebase/Analytics
- FirebaseStorage (= 1.0.2) - FirebaseStorage (= 1.0.3)
- FirebaseAnalytics (3.3.0): - FirebaseAnalytics (3.3.1):
- FirebaseInstanceID (~> 1.0) - FirebaseInstanceID (~> 1.0)
- GoogleInterchangeUtilities (~> 1.2) - GoogleInterchangeUtilities (~> 1.2)
- GoogleSymbolUtilities (~> 1.1) - GoogleSymbolUtilities (~> 1.1)
@ -68,8 +68,8 @@ PODS:
- FirebaseDatabase (3.0.2): - FirebaseDatabase (3.0.2):
- FirebaseAnalytics (~> 3.2) - FirebaseAnalytics (~> 3.2)
- FirebaseInstanceID (1.0.8) - FirebaseInstanceID (1.0.8)
- FirebaseStorage (1.0.2): - FirebaseStorage (1.0.3):
- FirebaseAnalytics (~> 3.2) - FirebaseAnalytics (~> 3.3)
- GoogleNetworkingUtilities (~> 1.2) - GoogleNetworkingUtilities (~> 1.2)
- GDataXML-HTML (1.3.0) - GDataXML-HTML (1.3.0)
- GoogleInterchangeUtilities (1.2.1): - GoogleInterchangeUtilities (1.2.1):
@ -121,23 +121,23 @@ DEPENDENCIES:
- TYMActivityIndicatorView - TYMActivityIndicatorView
SPEC CHECKSUMS: SPEC CHECKSUMS:
AeroGearHttp: e958f301cc2d1c7fbfd4b61af187ea3490040a48 AeroGearHttp: 4660c8bf5b56cd00a3b75d7c5ecf94774469df5c
AeroGearOAuth2: 6f29d3fac8b78a0ff6d51b04c4ba1a02baed2e52 AeroGearOAuth2: de4218f60a6228d6cdcf1761277fe8af1115600a
AFNetworking: cb8d14a848e831097108418f5d49217339d4eb60 AFNetworking: cb8d14a848e831097108418f5d49217339d4eb60
Alamofire: 01a82e2f6c0f860ade35534c8dd88be61bdef40c Alamofire: 01a82e2f6c0f860ade35534c8dd88be61bdef40c
Alamofire-SwiftyJSON: 5812bb37accc36897cc2f2dabb070d8ebcd7ac98 Alamofire-SwiftyJSON: 5812bb37accc36897cc2f2dabb070d8ebcd7ac98
Bolts: 8a7995239dbe724f9cba2248b766d48b7ebdd322 Bolts: 8a7995239dbe724f9cba2248b766d48b7ebdd322
BSGridCollectionViewLayout: d7304dcb35c6b3b4420c527e9f9b77ff322250f3 BSGridCollectionViewLayout: d7304dcb35c6b3b4420c527e9f9b77ff322250f3
BSImagePicker: 591b28ce4994c44cbc4ac896717c1db9f9fadd18 BSImagePicker: 591b28ce4994c44cbc4ac896717c1db9f9fadd18
FBSDKCoreKit: 6e020b5db0b5bd1e01f5fb0902131befd129a502 FBSDKCoreKit: 6680cbd33a4243d80700f182d0af36b3fa7f3118
FBSDKLoginKit: da563567a108050ef83739c8c8c001ee9e25fa13 FBSDKLoginKit: 96d9b70b5784490f02ab86119e542a1f182017a8
FBSDKShareKit: e8e5d4ccef69b41132fe33acda26db1e33143e33 FBSDKShareKit: 06ef20cb2f16828ca4b20055333313dd445de362
Firebase: 754562547af419cc2f4b15247fee419081924bc2 Firebase: 94e63112efcad75226c0356a8f3032397b8547c9
FirebaseAnalytics: 228be2991cb28efb96cdafc4d62f64680e615c69 FirebaseAnalytics: d968d4d5f6aeb795cd64144337bcd233e530efc6
FirebaseAuth: 26fd291c3b552fc9658420b867520d5ae080421c FirebaseAuth: 26fd291c3b552fc9658420b867520d5ae080421c
FirebaseDatabase: 59bea2e7dfd81b3b8b2f8e396caf1a52c2ced6f7 FirebaseDatabase: 59bea2e7dfd81b3b8b2f8e396caf1a52c2ced6f7
FirebaseInstanceID: ba1e640935235e5fac39dfa816fe7660e72e1a8a FirebaseInstanceID: ba1e640935235e5fac39dfa816fe7660e72e1a8a
FirebaseStorage: fa2a87dee81f682f553af6839daa37a750e65f6a FirebaseStorage: 3992817bf405f5c1a4f8349678d22724cd0ef509
GDataXML-HTML: 7adc03668cab35c288f1dbb8929a179f0fece898 GDataXML-HTML: 7adc03668cab35c288f1dbb8929a179f0fece898
GoogleInterchangeUtilities: def8415a862effc67d549d5b5b0b9c7a2f97d4de GoogleInterchangeUtilities: def8415a862effc67d549d5b5b0b9c7a2f97d4de
GoogleNetworkingUtilities: 3e83269048cfb498dc7ec83ab36813360965c74f GoogleNetworkingUtilities: 3e83269048cfb498dc7ec83ab36813360965c74f
@ -152,6 +152,6 @@ SPEC CHECKSUMS:
TYMActivityIndicatorView: ad816387ebd5952c376af129218722733044148b TYMActivityIndicatorView: ad816387ebd5952c376af129218722733044148b
UIImageViewModeScaleAspect: 11a790a0b9d248a13dc63e3a78991f1463b6d84e UIImageViewModeScaleAspect: 11a790a0b9d248a13dc63e3a78991f1463b6d84e
PODFILE CHECKSUM: 3b36a7c734809ee54f4ecf0055d9910a9279d555 PODFILE CHECKSUM: d5879f9153df4c398c04aed34c686baebf1eeafb
COCOAPODS: 1.0.0 COCOAPODS: 1.0.1

File diff suppressed because it is too large Load Diff

View File

@ -15,7 +15,7 @@
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>FMWK</string> <string>FMWK</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>0.6.0</string> <string>0.7.0</string>
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>????</string> <string>????</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>

View File

@ -15,7 +15,7 @@
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>FMWK</string> <string>FMWK</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>0.5.1</string> <string>0.7.0</string>
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>????</string> <string>????</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>

View File

@ -15,7 +15,7 @@
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>FMWK</string> <string>FMWK</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>4.14.0</string> <string>4.15.0</string>
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>????</string> <string>????</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>

View File

@ -15,7 +15,7 @@
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>FMWK</string> <string>FMWK</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>4.14.0</string> <string>4.15.0</string>
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>????</string> <string>????</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>

View File

@ -15,7 +15,7 @@
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>FMWK</string> <string>FMWK</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>4.14.0</string> <string>4.15.0</string>
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>????</string> <string>????</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>

View File

@ -646,7 +646,7 @@ Copyright 2016 Google
## FirebaseStorage ## FirebaseStorage
Copyright 2016 Google Inc. Copyright 2016 Google
## GDataXML-HTML ## GDataXML-HTML

View File

@ -721,7 +721,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
</dict> </dict>
<dict> <dict>
<key>FooterText</key> <key>FooterText</key>
<string>Copyright 2016 Google Inc.</string> <string>Copyright 2016 Google</string>
<key>Title</key> <key>Title</key>
<string>FirebaseStorage</string> <string>FirebaseStorage</string>
<key>Type</key> <key>Type</key>

View File

@ -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} 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) *.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}" 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}" 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) *.framework)
echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"

View File

@ -1,5 +1,5 @@
EMBEDDED_CONTENT_CONTAINS_SWIFT = YES 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 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" 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' LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'

View File

@ -1,5 +1,5 @@
EMBEDDED_CONTENT_CONTAINS_SWIFT = YES 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 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" 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' LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'

View File

@ -646,7 +646,7 @@ Copyright 2016 Google
## FirebaseStorage ## FirebaseStorage
Copyright 2016 Google Inc. Copyright 2016 Google
## GDataXML-HTML ## GDataXML-HTML

View File

@ -721,7 +721,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
</dict> </dict>
<dict> <dict>
<key>FooterText</key> <key>FooterText</key>
<string>Copyright 2016 Google Inc.</string> <string>Copyright 2016 Google</string>
<key>Title</key> <key>Title</key>
<string>FirebaseStorage</string> <string>FirebaseStorage</string>
<key>Type</key> <key>Type</key>

View File

@ -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} 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) *.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}" 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}" 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) *.framework)
echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"

View File

@ -1,5 +1,5 @@
EMBEDDED_CONTENT_CONTAINS_SWIFT = YES 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 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" 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' LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'

View File

@ -1,5 +1,5 @@
EMBEDDED_CONTENT_CONTAINS_SWIFT = YES 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 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" 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' LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'

View File

@ -646,7 +646,7 @@ Copyright 2016 Google
## FirebaseStorage ## FirebaseStorage
Copyright 2016 Google Inc. Copyright 2016 Google
## GDataXML-HTML ## GDataXML-HTML

View File

@ -721,7 +721,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
</dict> </dict>
<dict> <dict>
<key>FooterText</key> <key>FooterText</key>
<string>Copyright 2016 Google Inc.</string> <string>Copyright 2016 Google</string>
<key>Title</key> <key>Title</key>
<string>FirebaseStorage</string> <string>FirebaseStorage</string>
<key>Type</key> <key>Type</key>

View File

@ -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} 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) *.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}" 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}" 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) *.framework)
echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"

View File

@ -1,5 +1,5 @@
EMBEDDED_CONTENT_CONTAINS_SWIFT = YES 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 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" 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' LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'

View File

@ -1,5 +1,5 @@
EMBEDDED_CONTENT_CONTAINS_SWIFT = YES 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 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" 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' LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'

View File

@ -45,6 +45,7 @@
A87525ED0EE7D42D9A7708D8 /* Pods_Vendoo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 23ECC3C8465826BD6AC74A02 /* Pods_Vendoo.framework */; }; A87525ED0EE7D42D9A7708D8 /* Pods_Vendoo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 23ECC3C8465826BD6AC74A02 /* Pods_Vendoo.framework */; };
B6FD38131D70EB27008FB41E /* AmazonWebServiceManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6FD38121D70EB27008FB41E /* AmazonWebServiceManager.swift */; }; B6FD38131D70EB27008FB41E /* AmazonWebServiceManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6FD38121D70EB27008FB41E /* AmazonWebServiceManager.swift */; };
B6FD38151D71CF3E008FB41E /* FeedType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6FD38141D71CF3E008FB41E /* FeedType.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 */ /* End PBXBuildFile section */
/* Begin PBXContainerItemProxy 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>"; }; 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>"; }; 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>"; }; 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; }; 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>"; }; 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>"; }; 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 = ( children = (
B6FD38121D70EB27008FB41E /* AmazonWebServiceManager.swift */, B6FD38121D70EB27008FB41E /* AmazonWebServiceManager.swift */,
B6FD38141D71CF3E008FB41E /* FeedType.swift */, B6FD38141D71CF3E008FB41E /* FeedType.swift */,
B6FD38161D720540008FB41E /* QuerySigner.swift */,
); );
name = AmazonServices; name = AmazonServices;
sourceTree = "<group>"; sourceTree = "<group>";
@ -366,7 +369,7 @@
isa = PBXNativeTarget; isa = PBXNativeTarget;
buildConfigurationList = 3E6CC37D1CF2A94B00E00A70 /* Build configuration list for PBXNativeTarget "Vendoo" */; buildConfigurationList = 3E6CC37D1CF2A94B00E00A70 /* Build configuration list for PBXNativeTarget "Vendoo" */;
buildPhases = ( buildPhases = (
8D532FDF55F208776F1284EF /* 📦 Check Pods Manifest.lock */, 8D532FDF55F208776F1284EF /* [CP] Check Pods Manifest.lock */,
F467CC8AF77423C2B3AAB223 /* [CP] Check Pods Manifest.lock */, F467CC8AF77423C2B3AAB223 /* [CP] Check Pods Manifest.lock */,
3E6CC34F1CF2A94B00E00A70 /* Sources */, 3E6CC34F1CF2A94B00E00A70 /* Sources */,
3E6CC3501CF2A94B00E00A70 /* Frameworks */, 3E6CC3501CF2A94B00E00A70 /* Frameworks */,
@ -389,7 +392,7 @@
isa = PBXNativeTarget; isa = PBXNativeTarget;
buildConfigurationList = 3E6CC3801CF2A94B00E00A70 /* Build configuration list for PBXNativeTarget "VendooTests" */; buildConfigurationList = 3E6CC3801CF2A94B00E00A70 /* Build configuration list for PBXNativeTarget "VendooTests" */;
buildPhases = ( buildPhases = (
2A9BA63E4CE4638416B6A19E /* 📦 Check Pods Manifest.lock */, 2A9BA63E4CE4638416B6A19E /* [CP] Check Pods Manifest.lock */,
9F58E69456F56F20E6643056 /* [CP] Check Pods Manifest.lock */, 9F58E69456F56F20E6643056 /* [CP] Check Pods Manifest.lock */,
3E6CC3651CF2A94B00E00A70 /* Sources */, 3E6CC3651CF2A94B00E00A70 /* Sources */,
3E6CC3661CF2A94B00E00A70 /* Frameworks */, 3E6CC3661CF2A94B00E00A70 /* Frameworks */,
@ -413,7 +416,7 @@
isa = PBXNativeTarget; isa = PBXNativeTarget;
buildConfigurationList = 3E6CC3831CF2A94B00E00A70 /* Build configuration list for PBXNativeTarget "VendooUITests" */; buildConfigurationList = 3E6CC3831CF2A94B00E00A70 /* Build configuration list for PBXNativeTarget "VendooUITests" */;
buildPhases = ( buildPhases = (
BCA592620202EE5EBFCD3DCA /* 📦 Check Pods Manifest.lock */, BCA592620202EE5EBFCD3DCA /* [CP] Check Pods Manifest.lock */,
99EF583910BFA3B053CE8591 /* [CP] Check Pods Manifest.lock */, 99EF583910BFA3B053CE8591 /* [CP] Check Pods Manifest.lock */,
3E6CC3701CF2A94B00E00A70 /* Sources */, 3E6CC3701CF2A94B00E00A70 /* Sources */,
3E6CC3711CF2A94B00E00A70 /* Frameworks */, 3E6CC3711CF2A94B00E00A70 /* Frameworks */,
@ -535,14 +538,14 @@
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Vendoo/Pods-Vendoo-resources.sh\"\n"; shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Vendoo/Pods-Vendoo-resources.sh\"\n";
showEnvVarsInLog = 0; showEnvVarsInLog = 0;
}; };
2A9BA63E4CE4638416B6A19E /* 📦 Check Pods Manifest.lock */ = { 2A9BA63E4CE4638416B6A19E /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
); );
inputPaths = ( inputPaths = (
); );
name = "📦 Check Pods Manifest.lock"; name = "[CP] Check Pods Manifest.lock";
outputPaths = ( outputPaths = (
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
@ -577,7 +580,7 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh; 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; showEnvVarsInLog = 0;
}; };
7A9D276114F95F89DAFE1AF3 /* 📦 Embed Pods Frameworks */ = { 7A9D276114F95F89DAFE1AF3 /* 📦 Embed Pods Frameworks */ = {
@ -610,14 +613,14 @@
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Vendoo-VendooUITests/Pods-Vendoo-VendooUITests-resources.sh\"\n"; shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Vendoo-VendooUITests/Pods-Vendoo-VendooUITests-resources.sh\"\n";
showEnvVarsInLog = 0; showEnvVarsInLog = 0;
}; };
8D532FDF55F208776F1284EF /* 📦 Check Pods Manifest.lock */ = { 8D532FDF55F208776F1284EF /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
); );
inputPaths = ( inputPaths = (
); );
name = "📦 Check Pods Manifest.lock"; name = "[CP] Check Pods Manifest.lock";
outputPaths = ( outputPaths = (
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
@ -697,17 +700,17 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh; 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; showEnvVarsInLog = 0;
}; };
BCA592620202EE5EBFCD3DCA /* 📦 Check Pods Manifest.lock */ = { BCA592620202EE5EBFCD3DCA /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
); );
inputPaths = ( inputPaths = (
); );
name = "📦 Check Pods Manifest.lock"; name = "[CP] Check Pods Manifest.lock";
outputPaths = ( outputPaths = (
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
@ -727,7 +730,7 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh; 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; showEnvVarsInLog = 0;
}; };
F467CC8AF77423C2B3AAB223 /* [CP] Check Pods Manifest.lock */ = { F467CC8AF77423C2B3AAB223 /* [CP] Check Pods Manifest.lock */ = {
@ -758,6 +761,7 @@
3E1AA4351D0DD173005FCCBB /* SettingsViewController.swift in Sources */, 3E1AA4351D0DD173005FCCBB /* SettingsViewController.swift in Sources */,
3E0F76FC1D01B2D7004A0159 /* Listing.swift in Sources */, 3E0F76FC1D01B2D7004A0159 /* Listing.swift in Sources */,
3E6CC3571CF2A94B00E00A70 /* AppDelegate.swift in Sources */, 3E6CC3571CF2A94B00E00A70 /* AppDelegate.swift in Sources */,
B6FD38171D720540008FB41E /* QuerySigner.swift in Sources */,
3EC3251E1CF734C100626C48 /* NetworksTableViewController.swift in Sources */, 3EC3251E1CF734C100626C48 /* NetworksTableViewController.swift in Sources */,
3EC325201CF7C3AB00626C48 /* NetworkTableViewCell.swift in Sources */, 3EC325201CF7C3AB00626C48 /* NetworkTableViewCell.swift in Sources */,
3EC325261CF7E90000626C48 /* FacebookGraphAPIManager.swift in Sources */, 3EC325261CF7E90000626C48 /* FacebookGraphAPIManager.swift in Sources */,
@ -924,9 +928,27 @@
buildSettings = { buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO; ALWAYS_SEARCH_USER_PATHS = NO;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
GCC_SYMBOLS_PRIVATE_EXTERN = YES; 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/**\""; INCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES = "\"Vendoo/**\" \"Pods/**\"";
INFOPLIST_FILE = Vendoo/Info.plist; INFOPLIST_FILE = Vendoo/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
@ -1010,7 +1032,9 @@
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE = ""; PROVISIONING_PROFILE = "";
SDKROOT = iphoneos; SDKROOT = iphoneos;
SWIFT_DISABLE_SAFETY_CHECKS = NO;
SWIFT_INCLUDE_PATHS = ""; SWIFT_INCLUDE_PATHS = "";
"SWIFT_INCLUDE_PATHS[arch=*]" = "";
SWIFT_OBJC_BRIDGING_HEADER = "Vendoo/Vendoo-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Vendoo/Vendoo-Bridging-Header.h";
USER_HEADER_SEARCH_PATHS = "\"Vendoo/**\" \"Pods/**\""; USER_HEADER_SEARCH_PATHS = "\"Vendoo/**\" \"Pods/**\"";
VALID_ARCHS = "arm64 armv7 armv7s"; VALID_ARCHS = "arm64 armv7 armv7s";
@ -1023,9 +1047,27 @@
buildSettings = { buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO; ALWAYS_SEARCH_USER_PATHS = NO;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
GCC_SYMBOLS_PRIVATE_EXTERN = YES; 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/**\""; INCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES = "\"Vendoo/**\" \"Pods/**\"";
INFOPLIST_FILE = Vendoo/Info.plist; INFOPLIST_FILE = Vendoo/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
@ -1109,6 +1151,7 @@
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE = ""; PROVISIONING_PROFILE = "";
SDKROOT = iphoneos; SDKROOT = iphoneos;
SWIFT_DISABLE_SAFETY_CHECKS = NO;
SWIFT_INCLUDE_PATHS = ""; SWIFT_INCLUDE_PATHS = "";
SWIFT_OBJC_BRIDGING_HEADER = "Vendoo/Vendoo-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Vendoo/Vendoo-Bridging-Header.h";
USER_HEADER_SEARCH_PATHS = "\"Vendoo/**\" \"Pods/**\""; USER_HEADER_SEARCH_PATHS = "\"Vendoo/**\" \"Pods/**\"";

19
Vendoo/QuerySigner.swift Normal file
View 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{
}

View File

@ -10,9 +10,8 @@
#define Vendoo_Bridging_Header_h #define Vendoo_Bridging_Header_h
#import <CommonCrypto/CommonHMAC.h>
//#import "EBayTradingServiceClient.h" //#import "EBayTradingServiceClient.h"
#endif /* Vendoo_Bridging_Header_h */ #endif /* Vendoo_Bridging_Header_h */