Ad

Using Alamofire To Get Short URL From Google With Swift

- 1 answer

I'm trying to add short url in my app as a tool for the users and this is what a came with from this answer and unfortunately it didn't work! :

import AFNetworking

let googleShortURLKey = "MYKEY"

func getShortURLFromGoogle(longURL: String) {
    let manager = AFHTTPSessionManager()
    manager.requestSerializer = AFJSONRequestSerializer() as AFJSONRequestSerializer
    let params = [ "longUrl": longURL ]

    manager.POST("https://www.googleapis.com/urlshortener/v1/url?key=\(googleShortURLKey)", parameters: params, success: {
        (operation: AFHTTPRequestSerializer!,responseObject: AnyObject!) in
        if let responseObject = responseObject as? NSDictionary {
            self.shortURL = responseObject["id"] as? String //That's what you want
        }
    },
                 failure: { (operation: AFHTTPRequestSerializer!,error: NSError!) in
                    print("Error while requesting shortened: " + error.localizedDescription)
    })
}
Ad

Answer

I have solve your question using Alamofire framework :

import UIKit
import Alamofire


class ShortURLToolViewController: UIViewController {


    let googleShortURLApiWithKey = "https://www.googleapis.com/urlshortener/v1/url?key=YOURKEY"
    var finalShortURL: String? // To save the short url

    override func viewDidLoad() {
        super.viewDidLoad()
        getShortURLFromGoogle(longURL: "https://github.com/")
    }

    func getShortURLFromGoogle (longURL: String){
        let params = ["longUrl": longURL]

        Alamofire.request(googleShortURLApiWithKey, method: .post, parameters: params, encoding: JSONEncoding.default).responseJSON { responds in

            if let JSON = responds.result.value {
                print(JSON)
                let json = try? JSONSerialization.jsonObject(with: responds.data!, options: [])
                if let dictionary = json as? [String: Any] {
                    if let shortURL = dictionary["id"] as? String {
                        // access individual value in dictionary
                        self.finalShortURL = shortURL
                        print(self.finalShortURL ?? "NO DATA!")
                    }
                }
            }
        }
    }

}//Class Ends
Ad
source: stackoverflow.com
Ad