diff --git a/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/UserInterfaceState.xcuserstate b/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/UserInterfaceState.xcuserstate index ed50c83..fdaef2a 100644 Binary files a/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/UserInterfaceState.xcuserstate and b/Vendoo.xcworkspace/xcuserdata/okechi.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/Vendoo/EtsyRESTAPIManager.swift b/Vendoo/EtsyRESTAPIManager.swift index 6fa75a3..3531e87 100644 --- a/Vendoo/EtsyRESTAPIManager.swift +++ b/Vendoo/EtsyRESTAPIManager.swift @@ -24,14 +24,15 @@ class EtsyRESTAPIManager: NSObject { //----------------------------------------------// static let sharedInstance = EtsyRESTAPIManager() - + 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") + static var settingsDictionary = Dictionary() //---------------------------------------------// //User specific class variables @@ -53,7 +54,7 @@ class EtsyRESTAPIManager: NSObject { "responseType": "token"]) -//something is wrong when here when logging back in with a diff user + //something is wrong when here when logging back in with a diff user if(self.isAuthorized){ let dictionary = Locksmith.loadDataForUserAccount(self.userEmail, inService: "vendoo_oauth_etsy") let oauthDictionary = dictionary?["etsy_oauth"] as? Dictionary @@ -64,6 +65,22 @@ class EtsyRESTAPIManager: NSObject { /*scope=listings_w%20listings_r%20listings_d%20transactions_r%20transactions_w"*/ + if(NSUserDefaults.standardUserDefaults().boolForKey("etsyDefaultsOverriden")) { + + EtsyRESTAPIManager.settingsDictionary = (NSUserDefaults.standardUserDefaults().objectForKey("etsySettings") as? Dictionary)! + } + else{ + + EtsyRESTAPIManager.settingsDictionary = ([ + "who_made":"i_did", + "is_supply":"true", + "when_made":"made_to_order" + ] as Dictionary) + + NSUserDefaults.standardUserDefaults().setObject(EtsyRESTAPIManager.settingsDictionary, forKey: "etsySettings") + + NSUserDefaults.standardUserDefaults().setBool(true, forKey: "etsyDefaultsOverriden") + } } @@ -86,176 +103,183 @@ extension EtsyRESTAPIManager { oauthswift!.authorize_url_handler = SafariURLHandler(viewController: viewcontroller) - /* - let authRequest = self.oauthswift.client.makeRequest("https://openapi.etsy.com/v2/oauth/request_token?", method: OAuthSwiftHTTPRequest.Method.GET, parameters: ["scope":"listings_w%20listings_r%20listings_d%20transactions_r%20transactions_w"] , headers: nil) - - do{ - - try authRequest?.makeRequest() - - - }catch{ - (error) - } - */ + /* + let authRequest = self.oauthswift.client.makeRequest("https://openapi.etsy.com/v2/oauth/request_token?", method: OAuthSwiftHTTPRequest.Method.GET, parameters: ["scope":"listings_w%20listings_r%20listings_d%20transactions_r%20transactions_w"] , headers: nil) + + do{ + + try authRequest?.makeRequest() + + + }catch{ + (error) + } + */ /*["scope":"listings_w%20listings_r%20listings_d%20transactions_r%20transactions_w"]*/ - self.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(response.allHeaderFields) - //print(dataSting) - let json = JSON(data) - print(json) - print(dataString) - - - - self.oauthswift!.authorizeWithCallbackURL( NSURL(string: "vendoo://oauth-callback/etsy")!, success: { - credential, response, parameters in - print(credential.oauth_token) - print(credential.oauth_token_secret) - - print(response) - boolResult = false - - - }, failure: { error in - //print(error) - - dispatch_async(dispatch_get_main_queue(), {() -> Void in - print(self.oauthswift!.client.credential.oauth_token) - print(self.oauthswift!.client.credential.oauth_token_secret) - print(self.oauthswift.client.credential.oauth_verifier) - print(self.oauthswift.allowMissingOauthVerifier = true) - //save data to keychain - - - - self.oauthswift!.client.get("https://openapi.etsy.com/v2/oauth/access_token", parameters: ["oauth_verifier":(self.oauthswift.client.credential.oauth_verifier)], + self.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(response) - let json1 = JSON(response) - print(json1) + //print(response.allHeaderFields) //print(dataSting) let json = JSON(data) print(json) - print(dataString!) + print(dataString) - //parse out token and token secret - do { - let regex = try NSRegularExpression(pattern: "[oauth_token=|oauth_token_secret=](\\w*)", options: []) - let nsString = dataString! as NSString - let all = NSRange(location: 0, length: nsString.length) - var matches : [String] = [String]() - - regex.enumerateMatchesInString(nsString as String, options: NSMatchingOptions(rawValue: 0), range: all) { - (result : NSTextCheckingResult?, _, _) in - if let r = result { - let result = nsString.substringWithRange(r.range) as String - matches.append(result) - } - } - print(matches) - - - let oauth: Dictionary? = [ "token" : String(matches[1].characters.dropFirst()) , "secret" : String(matches[3].characters.dropFirst()) ] - - do{ - try Locksmith.saveData(["etsy_oauth" : oauth!], forUserAccount: self.userEmail, inService: "vendoo_oauth_etsy") - print("account credentials saved") - NSUserDefaults.standardUserDefaults().setBool(true, forKey: "etsyAuthorized") - self.isAuthorized = true - boolResult = true - - self.oauthswift.client.credential.oauth_token = oauth!["token"]! as! String - self.oauthswift.client.credential.oauth_token_secret = oauth!["secret"]! as! String - - self.oauthswift!.client.get("https://openapi.etsy.com/v2/oauth/scopes", - success: { - data, response in - let dataString = NSString(data: data, encoding: NSUTF8StringEncoding) - let json1 = JSON(dataString!) - print(json1) - print(dataString) - boolResult = true - } - , failure: { error in - print(error) - boolResult = true - } - ) - } - catch{ - (error) - print(error) - //could not save data to keychain - print("account credentials could not be saved") - boolResult = false - - } - - /*let results = regex.matchesInString(dataString! as String, - options: [], range: NSMakeRange(0, nsString.length)) - print(results.map { nsString.substringWithRange($0.range)})*/ - } catch let error as NSError { - print("invalid regex: \(error.localizedDescription)") - - - - } - /* - */ - - }, - failure: { - error in - print(error) - }) - - - //return boolResult - - }) - }) - - //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) - } - ) - + self.oauthswift!.authorizeWithCallbackURL( NSURL(string: "vendoo://oauth-callback/etsy")!, success: { + credential, response, parameters in + print(credential.oauth_token) + print(credential.oauth_token_secret) + + print(response) + boolResult = false + + + }, failure: { error in + //print(error) + + dispatch_async(dispatch_get_main_queue(), {() -> Void in + print(self.oauthswift!.client.credential.oauth_token) + print(self.oauthswift!.client.credential.oauth_token_secret) + print(self.oauthswift.client.credential.oauth_verifier) + print(self.oauthswift.allowMissingOauthVerifier = true) + //save data to keychain + + + + self.oauthswift!.client.get("https://openapi.etsy.com/v2/oauth/access_token", parameters: ["oauth_verifier":(self.oauthswift.client.credential.oauth_verifier)], + success: { + data, response in + let dataString = NSString(data: data, encoding: NSUTF8StringEncoding) + + + print(response) + let json1 = JSON(response) + print(json1) + //print(response.allHeaderFields) + //print(dataSting) + let json = JSON(data) + print(json) + print(dataString!) + + //parse out token and token secret + do { + let regex = try NSRegularExpression(pattern: "[oauth_token=|oauth_token_secret=](\\w*)", options: []) + let nsString = dataString! as NSString + let all = NSRange(location: 0, length: nsString.length) + var matches : [String] = [String]() + + regex.enumerateMatchesInString(nsString as String, options: NSMatchingOptions(rawValue: 0), range: all) { + (result : NSTextCheckingResult?, _, _) in + if let r = result { + let result = nsString.substringWithRange(r.range) as String + matches.append(result) + } + } + print(matches) + + + let oauth: Dictionary? = [ "token" : String(matches[1].characters.dropFirst()) , "secret" : String(matches[3].characters.dropFirst()) ] + + do{ + try Locksmith.saveData(["etsy_oauth" : oauth!], forUserAccount: self.userEmail, inService: "vendoo_oauth_etsy") + print("account credentials saved") + NSUserDefaults.standardUserDefaults().setBool(true, forKey: "etsyAuthorized") + self.isAuthorized = true + boolResult = true + + self.oauthswift.client.credential.oauth_token = oauth!["token"]! as! String + self.oauthswift.client.credential.oauth_token_secret = oauth!["secret"]! as! String + + self.oauthswift!.client.get("https://openapi.etsy.com/v2/users/__SELF__", + success: { + data, response in + let dataString = NSString(data: data, encoding: NSUTF8StringEncoding) + let dict = self.convertStringToDictionary(dataString! as String) + print(dict) + var dict2 = (dict!["results"] as! [[String : AnyObject]]) + let json1 = JSON(dataString!) + print(json1) + print(dataString) + boolResult = true + print(dict2[0]["login_name"]!) + EtsyRESTAPIManager.settingsDictionary["userID"] = dict2[0]["login_name"]! + NSUserDefaults.standardUserDefaults().setObject(EtsyRESTAPIManager.settingsDictionary, forKey: "etsySettings") + + } + , failure: { error in + print(error) + boolResult = true + } + ) + } + catch{ + (error) + print(error) + //could not save data to keychain + print("account credentials could not be saved") + boolResult = false + + } + + /*let results = regex.matchesInString(dataString! as String, + options: [], range: NSMakeRange(0, nsString.length)) + print(results.map { nsString.substringWithRange($0.range)})*/ + } catch let error as NSError { + print("invalid regex: \(error.localizedDescription)") + + + + } + /* + + */ + + + }, + failure: { + error in + print(error) + }) + + + //return boolResult + + }) + }) + + //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) + } + ) + } - - + + //once everything is authorized save true value to the authorization boolean /* - NSUserDefaults.standardUserDefaults().setBool(true, forKey: "etsyAuthorized") - self.isAuthorized = NSUserDefaults.standardUserDefaults().boolForKey("etsyAuthorized") + NSUserDefaults.standardUserDefaults().setBool(true, forKey: "etsyAuthorized") + self.isAuthorized = NSUserDefaults.standardUserDefaults().boolForKey("etsyAuthorized") */ } @@ -264,84 +288,84 @@ extension EtsyRESTAPIManager { - - - 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 - - - self.oauthswift!.authorizeWithCallbackURL( NSURL(string: "vendoo://oauth-callback/etsy")!, success: { - credential, response, parameters in - print(credential.oauth_token) - print(credential.oauth_token_secret) - print(response) - - //erase all authorization variables - do { - try Locksmith.deleteDataForUserAccount(self.userEmail, inService: "vendoo_oauth_etsy") - self.oauthswift.client.credential.oauth_token = "" - self.oauthswift.client.credential.oauth_token_secret = "" - NSUserDefaults.standardUserDefaults().setBool(false, forKey: "etsyAuthorized") - self.isAuthorized = false - - print("oauth credentials deleted and app deauthorized from etsy") - }catch{ - (error) - print(error) - ("failed to delete credentails and deauthorize app") - } - - - }, failure: { error in - print(error) - - dispatch_async(dispatch_get_main_queue(), {() -> Void in - - //erase all authorization variables - do { - try Locksmith.deleteDataForUserAccount(self.userEmail, inService: "vendoo_oauth_etsy") - self.oauthswift.client.credential.oauth_token = "" - self.oauthswift.client.credential.oauth_token_secret = "" - NSUserDefaults.standardUserDefaults().setBool(false, forKey: "etsyAuthorized") - self.isAuthorized = false + + + 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) - print("oauth credentials deleted and app deauthorized from etsy") - }catch{ - (error) - print(error) - ("failed to delete credentails and deauthorize app") - } - - }) + + + + //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 + + + self.oauthswift!.authorizeWithCallbackURL( NSURL(string: "vendoo://oauth-callback/etsy")!, success: { + credential, response, parameters in + print(credential.oauth_token) + print(credential.oauth_token_secret) + print(response) + + //erase all authorization variables + do { + try Locksmith.deleteDataForUserAccount(self.userEmail, inService: "vendoo_oauth_etsy") + self.oauthswift.client.credential.oauth_token = "" + self.oauthswift.client.credential.oauth_token_secret = "" + NSUserDefaults.standardUserDefaults().setBool(false, forKey: "etsyAuthorized") + self.isAuthorized = false + + print("oauth credentials deleted and app deauthorized from etsy") + }catch{ + (error) + print(error) + ("failed to delete credentails and deauthorize app") + } + + + }, failure: { error in + print(error) + + dispatch_async(dispatch_get_main_queue(), {() -> Void in - }) + //erase all authorization variables + do { + try Locksmith.deleteDataForUserAccount(self.userEmail, inService: "vendoo_oauth_etsy") + self.oauthswift.client.credential.oauth_token = "" + self.oauthswift.client.credential.oauth_token_secret = "" + NSUserDefaults.standardUserDefaults().setBool(false, forKey: "etsyAuthorized") + self.isAuthorized = false + + print("oauth credentials deleted and app deauthorized from etsy") + }catch{ + (error) + print(error) + ("failed to delete credentails and deauthorize app") + } + + }) + }) + }) } } - - + + //MARK: - Request Methods @@ -420,7 +444,7 @@ extension EtsyRESTAPIManager { func convertStringToDictionary(text: String) -> [String:AnyObject]? { if let data = text.dataUsingEncoding(NSUTF8StringEncoding) { do { - return try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments) as? [String:AnyObject] + return try NSJSONSerialization.JSONObjectWithData(data, options: []) as? [String:AnyObject] } catch let error as NSError { print(error) } @@ -428,3 +452,4 @@ extension EtsyRESTAPIManager { return nil } } + diff --git a/Vendoo/EtsySettingsViewController.swift b/Vendoo/EtsySettingsViewController.swift index 73d5684..54fb447 100644 --- a/Vendoo/EtsySettingsViewController.swift +++ b/Vendoo/EtsySettingsViewController.swift @@ -9,29 +9,48 @@ import UIKit class EtsySettingsViewController: UIViewController { - + var wereDefaultsChanged: Bool = NSUserDefaults.standardUserDefaults().boolForKey("etsyDefaultsOverriden") + + @IBOutlet weak var userID: UILabel! + + @IBOutlet weak var whoMadeBtn: UIButton! + + @IBOutlet weak var isSupplierBtn: UIButton! + + @IBOutlet weak var productAgeBtn: UIButton! + + var etsyManager: EtsyRESTAPIManager! + override func viewDidLoad() { super.viewDidLoad() - + // Do any additional setup after loading the view. + if(wereDefaultsChanged) { + //change button labels to reflect user selected defaults + } + //dispatch_async(dispatch_get_main_queue(), { + print(EtsyRESTAPIManager.settingsDictionary["userID"] as? String) + self.userID.text = (EtsyRESTAPIManager.settingsDictionary["userID"] as! String) + + //}) } - + override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } - + /* - // MARK: - Navigation - - // In a storyboard-based application, you will often want to do a little preparation before navigation - override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { - // Get the new view controller using segue.destinationViewController. - // Pass the selected object to the new view controller. - } - */ - + // MARK: Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { + // Get the new view controller using segue.destinationViewController. + // Pass the selected object to the new view controller. + } + */ + } //MARK:- IBActions @@ -43,4 +62,12 @@ extension EtsySettingsViewController { } +} + +//MARK:- Class Methods +extension EtsySettingsViewController { + + func loadManager (etsyManager: EtsyRESTAPIManager) { + self.etsyManager = etsyManager + } } \ No newline at end of file diff --git a/Vendoo/NetworksTableViewController.swift b/Vendoo/NetworksTableViewController.swift index fdcac31..a90dddf 100644 --- a/Vendoo/NetworksTableViewController.swift +++ b/Vendoo/NetworksTableViewController.swift @@ -111,6 +111,9 @@ extension NetworksTableViewController { (segue.destinationViewController as! ListingPreviewViewController).setManagers(self.graphManager, fireManager: self.firManager, ebayManager: self.ebayManager) } + if(segue.identifier == "EtsySettingsSegue") { + (segue.destinationViewController as! EtsySettingsViewController).loadManager(self.etsyManager) + } } }