From 49c69c001b8ef6dfbe9fa474f1974108366683ed Mon Sep 17 00:00:00 2001 From: Okechi Onyeje Date: Wed, 1 Jun 2016 12:11:24 -0400 Subject: [PATCH] finished authorization portion of etsy integration, just need to do deauthorization and make the create new listing requests --- .../UserInterfaceState.xcuserstate | Bin 46025 -> 46992 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 104 ++++++--------- Vendoo/EtsyRESTAPIManager.swift | 125 +++++++++++++----- Vendoo/Info.plist | 5 + Vendoo/NetworksTableViewController.swift | 9 +- Vendoo/Services.plist | 4 + 6 files changed, 153 insertions(+), 94 deletions(-) diff --git a/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/UserInterfaceState.xcuserstate b/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/UserInterfaceState.xcuserstate index 1c64daa76b2b5a033ad71408801aeb6e653b96b0..a990e79fd293dbee339b84e4a701fd4475d7c44d 100644 GIT binary patch delta 23073 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 D3P5rl delta 22057 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 @@ -106,11 +106,11 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "Vendoo/EtsyRESTAPIManager.swift" - timestampString = "486467838.042152" + timestampString = "486489301.995309" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "66" - endingLineNumber = "66" + startingLineNumber = "145" + endingLineNumber = "145" landmarkName = "authorizeApp(_:)" landmarkType = "5"> @@ -122,59 +122,11 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "Vendoo/EtsyRESTAPIManager.swift" - timestampString = "486468123.916868" + timestampString = "486489301.995309" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "82" - endingLineNumber = "82" - landmarkName = "authorizeApp(_:)" - landmarkType = "5"> - - - - - - - - - - @@ -186,11 +138,43 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "Vendoo/EtsyRESTAPIManager.swift" - timestampString = "486468341.941555" + timestampString = "486489480.473889" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "84" - endingLineNumber = "84" + startingLineNumber = "114" + endingLineNumber = "114" + landmarkName = "authorizeApp(_:)" + landmarkType = "5"> + + + + + + + + diff --git a/Vendoo/EtsyRESTAPIManager.swift b/Vendoo/EtsyRESTAPIManager.swift index c665515..b82e628 100644 --- a/Vendoo/EtsyRESTAPIManager.swift +++ b/Vendoo/EtsyRESTAPIManager.swift @@ -11,24 +11,29 @@ import Foundation import SwiftyJSON import OAuthSwift +import Locksmith typealias ServiceResponse = (JSON, NSError?) -> Void + class EtsyRESTAPIManager: NSObject { //API Manager class variables //----------------------------------------------// static let sharedInstance = EtsyRESTAPIManager() - let baseURL = "https://openapi.etsy.com/v2" + let baseURL = "https://openapi.etsy.com/v2/private" private var apiKey: String! private var apiSecret: String! + private var userEmail:String = (NSUserDefaults.standardUserDefaults().objectForKey("email") as? String)! var isAuthorized: Bool = NSUserDefaults.standardUserDefaults().boolForKey("etsyAuthorized") //---------------------------------------------// //User specific class variables private var etsyUser: String! + private var oauth_token: String! + private var oauth_secret: String! //private let oauthswift = OAuth1Swift(parameters: ["consumerKey":"snbs78qkfy3yqq6yhe6yv49b","consumerSecret":"4sbva4oqb6", "requestTokenUrl": "https://openapi.etsy.com/v2/oauth/request_token?scope=listings_w%20listings_r%20listings_d%20transactions_r%20transactions_w%20"]) override init(){ @@ -37,6 +42,16 @@ class EtsyRESTAPIManager: NSObject { self.apiKey = ((dict["Etsy"] as! Dictionary)["consumerKey"] as! String) self.apiSecret = ((dict["Etsy"] as! Dictionary)["consumerSecret"] as! String) + + if(self.isAuthorized){ + let dictionary = Locksmith.loadDataForUserAccount(self.userEmail) + let oauthDictionary = dictionary?["etsy_oauth"] as? Dictionary + self.oauth_token = oauthDictionary?["token"] as? String! + self.oauth_secret = oauthDictionary?["secret"] as? String! + } + + + } @@ -52,42 +67,84 @@ extension EtsyRESTAPIManager { func authorizeApp(viewcontroller: UIViewController){ - + if(!isAuthorized){ + let oauthswift = OAuth1Swift(parameters: ["consumerKey":self.apiKey,"consumerSecret":self.apiSecret, "requestTokenUrl" : "https://openapi.etsy.com/v2/oauth/request_token?scope=listings_w%20listings_r%20listings_d%20transactions_r%20transactions_w", + "authorizeUrl": "https://www.etsy.com/oauth/signin?", + "accessTokenUrl": "https://openapi.etsy.com/v2/oauth/access_token?"]) + + oauthswift!.authorize_url_handler = SafariURLHandler(viewController: viewcontroller) + + oauthswift!.client.get("https://openapi.etsy.com/v2/oauth/request_token?scope=listings_w%20listings_r%20listings_d%20transactions_r%20transactions_w", + success: { + data, response in + let dataString = NSString(data: data, encoding: NSUTF8StringEncoding) + print(dataString!) + print(response) + + + + + //getting error here when trying to retrieve the login url from the response + //var dataDictionary = self.convertStringToDictionary(dataString! as String) + //print(dataDictionary!["login_url"]) + } + , failure: { error in + print(error) + } + ) + + dispatch_async(dispatch_get_main_queue(), {() -> Void in + oauthswift!.authorizeWithCallbackURL( NSURL(string: "vendoo://oauth-callback/etsy")!, success: { + credential, response, parameters in + print(credential.oauth_token) + print(credential.oauth_token_secret) + print(response) + + + + }, failure: { error in + print(error) + + dispatch_async(dispatch_get_main_queue(), {() -> Void in + print(oauthswift!.client.credential.oauth_token) + print(oauthswift!.client.credential.oauth_token_secret) + //save data to keychain + let creds = oauthswift?.client.credential + let oauth: Dictionary? = [ "token" : creds!.oauth_token, "secret" : creds!.oauth_token_secret ] + do{ + try Locksmith.saveData(["etsy_oauth" : oauth!], forUserAccount: self.userEmail) + print("account credentials saved") + NSUserDefaults.standardUserDefaults().setBool(true, forKey: "etsyAuthorized") + self.isAuthorized = true + } + catch{ + (error) + print(error) + //could not save data to keychain + print("account credentials could not be saved") + + } + oauthswift!.client.get(self.baseURL, + success: { + data, response in + let dataString = NSString(data: data, encoding: NSUTF8StringEncoding) + print(dataString) + } + , failure: { error in + print(error) + } + ) + + + }) + }) + }) + } - let oauthswift = OAuth1Swift(parameters: ["consumerKey":"snbs78qkfy3yqq6yhe6yv49b","consumerSecret":"4sbva4oqb6", "requestTokenUrl" : "https://openapi.etsy.com/v2/oauth/request_token?scope=listings_w%20listings_r%20listings_d%20transactions_r%20transactions_w", - "authorizeUrl": "https://www.etsy.com/oauth/signin?", - "accessTokenUrl": "https://openapi.etsy.com/v2/oauth/access_token?"]) - oauthswift!.authorize_url_handler = SafariURLHandler(viewController: viewcontroller) - oauthswift!.client.get("https://openapi.etsy.com/v2/oauth/request_token?scope=listings_w%20listings_r%20listings_d%20transactions_r%20transactions_w", - success: { - data, response in - let dataString = NSString(data: data, encoding: NSUTF8StringEncoding) - print(dataString!) - print(response) - - - - //getting error here when trying to retrieve the login url from the response - //var dataDictionary = self.convertStringToDictionary(dataString! as String) - //print(dataDictionary!["login_url"]) - } - , failure: { error in - print(error) - } - ) - oauthswift!.authorizeWithCallbackURL( NSURL(string: "vendoo://oauth-callback/etsy")!, success: { - credential, response, parameters in - print(credential.oauth_token) - print(credential.oauth_token_secret) - print(response) - }, failure: { error in - print(error) - }) - //once everything is authorized save true value to the authorization boolean @@ -98,6 +155,10 @@ extension EtsyRESTAPIManager { } + func deAuthorizeApp(viewcontroller: UIViewController) -> Bool { + + return true + } } diff --git a/Vendoo/Info.plist b/Vendoo/Info.plist index f094d7c..b8074a3 100644 --- a/Vendoo/Info.plist +++ b/Vendoo/Info.plist @@ -56,6 +56,11 @@ LSRequiresIPhoneOS + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + UILaunchStoryboardName LaunchScreen UIMainStoryboardFile diff --git a/Vendoo/NetworksTableViewController.swift b/Vendoo/NetworksTableViewController.swift index 02848bf..c1d830c 100644 --- a/Vendoo/NetworksTableViewController.swift +++ b/Vendoo/NetworksTableViewController.swift @@ -396,13 +396,17 @@ extension NetworksTableViewController: UITableViewDelegate { //OAuthorization code for etsy - if(cell.networkToggle.on == true){ + if(((self.tabBarController as? HomeViewController)?.fbGraphManager.isAuthorized)!){ dispatch_async(dispatch_get_main_queue(), { () -> Void in cell.networkToggle.setOn(false, animated: true) }) //code to deauthorize network + let tabBar = self.tabBarController + + let didSucceed:Bool = ((tabBar as? HomeViewController)?.etsyManager.deAuthorizeApp(self))! + cell.networkToggle.on = !didSucceed } else{ @@ -413,7 +417,7 @@ extension NetworksTableViewController: UITableViewDelegate { //this is the type of code desired to access the rest management classes - + let tabBar = self.tabBarController (tabBar as? HomeViewController)?.etsyManager.authorizeApp(self) @@ -433,6 +437,7 @@ extension NetworksTableViewController: UITableViewDelegate { //OAuthorization code for facebook if((self.tabBarController as? HomeViewController)?.fbGraphManager.isAuthorized)!{ + dispatch_async(dispatch_get_main_queue(), { () -> Void in cell.networkToggle.setOn(false, animated: true) }) diff --git a/Vendoo/Services.plist b/Vendoo/Services.plist index 0fa436c..e2be465 100644 --- a/Vendoo/Services.plist +++ b/Vendoo/Services.plist @@ -4,6 +4,10 @@ Etsy + accessToken + + accessSecret + consumerKey snbs78qkfy3yqq6yhe6yv49b consumerSecret