Skip to content

Commit

Permalink
Adding Qwerly and Quova to project.
Browse files Browse the repository at this point in the history
  • Loading branch information
mansilladev committed Oct 11, 2011
0 parents commit b2df507
Show file tree
Hide file tree
Showing 62 changed files with 5,672 additions and 0 deletions.
73 changes: 73 additions & 0 deletions mashery.quova/3.4.0/Readme.md
@@ -0,0 +1,73 @@
Quova API Demo App
-----------------------------------
Created lovingly for the developer community by Mashery.

[http://www.mashery.com](http://www.mashery.com)

[http://developer.mashery.com](http://developer.mashery.com)

SYNOPSIS
-----------------------------------

This demo App provides a way to see the Quova API in action. It's built using appMobi's Cross Platform Development Kit (XDK) that lets you create mobile apps for smartphones and tablets using standard web languages (HTML5, CSS, and JavaScript).

FEATURES
-----------------------------------

Uses Quova's API to retrieve the following information based on your IP address -
1. City
2. State
3. Country
4. Google Map plotting your current location


GETTING STARTED
-----------------------------------

You will need the following to get started -

1. appMobi's XDK. Free Download - http://www.appmobi.com/?q=node/27
2. A Quova API key (Register at http://developer.quova.com/member/register).

OBTAINING THE API KEY
-----------------------------------

Before you can begin using this app, you will need to get an API key from Quova at http://developer.quova.com/member/register. This will also give you a Single Sign-On Mashery ID with access to hundreds of other APIs.


SETTING UP THE API KEY IN THIS APP
-----------------------------------

Once you have obtained your API key and secret, assign the API key to the variable api_key on line 1 of the file quova.js, like so -

<pre>
var apikey ='your_api_key_here';
</pre>

You will need to do the same for the API secret.

ABOUT Quova API
-----------------------------------

Quova provides the MOST IP geolocation data available on the planet. And it’s the most accurate. Tap into the datasource and develop your own customized geolocation apps. Learn more about the Quova API at http://developer.quova.com


QUOVA API DOCUMENTATION
-----------------------------------

To learn more about the data set provided by Quova's API, you can read through the API documentation at http://developer.quova.com/iodocs


ABOUT MASHERY API Network
-----------------------------------
This app is built using the Quova API, part of the Mashery API Network. The Mashery API Network gives you access to hundreds of APIs with single sign-on (SSO) access. When you sign in at http://developer.mashery.com, access and manage all of your applications and API keys in one central location.


EXPLORE MORE APIs
-----------------------------------
Check out Mashery's API Network at http://developer.mashery.com/apis to explore other awesome APIs including NY Times, Klout, USA Today, Rotten Tomatoes and many more.


SUPPORT
=======
If you have any questions or need any help obtaining an API key, you can reach out to us at: developer-relations@mashery.com
186 changes: 186 additions & 0 deletions mashery.quova/3.4.0/_appMobi/xhr.js
@@ -0,0 +1,186 @@
/* xhr.js
* This overrides the XMLHTTPRequest object to allow cross domain ajax requests
*/
(function () {
document.addEventListener("appMobi.device.remote.data", getRemoteExtCB, false);
var ajaxCallbacks = [];

function getRemoteExtCB(obj) {
if (ajaxCallbacks.length > 0 && ajaxCallbacks[obj.id]) {
ajaxCallbacks[obj.id](obj);
}
}

XMLHttpRequest_Native = XMLHttpRequest;
XMLHttpRequest.Extension = new Object;

XMLHttpRequest.Extension.addObject = function (object) {
uniqueId = Math.floor(Math.random() * 99999999);
object.uniqueId = uniqueId;
this[uniqueId] = object;
return uniqueId;
}

XMLHttpRequest.Extension.sendXMLHTTP = function (data) {
var myparams = new AppMobi.Device.RemoteDataParameters();
for (var j in data.headers) {
myparams.addHeader(j, data.headers[j]);
}

myparams.url = data.requestData.URL;
myparams.id = data.uniqueId;
myparams.method = data.requestData.method
myparams.body = data.body;
try{
if(typeof myparams.body=="object"){
myparams.body=JSON.stringify(myparams.body);
}
ajaxCallbacks[myparams.id] = this.handleResponseData;
AppMobi.device.getRemoteDataExt(myparams);
}
catch(e){}
}

XMLHttpRequest.Extension.handleResponseData = function (object) {

var XMLObj = XMLHttpRequest.Extension[object.id];
//EMULATED "HEADERS RECEIVED" CHANGES
var newHeaders = [];
for (var j in object.extras.headers) {
newHeaders[j.toLowerCase()] = object.extras.headers[j]; //jQuery looks for lowercase
newHeaders[j] = object.extras.headers[j];
}
XMLObj.responseData.headers = newHeaders;
XMLObj.readyState = XMLObj.HEADERS_RECEIVED;
if (typeof XMLObj.onreadystatechange == 'function') XMLObj.onreadystatechange();

XMLObj.readyState = XMLObj.LOADING;
if (typeof XMLObj.onreadystatechange == 'function') XMLObj.onreadystatechange();

XMLObj.response = object.response;
XMLObj.status = object.extras.status;
XMLObj.responseText = object.response;
XMLObj.responseXML = object.response;
XMLObj.readyState = XMLObj.DONE;

if (typeof XMLObj.onreadystatechange == 'function') XMLObj.onreadystatechange();
}


// XMLHTTP REDEFINE
//=======================================================================================================================
//DEFINE "CONSTANTS" FOR CONSTRUCTOR
XMLHttpRequest.UNSENT = 0; //const
XMLHttpRequest.OPENED = 1; //const
XMLHttpRequest.HEADERS_RECEIVED = 2; //const
XMLHttpRequest.LOADING = 3; //const
XMLHttpRequest.DONE = 4; //const

//DEFINE "CONSTANTS" PROTOTYPE
XMLHttpRequest.prototype.UNSENT = 0; //const
XMLHttpRequest.prototype.OPENED = 1; //const
XMLHttpRequest.prototype.HEADERS_RECEIVED = 2; //const
XMLHttpRequest.prototype.LOADING = 3; //const
XMLHttpRequest.prototype.DONE = 4; //const
//XMLHttpRequest = {readyState:0 };
XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.readyState = 0;
XMLHttpRequest.prototype.onreadystatechange;
XMLHttpRequest.prototype.headers = {};
XMLHttpRequest.prototype.body = "";



XMLHttpRequest.prototype.requestData = {
'method': null,
'URL': null,
'asynchronous': true,
'username': null,
'password': null,
'headers': null
};
XMLHttpRequest.prototype.responseData = {
'headers': null
};


XMLHttpRequest.prototype.abort = function abort() {};
XMLHttpRequest.prototype.addEventListener = function addEventListener() {};
XMLHttpRequest.prototype.constructor = function XMLHttpRequest() {};
XMLHttpRequest.prototype.dispatchEvent = function dispatchEvent() {};

XMLHttpRequest.prototype.getAllResponseHeaders = function getAllResponseHeaders() {
if (this.readyState == this.OPENED || this.readyState == this.UNSENT) return "";
else {
return this.responseData.headers;
}
};

XMLHttpRequest.prototype.getResponseHeader = function getResponseHeader(header) {
return this.responseData.headers && this.responseData.headers[header] ? this.responseData.headers[header] : "";
};

XMLHttpRequest.prototype.open = function (method, url, async, user, password) {
//supported methods: CONNECT, DELETE, GET, HEAD, OPTIONS, POST, PUT, TRACE, or TRACK
/* Empty the list of author request headers.
Set the request method to method.
Set the request URL to url.
Set the request username to temp user.
Set the request password to temp password.
Set the asynchronous flag to the value of async.
*/
this.requestData.method = method;
this.requestData.URL = url;
this.requestData.asynchronous = async;
this.requestData.user = user;
this.requestData.password = password;
this.readyState = this.OPENED;
if (typeof this.onreadystatechange == 'function') this.onreadystatechange();

}

XMLHttpRequest.prototype.overrideMimeType = function overrideMimeType() {};
XMLHttpRequest.prototype.removeEventListener = function removeEventListener() {};

XMLHttpRequest.prototype.send = function send(data) {
this.body = data;
if(this.requestData.asynchronous===false)
{
throw ("Synchronous XMLHtppRequest calls are not allowed. Please change your request to be asynchronous");
return;
}
XMLHttpRequest.Extension.sendXMLHTTP(this);
};

XMLHttpRequest.prototype.setRequestHeader = function setRequestHeader(header, value) {
this.headers[header] = value;
};


function XMLHttpRequest() {
XMLHttpRequest.Extension.addObject(this);
this.onabort = null;
this.onerror = null;
this.onload = null;
this.onloadstart = null;
this.onprogress = null;
this.onreadystatechange = null;
this.readyState = 0;
this.response = "";
this.responseText = "";
this.responseType = "";
this.responseXML = null;
this.status = 0;
this.statusText = "";
this.withCredentials = false;
this.requestData = {
'method': null,
'URL': null,
'asynchronous': null,
'username': null,
'password': null,
'headers': null
};
}
window.XMLHttpRequest = XMLHttpRequest;
})();

0 comments on commit b2df507

Please sign in to comment.