Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // APIController.swift
- // TheSugarBook
- //
- // Created by Leon Paul on 1/23/17.
- // Copyright © 2017 ME Creative Studio. All rights reserved.
- //
- import UIKit
- import Alamofire
- class APIController {
- /*
- ‘sex’ = ‘man/woman’
- ‘wantToBe’ = ‘sugardaddy/sugarbaby’
- ‘userName’ = ‘JohnDoe’
- ‘genderPreference’ = ‘men/women’
- ‘email’ = ‘email@email.com’
- ‘password’ = ‘password123456’
- handleResponse: True = succeded on registration, check your mail. False = fail, check String for error message
- */
- static func registration (_ sex : String, _ wantToBe : String, _ userName : String, _ genderPreference : String, _ email : String, _ password : String,_ handleResponse : @escaping (Bool, String)->Void) {
- //API URL
- let apiCall : String = "http://thesugarbook.com/api/v1/join"
- //Parameters for the API join call
- let registrationVariables : [String : Any] = ["sex" : sex,
- "wanttobe" : wantToBe,
- "username" : userName,
- "gender_preference" : genderPreference,
- "email" : email,
- "password" : password]
- //API POST
- Alamofire.request (apiCall, method : .post, parameters: registrationVariables, encoding: JSONEncoding.default)
- .responseJSON { response in
- var message : String
- var success : Bool = false
- //error when calling the API
- guard response.result.error == nil else {
- // got an error in getting the data, need to handle it
- message = "Something went wrong, pleas try again"
- print(response.result.error!)
- handleResponse(success, message)
- return
- }
- // make sure we got some JSON since that's what we expect
- guard let json = response.result.value as? [String: Any] else {
- message = "Something went wrong, pleas try again"
- print("Error: \(response.result.error)")
- handleResponse(success, message)
- return
- }
- // get the answer
- guard let answer = json["success"] as? String else {
- message = "Something went wrong, pleas try again"
- handleResponse(success, message)
- return
- }
- //check the answer
- if answer == "false" {
- let msg = json["message"] as? String
- // let code = json["code"] as? String
- print("error message from API:")
- message = msg!
- handleResponse(success, message)
- return
- }
- else if answer == "true"{
- message = "check your email for confirmation"
- success = true
- handleResponse(success, message)
- return
- }
- }
- }
- static func login (_ email : String, _ password : String, _ handleResponse : @escaping (_ success : Bool,_ message : String,_ answer : [String : Any]?)->Void) {
- let apiCall : String = "https://thesugarbook.com/api/v1/login"
- let loginVariables : [String : Any] = ["email" : email, "password" : password]
- //API POST
- Alamofire.request (apiCall, method : .post, parameters: loginVariables, encoding: JSONEncoding.default)
- .responseJSON { response in
- var message : String
- var success : Bool = false
- //error when calling the API
- guard response.result.error == nil else {
- // got an error in getting the data, need to handle it
- message = "Something went wrong, pleas try again"
- print(response.result.error!)
- handleResponse(success, message, nil)
- return
- }
- // make sure we got some JSON since that's what we expect
- guard let json = response.result.value as? [String: Any] else {
- message = "Something went wrong, pleas try again"
- print("Error: \(response.result.error)")
- handleResponse(success, message, nil)
- return
- }
- // get the answer
- guard let answer = json["success"] as? String else {
- message = "Something went wrong, pleas try again"
- handleResponse(success, message, nil)
- return
- }
- //check the answer
- if answer != "success" {
- let msg = json["message"] as? String
- // let code = json["code"] as? String
- print("error message from API:")
- message = msg!
- handleResponse(success, message, json)
- return
- }
- else if answer == "success"{
- message = "success"
- success = true
- handleResponse(success, message, json)
- return
- }
- }
- }
- //UNTESTED
- static func forgetPassword (_ email : String, _ handleResponse : @escaping (_ success : Bool,_ message : String)->Void) {
- let apiCall : String = "https://thesugarbook.com/api/v1/password-reset-generate"
- let loginVariables : [String : Any] = ["email" : email]
- //API POST
- Alamofire.request (apiCall, method : .post, parameters: loginVariables, encoding: JSONEncoding.default)
- .responseJSON { response in
- var message : String
- var success : Bool = false
- //error when calling the API
- guard response.result.error == nil else {
- // got an error in getting the data, need to handle it
- message = "Something went wrong, pleas try again"
- print(response.result.error!)
- handleResponse(success, message)
- return
- }
- // make sure we got some JSON since that's what we expect
- guard let json = response.result.value as? [String: Any] else {
- message = "Something went wrong, pleas try again"
- print("Error: \(response.result.error)")
- handleResponse(success, message)
- return
- }
- // get the answer
- guard let answer = json["success"] as? String else {
- message = "Something went wrong, pleas try again"
- handleResponse(success, message)
- return
- }
- //check the answer
- if answer != "true" {
- let msg = json["message"] as? String
- // let code = json["code"] as? String
- print("error message from API:")
- message = msg!
- handleResponse(success, message)
- return
- }
- else if answer == "true"{
- guard let msg = json["message"] as? String else {
- message = "Something went wrong, pleas try again"
- handleResponse(success, message)
- return
- }
- message = msg
- success = true
- handleResponse(success, message)
- return
- }
- }
- }
- /*
- "success": "true",
- "code": "200",
- "message": "Successfully Logged Out!"
- */
- static func logout (_ token : String, _ handleResponse : @escaping (_ success : Bool,_ message : String)->Void) {
- let apiCall : String = "https://thesugarbook.com/api/v1/logout"
- let header = ["_token" : token]
- // let logoutVariables : [String : Any] = ["_token" : token]
- //API POST
- Alamofire.request (apiCall, headers : header) //, method : .get, parameters: logoutVariables, encoding: JSONEncoding.default)
- .responseJSON { response in
- var message : String
- var success : Bool = false
- // check for errors
- guard response.result.error == nil else {
- // got an error in getting the data, need to handle it
- message = "Something went wrong, pleas try again"
- handleResponse(success, message)
- return
- }
- // make sure we got some JSON since that's what we expect
- guard let json = response.result.value as? [String: Any] else {
- message = "Something went wrong, pleas try again"
- handleResponse(success, message)
- return
- }
- // get the answer
- guard let answer = json["success"] as? String else {
- message = "Something went wrong, pleas try again"
- handleResponse(success, message)
- return
- }
- //check the answer
- if answer != "true" {
- let msg = json["message"] as? String
- // let code = json["code"] as? String
- print("error message from API:")
- message = msg!
- handleResponse(success, message)
- return
- }
- else if answer == "true"{
- message = json["message"] as! String
- success = true
- handleResponse(success, message)
- return
- }
- }
- }
- static func search (_ token : String, _ handleResponse : @escaping (_ success : Bool,_ message : String, _ answer : [String : Any]?)->Void) {
- let apiCall : String = "https://thesugarbook.com/api/v1/search"
- let header = ["token" : token]
- // let logoutVariables : [String : Any] = ["_token" : token]
- //API POST
- Alamofire.request (apiCall, headers : header) //, method : .get, parameters: logoutVariables, encoding: JSONEncoding.default)
- .responseJSON { response in
- var message : String
- var success : Bool = false
- // check for errors
- guard response.result.error == nil else {
- // got an error in getting the data, need to handle it
- message = "Something went wrong, pleas try again"
- handleResponse(success, message, nil)
- return
- }
- // make sure we got some JSON since that's what we expect
- guard let json = response.result.value as? [String: Any] else {
- message = "Something went wrong, pleas try again"
- handleResponse(success, message, nil)
- return
- }
- // get the answer
- guard let answer = json["success"] as? String else {
- message = "Something went wrong, pleas try again"
- handleResponse(success, message, nil)
- return
- }
- //check the answer
- if answer != "success" {
- let msg = json["message"] as? String
- // let code = json["code"] as? String
- print("error message from API:")
- message = msg!
- handleResponse(success, message, nil)
- return
- }
- else if answer == "success"{
- message = "succesfull search"
- success = true
- handleResponse(success, message, json)
- return
- }
- }
- }
- static func searchWithFilter (_ token : String, _ handleResponse : @escaping (_ success : Bool,_ message : String, _ answer : [String : Any]?)->Void) {
- let apiCall : String = "https://thesugarbook.com/api/v1/searchquery"
- let header = ["token" : token]
- // let logoutVariables : [String : Any] = ["_token" : token]
- //API POST
- Alamofire.request (apiCall, headers : header) //, method : .get, parameters: logoutVariables, encoding: JSONEncoding.default)
- .responseJSON { response in
- var message : String
- var success : Bool = false
- // check for errors
- guard response.result.error == nil else {
- // got an error in getting the data, need to handle it
- message = "Something went wrong, pleas try again"
- handleResponse(success, message, nil)
- return
- }
- // make sure we got some JSON since that's what we expect
- guard let json = response.result.value as? [String: Any] else {
- message = "Something went wrong, pleas try again"
- handleResponse(success, message, nil)
- return
- }
- // get the answer
- guard let answer = json["success"] as? String else {
- message = "Something went wrong, pleas try again"
- handleResponse(success, message, nil)
- return
- }
- //check the answer
- if answer != "success" {
- let msg = json["message"] as? String
- // let code = json["code"] as? String
- print("error message from API:")
- message = msg!
- handleResponse(success, message, nil)
- return
- }
- else if answer == "success"{
- message = "succesfull search"
- success = true
- handleResponse(success, message, json)
- return
- }
- }
- }
- static func appendParams (urlO : String) -> String {
- var url = urlO
- let defaults = UserDefaults.standard
- //name: location, value: ‘anything’
- url += "?location="
- if (defaults.bool(forKey: "gps filter")){
- //append the gps coordinates
- }
- else {
- if(defaults.bool(forKey: "primary switch filter")){
- url += defaults.string(forKey: "primary label filter")!
- }
- else if (defaults.bool(forKey: "secondary switch filter")){
- url += defaults.string(forKey: "secondary label filter")!
- }
- else if (defaults.bool(forKey: "tertiary switch filter")){
- url += defaults.string(forKey: "tertiary label filter")!
- }
- }
- //name: options[], values(predefined) = ‘photos’, ‘backgroundcheck’, ‘premium’, ‘diamond’, ‘unviewed’, !!!‘viewed’, ‘favorited’, !!!!‘favoritedme’
- var i = 0
- if (defaults.bool(forKey: "photos filter") ){
- url += "&options[\(i)]=photos"
- i += 1
- }
- if (defaults.bool(forKey: "background filter") ){
- url += "&options[\(i)]=backgroundcheck"
- i += 1
- }
- if (defaults.bool(forKey: "premium filter") ){
- url += "&options[\(i)]=premium"
- i += 1
- }
- if (defaults.bool(forKey: "diamond filter") ){
- url += "&options[\(i)]=diamond"
- i += 1
- }
- if (defaults.bool(forKey: "unviewed filter") ){
- url += "&options[\(i)]=unviewed"
- i += 1
- }
- else{
- url += "&options[\(i)]=viewed"
- i += 1
- }
- if (defaults.bool(forKey: "favorite filter") ){
- url += "&options[\(i)]=favorited"
- i += 1
- }
- //name: bodytype[], values(predefined) = ‘slim’, ‘athletic’, ‘average’, ‘a-few-extra-pounds’ ,’full-or-overweight’, ‘other’
- //["Any","Slim","Athletic","Average","A few Extra Pounds","Full / Overweight", "Other"]
- url += "&bodytype[0]="
- let body = defaults.string(forKey: "body filter")
- if (body == "Slim"){
- url += "slim"
- }
- else if (body == "Athletic"){
- url += "athletic"
- }
- else if (body == "Average"){
- url += "average"
- }
- else if (body == "A few Extra Pounds"){
- url += "a-few-extra-pounds"
- }
- else if (body == "Full / Overweight"){
- url += "full-or-overweight"
- }
- else {url += "other"}
- //name: ‘min-age’, value: numeric (ex.12, 80)
- var minA = defaults.float(forKey: "minAge filter")
- if minA == 0 {
- minA = 18
- }
- url += "&min-age=\(minA)"
- //name: ‘max-age’, value: numeric (ex. 12, 80)
- var maxA = defaults.float(forKey: "maxAge filter")
- if maxA == 0 {
- maxA = 80
- }
- url += "&max-age=\(maxA)"
- //name: ‘ethnicity[]’, values(predefined): ‘asian’, ‘black’, ‘latin’, ‘east-indian’, ‘middle-eastern’, ‘mixed’, ‘native-american’, ‘pacific-islander’, ‘caucasian’, ‘other’
- //["Any","Asian","Black / African Descent","Latin / Hispanic","East Indian", "Middle Eastern","Mixed", "Native American", "Pacific Islander", "White / Caucasian","Other"]
- url += "ðnicity[0]="
- let eth = defaults.string(forKey: "ethnicity filter")
- if (eth == "Asian"){
- url += "asian"
- }
- else if (eth == "Black / African Descent"){
- url += "black"
- }
- else if (eth == "Latin / Hispanic"){
- url += "latin"
- }
- else if (eth == "East Indian"){
- url += "east-indian"
- }
- else if (eth == "Middle Eastern"){
- url += "middle-eastern"
- }
- else if (eth == "Mixed"){
- url += "mixed"
- }
- else if (eth == "Native American"){
- url += "native-american"
- }
- else if (eth == "Pacific Islander"){
- url += "pacific-islander"
- }
- else if (eth == "White / Caucasian"){
- url += "caucasian"
- }
- else {url += "other"}
- //name: ‘min-height’, value: numeric (ex.120, 230)
- var minH = defaults.float(forKey: "minHeight filter")
- if minH == 0 {
- minH = 120
- }
- url += "&min-height=\(minH)"
- //name: ‘max-height’, value: numeric (ex. 120, 230)
- var maxH = defaults.float(forKey: "maxHeight filter")
- if maxH == 0 {
- maxH = 230
- }
- url += "&max-height=\(maxH)"
- //name: ‘eyecolor[]’, values(predefined): ‘black’, ‘blue’, ‘brown’, ‘grey’, ‘green’, ‘hazel’, ‘other’
- //["Any","Black","Blue","Brown","Grey","Green","Hazel","Other"]
- url += "&eyecolor[0]="
- let eye = defaults.string(forKey: "eye filter")
- if (eye == "Black"){
- url += "black"
- }
- else if (eye == "Blue"){
- url += "blue"
- }
- else if (eye == "Brown"){
- url += "brown"
- }
- else if (eye == "Grey"){
- url += "grey"
- }
- else if (eye == "Green"){
- url += "green"
- }
- else if (eye == "Hazel"){
- url += "hazel"
- }
- else {url += "other"}
- //name: ‘haircolor[]’, values(predefined): ‘auburn’, ‘black’, ‘blonde’, ‘light-brown’, ‘dark-brown’, ‘grey’, ‘red’, ‘white’, other
- //["Any","Auburn","Black","Blonde","Light Brown","Dark Brown","Grey","Red","White","Other"]
- url += "&haircolor[0]="
- let hair = defaults.string(forKey: "hair filter")
- if (hair == "Auburn"){
- url += "auburn"
- }
- else if (hair == "Black"){
- url += "black"
- }
- else if (hair == "Blonde"){
- url += "blonde"
- }
- else if (hair == "Light Brown"){
- url += "light-brown"
- }
- else if (hair == "Dark Brown"){
- url += "dark-brown"
- }
- else if (hair == "Grey"){
- url += "grey"
- }
- else if (hair == "Red"){
- url += "red"
- }
- else if (hair == "White"){
- url += "white"
- }
- else {url += "other"}
- //name: ‘smoking[]’, values(predefined): ‘non-smoker’, ‘light-smoker’, ‘heavy-smoker’
- //["Any","Non Smoker","Light Smoker","Heavy Smoker"]
- url += "&smoking[0]="
- let smoke = defaults.string(forKey: "smoking filter")
- if(smoke == "Non Smoker"){
- url += "non-smoker"
- }
- else if(smoke == "Light Smoker"){
- url += "light-smoker"
- }
- else if(smoke == "Heavy Smoker"){
- url += "heavy-smoker"
- }
- else {url += "non-smoker&smoking[1]=light-smoker&smoking[2]=heavy-smoker"}
- //name: drinking[], values(predefined): ‘non-drinker’, ‘social-drinker’, ‘heavy-drinker’
- //["Any","Non Drinker","Light Drinker","Heavy Drinker"]
- url += "&drinking[0]="
- let drink = defaults.string(forKey: "drinking filter")
- if(drink == "Non Drinker"){
- url += "non-drinker"
- }
- else if(drink == "Light Drinker"){
- url += "light-drinker"
- }
- else if(drink == "Heavy Drinker"){
- url += "heavy-drinker"
- }
- else {url += "non-drinker&drinking[1]=light-drinker&drinking[2]=heavy-drinker"}
- //name: ‘relationship[]’, values(predefined): ‘single’, ‘devorced’, ‘separated’, ‘married-but-looking’, ‘widowed’
- //["Any","Single","Divorced","Separated","Married But Looking","Widowed"]
- url += "&relationship[0]="
- let rel = defaults.string(forKey: "relationship filter")
- if (rel == "Single"){
- url += "single"
- }
- else if (rel == "Divorced"){
- url += "divorced"
- }
- else if (rel == "Separated"){
- url += "separated"
- }
- else if (rel == "Married But Looking"){
- url += "married-but-looking"
- }
- else if (rel == "Widowed"){
- url += "widowed"
- }
- else {"single&relationship[1]=divorced&relationship[2]=separated&relationship[3]=married-but-looking&relationship[4]=widowed"}
- //name: ‘education[]’, values(pred): ‘high-school’, ‘some-college’, ‘associates-degree’, ‘bacherlors-degree’, ‘graduate-degree’, ‘phd-or-post-doctoral’
- //["Any","High School","Some College","Associates Degree","Bachelors Degree","Graduate Degree", "PhD / Post Doctoral"]
- url += "&education[0]="
- let edu = defaults.string(forKey: "education filter")
- if (edu == "High School"){
- url += "high-school"
- }
- else if (edu == "Some College"){
- url += "some-college"
- }
- else if (edu == "Associates Degree"){
- url += "associates-degree"
- }
- else if (edu == "Bachelors Degree"){
- url += "bachelors-degree"
- }
- else if (edu == "Graduate Degree"){
- url += "graduate-degree"
- }
- else if (edu == "PhD / Post Doctoral"){
- url += "phd-or-post-doctoral"
- }
- else {url += "high-school&education[1]=some-college&education[2]=associates-degree&education[3]=&education[4]=bachelors-degree&education[5]=graduate-degree&education[6]=phd-or-post-doctoral"}
- //name: ‘children[]’, values: 1,2,3,4,5, 6+
- //["Any","0","1","2","3","4","5", "6+"]
- /*
- name: language[], values: english, bahasa-malaysia, espanol, france, deutsch, chinese-simplified, chinese-traditional, italiano, japanese, korean, nederlandse, portugues, russian
- name: income[]: values(pred): 50000, 75000, 100000, 125000, 150000, 175000, 200000, 250000, 300000, 400000, 500000, 1000000, 1000000+
- name: networth[]: values(pred): 250000, 500000, 750000, 1000000, 2000000, 5000000, 10000000, 50000000, 100000000, 100000000+
- name: lifestyle[], values(pred): negotiable, minimal, practical, moderate, substantial, high
- name: q, value: ‘anytext’
- */
- return url
- }
- /*
- let defaults = UserDefaults.standard
- //SWITCHES
- favoritedSW.isOn = defaults.bool(forKey: "favorite filter")
- unviewedSW.isOn = defaults.bool(forKey: "unviewed filter")
- backgroundSW.isOn = defaults.bool(forKey: "background filter")
- diamondSW.isOn = defaults.bool(forKey: "diamond filter")
- premiumSW.isOn = defaults.bool(forKey: "premium filter")
- photosSW.isOn = defaults.bool(forKey: "photos filter")
- //GPS
- gpsSW.isOn = defaults.bool(forKey: "gps filter")
- primaryLocLabel.text = defaults.string(forKey: "primary label filter") ?? "Primary Location"
- secondaryLocLab.text = defaults.string(forKey: "secondary label filter") ?? "Secondary Location"
- tertiaryLocLab.text = defaults.string(forKey: "tertiary label filter") ?? "Tertiary Location"
- if !gpsSW.isOn{
- primaryLoc.isSelected = defaults.bool(forKey: "primary switch filter")
- secondaryLoc.isSelected = defaults.bool(forKey: "secondary switch filter")
- tertiaryLoc.isSelected = defaults.bool(forKey: "tertiary switch filter")
- }
- // terCell.alignmentRect(forFrame: <#T##CGRect#>)
- //SLIDERS
- let dis = defaults.float(forKey: "distance filter")
- distanceSli.value = dis
- if dis == 0 {
- distanceSli.value = 40
- }
- distanceLab.text = String ( Int ( distanceSli.value ) )
- let minA = defaults.float(forKey: "minAge filter")
- minAgeSli.value = minA
- if minA == 0 {
- minAgeSli.value = 18
- }
- minAgeLab.text = String ( Int ( minAgeSli.value ) )
- let maxA = defaults.float(forKey: "maxAge filter")
- maxAgeSli.value = maxA
- if maxA == 0 {
- maxAgeSli.value = 40
- }
- maxAgeLab.text = String ( Int ( maxAgeSli.value ) )
- let minH = defaults.float(forKey: "minHeight filter")
- minHeightSli.value = minH
- if minH == 0 {
- minHeightSli.value = 150
- }
- minHeightLab.text = String ( Int( minHeightSli.value ))
- let maxH = defaults.float(forKey: "maxHeight filter")
- maxHeightSli.value = maxH
- if maxH == 0 {
- maxHeightSli.value = 150
- }
- maxHeightLab.text = String ( Int( maxHeightSli.value ))
- //LABELS
- bodyLabel.text = defaults.string(forKey: "body filter") ?? "Any"
- ethnicityLabel.text = ?defaults.string(forKey: "ethnicity filter")? "Any"
- hairColorLabel.text = defaults.string(forKey: "hair filter") ?? "Any"
- smokingLabel.text = defaults.string(forKey: "smoking filter") ?? "Any"
- drinkingLabel.text = defaults.string(forKey: "drinking filter") ?? "Any"
- relationshipLabel.text = defaults.string(forKey: "relationship filter") ?? "Any"
- childrenLabel.text = defaults.string(forKey: "children filter") ?? "Any"
- eduacationLabel.text = defaults.string(forKey: "education filter") ?? "Any"
- languageLabel.text = defaults.string(forKey: "language filter") ?? "Any"
- incomeLabel.text = defaults.string(forKey: "income filter") ?? "Any"
- lifestyleLabel.text = defaults.string(forKey: "lifestyle filter") ?? "Any"
- eyeLabel.text = defaults.string(forKey: "eye filter") ?? "Any"
- */
- // APIController Usage //
- /*
- //.... Call Login
- APIcontroller.login("arnau.bennassar@mecreativestudio.com", "sugarpassword", loginHand)
- //...Handle Login
- func loginHand(_ suc : Bool,_ msg : String,_ jason : [String : Any]?) -> Void{
- if suc {
- let content = jason!["message"] as? [String:AnyObject]
- let user = content!["user"] as? [String:AnyObject]
- //.... Call Search
- APIcontroller.search(user?["remember_token"] as! String, searchHand)
- //.... Call Logout
- APIcontroller.logout(user?["remember_token"] as! String, logoutHand)
- }
- else {
- print ("error")
- }
- }
- //... Handle Search
- func searchHand(_ suc : Bool, _ msg : String,_ jason : [String : Any]?) -> Void{
- if suc {
- print (jason)
- }
- }
- //... Handle Logout
- func logoutHand(_ suc : Bool,_ msg : String)-> Void{
- print (msg)
- }
- */
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement