onsa
12/16/2016 - 11:25 PM

Google API for shortening URLs

Google API for shortening URLs

var shortUrl = function(sourceUrl, key) {
  $.ajax ({
    url: 'https://www.googleapis.com/urlshortener/v1/url?key=' + key,
    type: 'POST',
    dataType: 'json',
    contentType: 'application/json',
    data: JSON.stringify({longUrl: sourceUrl}),
    success: function(response){
      console.log(response.id);
    },
    error: function(error){
      console.log(error);
    }
  });
};
var shortUrl;
var googleShortPageUrl = function(sourceUrl, googleAPIKey) {
	var callGoogle = function(sourceUrl, googleAPIKey) {
		return new Promise(function(resolve, reject) {
			var request = new XMLHttpRequest();
			request.onreadystatechange = function() {
				if (this.readyState == 4 && this.status == 200) {
					resolve(JSON.parse(this.responseText).id);
				} else if (this.readyState == 4 && this.status == 400) {
					console.log('Google API Key rejected.');
					reject();
				}
			};
			var requestUrl = 'https://www.googleapis.com/urlshortener/v1/url?key=' + googleAPIKey;
			var requestBody = JSON.stringify({ longUrl: sourceUrl });
			request.open('POST', requestUrl, true);
			request.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
			request.setRequestHeader('Content-Type', 'application/json');
			request.setRequestHeader('Accept', 'application/json');
			request.setRequestHeader('Content-length', requestBody.length);
			request.setRequestHeader('Connection', 'close');
			request.onerror = function() {
        reject(Error('Network Error'));
      };
			request.send(requestBody);
		});
	};

	callGoogle(sourceUrl, googleAPIKey).then(
		function(response) {
			shortUrl = response;
		},
		function() {
			shortUrl = sourceUrl;
		}
	);
};
Host:             https://www.googleapis.com/urlshortener/v1/url?key=
HTTP Method:      POST
Post Data:        longUrl -> 'full url to shorten'
Headers Required: Content-Type: application/json
The payload must be JSON stringified for google to proccess the url.
(https://developers.google.com/url-shortener/v1/url/insert)